首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB串口通信RS232 接收数据有关问题

2011-12-29 
VB串口通信RS232 接收数据问题.我第一次学习接触串口通信编程,想利用电脑接收电子高度规传递的数据.窗体

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口接线是否正确.
[解决办法]

VB code
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 '打开端口,不,可省略
[解决办法]
VB code
Private Sub Form_Load()  MSComm1.commport = 2  MSComm1.settings = "9600,N,8,1"  MSComm1.portopen = True  MSComm1.RThreshold = 1End Sub 

热点排行