我现在遇到一个问题,就是通过RS232来控制一个磁记录器,控制已经没有任何问题。只是在返回磁记录器状态方面有些麻烦。
我的表单有两个text控件,TEXT1.text用来返回状态(即停止,播放,录音等等),TEXT2.text用来返回录像带播放的时间。还用到了TIMER控件,因为是要实时获取的。
状态是通过发送“STATE?”后,从mscomm1.input得到信息。
时间是通过发送“TIMER?”后,从mscomm1.input得到信息。
现在比较麻烦的是,怎么把mscomm1.input分别发送到TEXT1和TEXT2中去呢?是通过判断返回的变量类型还是什么呢?有判断变量类型的函数吗?
另外,在通信不成功时,在ONCOMM事件中通过什么代码来通知使用者呢?
我的表单有两个text控件,TEXT1.text用来返回状态(即停止,播放,录音等等),TEXT2.text用来返回录像带播放的时间。还用到了TIMER控件,因为是要实时获取的。
状态是通过发送“STATE?”后,从mscomm1.input得到信息。
时间是通过发送“TIMER?”后,从mscomm1.input得到信息。
现在比较麻烦的是,怎么把mscomm1.input分别发送到TEXT1和TEXT2中去呢?是通过判断返回的变量类型还是什么呢?有判断变量类型的函数吗?
另外,在通信不成功时,在ONCOMM事件中通过什么代码来通知使用者呢?
解决方案 »
- 在窗体上点击任何一点拖动鼠标实现窗体的移动
- 判断数据库是否存在,数据库中的表是否存在?
- 在VB编程中,如何直接读取以html为格式的内容
- 提问关于下载字符?高手快来啊!!
- delete from 表名 where 条件,是不是‘表名’不能为中文。在线等!!!!!!!
- 如何在ASP中用ADODB访问Access2000的MDB数据库?
- ~~~!!求救,请教各位高手,如何搜索一个文件夹下面的文件
- ch21st(风尘鸟)接分
- 高分求教一个用VBA写excel宏的问题!!!!!!!!!!(在线等待)
- 如何解决循环后程序被卡的问题?
- 下载下来的xml页面用什么查看?
- 在VB中如何使用代码禁止Caps Lock键。急!!!!
下例说明如何处理通讯错误和事件。可以在相关的 Case 语句之后插入代码来处理特定的错误或事件。Private Sub MSComm_OnComm ()
Select Case MSComm1.CommEvent
' Handle each event or error by placing
' code below each case statement' 错误
Case comEventBreak ' 收到 Break。
Case comEventCDTO ' CD (RLSD) 超时。
Case comEventCTSTO ' CTS Timeout。
Case comEventDSRTO ' DSR Timeout。
Case comEventFrame ' Framing Error
Case comEventOverrun '数据丢失。
Case comEventRxOver'接收缓冲区溢出。
Case comEventRxParity' Parity 错误。
Case comEventTxFull '传输缓冲区已满。
Case comEventDCB '获取 DCB] 时意外错误 ' 事件
Case comEvCD ' CD 线状态变化。
Case comEvCTS ' CTS 线状态变化。
Case comEvDSR ' DSR 线状态变化。
Case comEvRing ' Ring Indicator 变化。
Case comEvReceive ' 收到 RThreshold # of chars.
Case comEvSend ' 传输缓冲区有 Sthreshold 个字符 '
'
Case comEvEof ' 输入数据流中发现 EOF 字符
'
End Select
End Sub
时间是通过发送“TIMER?”后,从mscomm1.input得到信息。
====================================
你的设备返回的数据是什么形式的???
例如说:
1。时间一般都是数字,而状态可能是字符甚至不可打印字符
2.返回的时间会不会带“:”号??例如“23:16:05”...状态一般不会用这些符号。。
。
。
。一般找出它们之间的本质分别就可以了
"STOP
0:0:21"
既可以通过判断回车符的位置来拆开字符串,得到两个TEXT控件的内容。
也可以通过每次发一个命令后,清空一下接受缓冲区,再发到不同的TEXT控件去。
我觉得在ONCOMM中判断的话,应该不会变乱呀,
发送完指令后,置RThreshold为1(或别的数)
当触发事件后把RThreshold置位0,处理数据
发送另一个指令,设置RThreshold 。
这样在处理不知多久能来的数据时比较好,还可以设置一个变量TIMEOUT用TIMER来控制
当超时返回错误信息