我在写一个设备与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
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
解决方案 »
- 求解决方法:VB中普通打印机,A4纸打印条形码
- 我想实现像PHOTOSHOP一样的浮动工具面板,各位高手应该怎么做啊?
- 急~~~~(请赐教)!
- 字符串和数字型变量互转的函数,急用,立即结贴!
- 存储过程返回参数
- 如何实时显示串口采集传输过来的曲线
- Picturebox 不规则图形半透明填充
- 用DATAGRID 查询的问题!!!
- 如何判断当前数据库(mdb)是否需要提供用户名和密码?别说用err
- 为何用VB6打开的工程没有编辑即退出还要询问是否要保存
- 求救:用VB连接oracle数据库存取图片的问题。请大家帮忙,搞了一天了没搞定
- 如何在MDIForm调用MDICHILD=True的DLL窗体!???在线等!
2。在var = MSComm1.Input后,加延时。