vb串口如何定时读取串口数据?
时间:2011-12-08
来源:互联网
请问如何用串口定时读取串口数据?
用了oncomm好像不能定时读取。用timer控件如何定时读取串口数据呢?
比如,每1s读取一次串口的数据。
谢谢大家
用了oncomm好像不能定时读取。用timer控件如何定时读取串口数据呢?
比如,每1s读取一次串口的数据。
谢谢大家
作者: aciom 发布时间: 2011-12-08
不使用OnComm通信,将通信放到Timer中,发送了通信命令后就等待其返回。类似于这个:
VB code
VB code
Option Explicit Private Declare Function GetTickCount Lib "kernel32" () As Long Private Sub Form_Load() 'MSComm1属性设置,以下只是举例,请根据你的实际情况写 With MSComm1 .CommPort = 1 .Settings = "9600,E,7,1" .RThreshold = 0 '这个必须为:0,表示不触发OnComm的接收事件 .InBufferCount = 0 .OutBufferCount = 0 .InBufferSize = 1024 .InputMode = comInputModeText If Not .PortOpen Then .PortOpen = True End With Timer1.Interval = 5000 '设置Timer间隔时间 Timer1.Enabled = True End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If MSComm1.PortOpen Then MSComm1.PortOpen = False End Sub Private Sub Timer1_Timer() Dim strIn As String Dim strOut As String Dim lngP As Long strOut = "aaaa" '此处输入你的输出内容,如果InputMode是:comInputModeBinary的话,那就要发送数组了 '将命令发出,然后进入等待接收过程,当收到结束字符,或等待时间超过100ms,时退出循环,结束等待。 MSComm1.Output = strOut lngP = GetTickCount Do DoEvents strIn = strIn & MSComm1.Input Loop Until GetTickCount - lngP > 100 Or InStr(1, strIn, "结束字符", vbTextCompare) <> 0 Debug.Print strIn End Sub
作者: Veron_04 发布时间: 2011-12-08
读的话,那也要设备那边有数据才行呀.
你先搞清楚设备那边发数据过来的条件是什么,比如是某条指令,还是某个IO脚变化,还是固定周期,才好进行下一步.
你先搞清楚设备那边发数据过来的条件是什么,比如是某条指令,还是某个IO脚变化,还是固定周期,才好进行下一步.
作者: myjian 发布时间: 2011-12-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28