VB串口通信RS232 接收数据问题.
我第一次学习接触串口通信编程,想利用电脑接收"电子高度规"传递的数据.
窗体上有一个文本框控件,把收到的数据写显示在文本框里
我是这样写的代码:
Dim z As String
Private Sub Form_Load()
MSComm1.commport = 2
MSComm1.settings = "9600,N,8,1"
MSComm1.portopen = True
MSComm1.RThreshold = 1
End Sub
Private Sub MSComm1_OnComm()
z = MSComm1.input
Text2.Text = z
End Sub
可是它跟本就没有发生MSComm1_OnComm()事件呀.
请高手多多指教.十分感谢....
[解决办法]
需要看"电子高度规"的通信协议是如何约定的,似乎有可能是发送字节数据.可以参阅:
http://www.vbgood.com/viewthread.php?tid=83700&highlight=
用它的工程来调试.
并请注意COM口接线是否正确.
[解决办法]
MSComm1.RThreshold = 1 '若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件,如果设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。MSComm1.RTSEnable = True '确定是否使 Request To Send (RTS) 线有效。一般情况下,由计算机发送 Request To Send 信号到联接的调制解调器,以请示允许发送数据。'当 RTSEnable 设置为 True,端口打开时,Request To Send 线设置为高电平,端口关闭时,设置为低电平。'Request To Send 线用在 RTS/CTS 硬件握手。RTSEnable 属性允许手动检测 Request To Send 线以确定其状态。MSComm1.SThreshold = 1 '在 MSComm 控件设置 CommEvent 属性为 comEvSend 并产生 OnComm 事件之前,设置并返回传输缓冲区中允许的最小字符数。'若设置 Sthreshold 属性为 0(缺省值),数据传输事件不会产生 OnComm 事件。'若设置 Sthreshold 属性为 1,当传输缓冲区完全空时,MSComm 控件产生 OnComm 事件。'如果在传输缓冲区中的字符数小于 value,CommEvent 属性设置为 comEvSend,并产生 OnComm 事件。'comEvSend 事件仅当字符数与 Sthreshold 交叉时被激活一次。'例如,如果 Sthreshold 等于 5,仅当在输出队列中字符数从 5 降到 4 时,comEvSend 才发生。'如果在输出队列中从没有比 Sthreshold 多的字符,comEvSend 事件将绝不会发生。'没有以上三行(默认设置)就不能收到返回的信息,也不能接收短信MSComm1.CommPort = 4 '设置端口号码,控件手工设置无效,必须重新指定MSComm1.Settings = "9600,N,8,1" '9600波特,无奇偶校验,8位数据,一个停止位,可省略MSComm1.PortOpen = True '打开端口,不,可省略
[解决办法]
Private Sub Form_Load() MSComm1.commport = 2 MSComm1.settings = "9600,N,8,1" MSComm1.portopen = True MSComm1.RThreshold = 1End Sub