好几年没编程了,好多都忘了。问题  设置串口后,在接受字符哪里出问题,不知道什么原因
Private Sub Command2_Click()
 
  
  MSComm1.CommPort = 1                 '设置通信端口号为COM1
  MSComm1.Settings = 19200 & "," & "n,8,1"
  MSComm1.InputMode = 0                 '接收文本型数据
  MSComm1.PortOpen = True               '打开通信端口1
End Sub

'接收字符
Private Sub Timer1_Timer()
  Dim buf$
  Dim shou()
  Dim shou1()
  Dim i
  Dim j
  
  buf = Trim(MSComm1.Input)           '将缓冲区内的数据读入buf变量中
  If Len(buf) <> 0 Then               '判断缓冲区内是否存在数据
    TextReceive.Text = TextReceive.Text + buf  'Chr(13) + Chr(10)
    
    TextReceive.SelLength = 1                     '光标设置到文本框的最后一行
    TextReceive.SelStart = Len(TextReceive.Text)  '光标设置到文本框的最后一行
  End If
 
End Sub
'停止程序运行
Private Sub Cmdquit_Click()
  Unload Me
End Sub

解决方案 »

  1.   


    Option ExplicitPrivate Sub Form_Load()
        MSComm1.CommPort = 1 '设置通信端口号为COM1
        MSComm1.Settings = "19200,n,8,1"
        
        
        MSComm1.InputMode = comInputModeText '接收文本型数据
        MSComm1.PortOpen = True '打开通信端口1End Sub
      

  2.   

    串接收不要用timer控件,要用mscomm的触发事件。
      

  3.   

    我的做法是mscomm事件来触发一个timer,这样就不会有数据丢失的问题,否则当数据量很大时,若单纯用一个mscomm事件来收难免会丢失数据量,特别在波特率可以任意调整时或下位机有多串数据相应且很慢时。
      

  4.   


    亲,这个我以前也是这么处理的,但是现在,我想独立的设置一个波特率,然后通过一个按钮赋值给串口的settings属性。所以出现了错误。接收数据的错误
      

  5.   

       out(nNum) = varP(0)
      

  6.   

    把:
    out(nNum) = varP(0)
    修改为:
    If Not IsNull(varP) Then out(nNum) = varP(0)