vb comm控件问题 我采用ASCII方式接受发送,使用OnComm方式接收,我发送一串数据后,对方应答一串字符但是我发现它并不相应ONCOMM事件,只有重新打开串口才能相应,而且本来接受6个字符的只能接收到4个,请教高手 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我用 OnComm方法时候 也遇到同样的问题。就是读取 串口(字符串)时候,少掉了前面一大截。问题解决时候也告诉我一下,可以吗 ?顶!~ 你看看你的com控件的inbuffersize是否设置得足够大,inputlen设置是否合理。 Private Sub Form_Load() With MSComm1 .CommPort = "com1" .Settings = "9600,n,8,1" .InputLen = 0 .RThreshold = 1 .PortOpen = True End Withend subPrivate Sub MSComm1_OnComm()On Error GoTo err001Dim GetChar As StringSelect Case MSComm1.CommEvent Case comEventOverrun '数据丢失。 MsgBox "数据丢失!", vbExclamation, "错误" Case comEventBreak ' 收到 Break。 Case comEventCDTO ' CD (RLSD) 超时。 MsgBox " CD (RLSD) 超时。!", vbExclamation, "错误" Case comEventCTSTO ' CTS Timeout。 MsgBox "CTS Timeout", vbExclamation, "错误" Case comEventDSRTO ' DSR Timeout。 MsgBox "DSR Timeout。", vbExclamation, "错误" Case comEventFrame ' Framing Error MsgBox "Framing Error", vbExclamation, "错误" Case comEventOverrun '数据丢失。 MsgBox "数据丢失。!", vbExclamation, "错误" Case comEventRxOver '接收缓冲区溢出。 MsgBox "接收缓冲区溢出!", vbExclamation, "错误" Case comEventRxParity ' Parity 错误。 MsgBox "Parity 错误!", vbExclamation, "错误" Case comEventTxFull '传输缓冲区已满。 MsgBox "传输缓冲区已满!", vbExclamation, "错误" Case comEventDCB '获取 DCB] 时意外错误 MsgBox "获取 DCB] 时意外错误!", vbExclamation, "错误" Case comEvReceive ' 收到数据 If MSComm1.InBufferCount Then GetChar = MSComm1.Input End If MsgBox GetChar '执行某一函数(省略)End Select Exit Suberr001: MsgBox Err.Description, vbCritical, "错误"End Sub能帮我看看吗?搞不动问题出在哪!~我把inbuffersize设置成很大,也还是不行的呀!~ 你的设置是读取缓冲区全不字符,如果GetChar = MSComm1.Input该指令执行的时候,oncomm事件只触发了3 次,那么缓冲区只有3个,(你的.RThreshold = 1)所以肯定不全.你应当判断你所读取的最后一位是否是你协议中设置的停止位,(一般都是Chr(13).),如果不是继续读取,直到完全读取为止.否则,就是不全的. 可以了!~谢谢 sunny8226(袋鼠) !~ 这个帖不是我发的,所以不能给分分啦,下次遇到一定补!~ 比较变态:判断文本文件内容的每一行标点数量 取字符串里的数 象没有回过VB版了,声明一下。 TX Text Control是一个可以直接编辑DOC/TXT/HTML/RTF等文档的控件,对中文也支持,但兄弟在王码五笔及全拼等输入法会无法输入符号及回车? 动态添加控件后不可见,是什么原因啊? VB结构参数能否传递给C++写的DLL VSFlexGrid如何使用,请帮帮忙,急? 数据库连接的问题.急,在线等待,解决问题100分 vb数据库问题3 VB webBrowser中调用js函数的问题 ◆◇关于用winsock制作远程控制的语句◇◆ 如何用Ado访问一个加了密码的ACCESS数据库!
就是读取 串口(字符串)时候,少掉了前面一大截。
问题解决时候也告诉我一下,可以吗 ?
顶!~
With MSComm1
.CommPort = "com1"
.Settings = "9600,n,8,1"
.InputLen = 0
.RThreshold = 1
.PortOpen = True
End With
end subPrivate Sub MSComm1_OnComm()
On Error GoTo err001
Dim GetChar As String
Select Case MSComm1.CommEvent
Case comEventOverrun '数据丢失。
MsgBox "数据丢失!", vbExclamation, "错误"
Case comEventBreak ' 收到 Break。
Case comEventCDTO ' CD (RLSD) 超时。
MsgBox " CD (RLSD) 超时。!", vbExclamation, "错误"
Case comEventCTSTO ' CTS Timeout。
MsgBox "CTS Timeout", vbExclamation, "错误"
Case comEventDSRTO ' DSR Timeout。
MsgBox "DSR Timeout。", vbExclamation, "错误"
Case comEventFrame ' Framing Error
MsgBox "Framing Error", vbExclamation, "错误"
Case comEventOverrun '数据丢失。
MsgBox "数据丢失。!", vbExclamation, "错误"
Case comEventRxOver '接收缓冲区溢出。
MsgBox "接收缓冲区溢出!", vbExclamation, "错误"
Case comEventRxParity ' Parity 错误。
MsgBox "Parity 错误!", vbExclamation, "错误"
Case comEventTxFull '传输缓冲区已满。
MsgBox "传输缓冲区已满!", vbExclamation, "错误"
Case comEventDCB '获取 DCB] 时意外错误
MsgBox "获取 DCB] 时意外错误!", vbExclamation, "错误" Case comEvReceive ' 收到数据
If MSComm1.InBufferCount Then
GetChar = MSComm1.Input
End If
MsgBox GetChar
'执行某一函数(省略)
End Select
Exit Sub
err001:
MsgBox Err.Description, vbCritical, "错误"
End Sub能帮我看看吗?搞不动问题出在哪!~
我把inbuffersize设置成很大,也还是不行的呀!~
否则,就是不全的.