我在写一个设备与PC得串口连接程序,用得语言是VB,使用得是MsComm接受数据得方式是二进制。但当设备传输时,只能接受一个50,然后过一段时间,设备提示错误。PC接受到一个40。问一下各位高手,问题出在什么地方,是不是要用什么握手协议之类的东西。我的源程序如下:大家看看Private Sub Command1_Click()If MSComm1.PortOpen = False ThenMSComm1.CommPort = 1
MSComm1.Settings = “9600,E,8,2”MSComm1.InBufferSize = 1024
MSComm1.RThreshold = 1
MSComm1.Handshaking = comRTSMSComm1.PortOpen = TrueCommand1.Caption = "关闭端口"
Text1.Text = ""
ElseMSComm1.PortOpen = False
Command1.Caption = "打开端口"End IfMSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0End SubPrivate Sub Form_Load()Text1.Text = ""End SubPrivate Sub Form_Unload(Cancel As Integer)If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End IfEnd SubPrivate Sub MSComm1_OnComm()Select Case MSComm1.CommEventCase comEvCD
IniText.Text = IniText.Text & " CD 线状态变化" & Chr(13)
Case comEvCTS
IniText.Text = IniText.Text & " CTS 线状态变化,信号由设备送到PC,指示传输可以进行" & Chr(13)
Case comEvDSR
IniText.Text = IniText.Text & " DSR 线状态变化,信号由设备送到PC,指示计算机做好准备" & Chr(13)
Case comEvRing
IniText.Text = IniText.Text & Now() & " Ring Indicator 变化" & Chr(13)
Case comEvEOF
IniText.Text = IniText.Text & Now() & " 输入数据流中发现 EOF 字符" & Chr(13)Case comEvReceive
Dim var() As Bytevar = MSComm1.InputFor i = LBound(var) To UBound(var)Text1.Text = Text1.Text & Str(var(i)) & Chr(32)Next iCase ElseEnd SelectEnd Sub