今天发现了一个很奇怪的现象,vb6的一个控制程序,在win7和xp下的表现还不一样,当然,问题是串口的应用也是有些问题的,太紧凑了。
下位机在得到控制命令后,一边动作,一边通过串口回送数据,上位机通过数据做累加和得到当前位置,这样对串口的压力还是有的。
但是没不至于出现不能处理的问题,9600的波特率,还不至于数据堆积,而且,vb控件的缓冲区还是很大的。
不论怎样,现在的情况是win7,和xp对这个控件的支持程度有明显区别。
躲开这个问题的办法就是中间状态时,就是利用原用逻辑,计算位置,通过判断固定时间内是否进入过oncom事件来判定串口是否有新数据。如果一定时间内无数据进入,就退出中间等待状态,使用位置查询指令,判定当前位置是否是所需状态。
应该说,本质上,还是应该是上位机发指令动作,下位机动作,上位机查询位置,下位机回应。一问一答,超时再问,超次报错。短问短答,这样对串口的压力就小。
串口压力大,位数多就容易出错。