新人求助,希望大家帮忙
大家好,我的问题有点长,希望大家可以耐心看完,先谢谢了。
任务很简单,我需要用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编写个函数,刷新机器的寄存器,让它每次都不要保存上一个值,实时传递当前测量值呀?
如果以上都不能实现,大家有什么解决方案可以推荐一下吗
问题比较复杂,说的也可能不是很清楚,但还是希望可以有人能帮到我,万分感谢呀