Me.MSComm1.RThreshold = 0使得OnComm 事件中止. 见MSDN解释: 当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。 例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。
昨天用vb作项目遇到同一问题,后来在发送过程尾部加 doevents 函数解决。oncomm事件在系统执行其他过程时虽然被触发,但代码不会运行,直到其他过程运行结束,所以其他过程发送查询指令后,应当马上挂起,将控制权交给系统,以使oncomm运行代码,否则其他过程结束,oncomm事件也结束了,不知道c有没有doevents,...
Private Sub MSComm1_OnComm() '当收到串口返回值时触发这个事件 Text2.Text = "hello!" '为了检测oncomm是否运行! Dim InString As String MSComm1.InputLen = 0 ' 读取所有可用数据。 MSComm1.InputMode = 0 If MSComm1.InBufferCount Then ' 检查数据。 ' Read data. InString = MSComm1.Input End ...
其实,你可以 设置 RThreshold 属性为1,每接收到一个数据 就 触发一次OnComm事件 把 接收到的 数据集中起来就可以了 推荐看书 Visual_Basic与_RS-232_串行通信控制
不是事件不触发,根本是com口没数据收到!你发的时候看看oncomm是不是会有反应啊?所以说不是程序有问题,而是硬件收到信息后没给com口发信息,当然就不会触发oncomm了 这个问题我也摸了近半个来月
想从MSComm1_OnComm()的END SUB 以后返回到前面的EIXT SUB 那里是否能实现 实现何?
OnComm()就是OnCommMscomm1(),就好像Button按钮双击进去是OnBnClickedButton(),名字改成了OnBnClickedButtsend()一样
在form1中放置一个text1控件,在form1中oncomm的接收事件中加入代码,代码内容是把接收的数据存入text1,在form2中读取form1.text1就可以了。
oncomm 是信息接收事件,你可能发送了一次,对方就有5次响应,与你发送方的代码无关。你应该检查一下对方的代码。
不行用 do while循环吧,循环读com口,注意循环里要加上 doevents 将控制权交给程序