新人求助,希望大家帮忙

yuandre 2016-02-25 11:43:40
大家好,我的问题有点长,希望大家可以耐心看完,先谢谢了。
任务很简单,我需要用VB读取调用一个测量机器的显示屏上的测量结果,用了一根GPIB转USB接口的线连接机器和电脑,那根转接线的说明书上提供了2个从机器串口读取数据的命令, 一个是read eoi 这个命令只会读一次值,另一个是read 就是一直从机器上读值。理论上我往串口里发送read eoi(SerialPort.write("read eoi"))就会读取机器显示屏上当前的值,然后我再赋值给变量或是传到textbox里都可以,任务完成。可现在出现了一个bug, 比如现在机器上有个测量值1V,我用read eoi读多少次都不是1V而是上一个储存在机器寄存器里的值X,我用read 它会一直读,读的第一个值是X,第二个值和之后的值都是1V,这个时候我断开串口连接,再用read eoi 读就是1V了,之后再改变测量值,用read eoi读的永远是1V,因为这时候存在机器寄存器里的值是1V了。除非我再用read读一次,然后再用read eoi,就又可以读出当前值了。也就是说,只有用了read才可以刷新机器寄存器里的值。

机器太老,有了这个bug之后也没人会修,所以只能从编程方面想办法了。有3个解决设想方案,一个是我创建一个后台窗口,每读一个数值之前,在后台上运行一次read,然后关闭串口再打开串口,再发送read eoi 这样就可以每次都读出当前值,但是有时候要从机器里读取几百个数然后取平均值,用这个方法就要关闭打开串口几百次。想问问大家有没有方法可以不断开串口,就断开read的动作,我试了各种中断都不可以。
第二个设想是,可不可以用VB上编写一个类似于这个转接线提供的read命令,只读固定次数,然后我用正则表达式筛选出需要的数值,这是不是需要知道这根线的各种参数呀?
第三个设想是,可不可以用VB编写个函数,刷新机器的寄存器,让它每次都不要保存上一个值,实时传递当前测量值呀?
如果以上都不能实现,大家有什么解决方案可以推荐一下吗

问题比较复杂,说的也可能不是很清楚,但还是希望可以有人能帮到我,万分感谢呀
...全文
1795 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vansoft 2016-03-01
  • 打赏
  • 举报
回复
不是用MSCOMM? MSCOMM可以设置连接断开啊。然后发送相应的读的命令。
舉杯邀明月 2016-02-26
  • 打赏
  • 举报
回复
除了“读数据”,应该还有其它的指令吧! 你看看有没有“刷新寄存器”之类的指令呢……
赵4老师 2016-02-26
  • 打赏
  • 举报
回复
如果是我,用第一个方法。
yuandre 2016-02-26
  • 打赏
  • 举报
回复
其他指令都看了,没有之类的指令呢

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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