大家帮帮忙,为什么用timer就出现异常了?

wxl565 2011-03-25 07:00:00
串口协议为 发送查询命令 “getstate” 返回设备状态字符串 “状态”


因为要实时显示状态,所以我将发送查询命令放在一个timer里,每隔100ms发送一次 ,然后在 Comm_OnComm() 事件中接受到返回的值“状态”,赋予变量S
控制电机 ,出现问题
Private Sub Timer1_Timer()
comm.output="getstate"
text1.text = S
End Sub
Private Sub Comm_OnComm()
Dim receive As String
Select Case Comm.CommEvent
receive=comm.input
end select
S = receive
End Sub
这样做的结果是,当我进行程序其他操作时,比如给串口发送控制命令的时候,偶尔才响应,我分析是因为timer占了整个程序的控制权,请问我改如何修改代码,以便既能实时显示数据,又不影响其他的操作,谢谢大家了
...全文
116 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
flfq 2011-03-26
  • 打赏
  • 举报
回复
用定时器和串口通讯,其他的操作也要和串口通讯,他们同时进行的时候会出问题的,要么把定时器关了再操作,或者全部在定时器里进行
wxl565 2011-03-26
  • 打赏
  • 举报
回复
没有更好的方法了吗?先谢谢大家了
flfq 2011-03-26
  • 打赏
  • 举报
回复
先把定时器时间设长看看
wxl565 2011-03-26
  • 打赏
  • 举报
回复
100MS查询一次状态其实太频繁了,核算下来1秒10次,人眼看不过来. 1秒1次就差不多了.
其次,显示状态的方法也有点怪异.你这里的S显然是个全局变量,你如何确保只有"状态"才会显示在TEXT控件中呢? 按照你的程序来看任何从串口接受到的数据都会被显示出来.
---------------------
那个“状态”我只是打了个比方,其实是一连串的字符串我经过处理后才显示的
熊孩子开学喽 2011-03-25
  • 打赏
  • 举报
回复
100MS查询一次状态其实太频繁了,核算下来1秒10次,人眼看不过来. 1秒1次就差不多了.
其次,显示状态的方法也有点怪异.你这里的S显然是个全局变量,你如何确保只有"状态"才会显示在TEXT控件中呢? 按照你的程序来看任何从串口接受到的数据都会被显示出来.
dbcontrols 2011-03-25
  • 打赏
  • 举报
回复
蜻蜓吃尾巴式的逻辑
wxl565 2011-03-25
  • 打赏
  • 举报
回复
串口通信不使用中断方式即可。
n能说的详细点吗?谢谢
贝隆 2011-03-25
  • 打赏
  • 举报
回复
串口通信不使用中断方式即可。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧