发表于:2002-06-12 11:05:00
楼主
我有一个初级问题请教各位:
要实时采集3个不同管线的压力值,通信卡每次接收9个字节的数据,其中:2个字节的帧首标志(&HF0、&HF0),接着6个字节的压力值(即3个压力值各占2个字节),最后是1个字节的帧尾标志(&H0D)。
程序初始设置:
FrameFirst=CHR(F0)+CHR(F0)
FrameEnd=CHR(0D)
MSComm1.Settings = “4800,N,8,1"
MSComm1.InputLen = 1
MSComm1.PortOpen = True
在MSComm1_OnComm事件(或Timer1_Timer)中,用如下代码采集数据
Do Until Left(FullData, 2) = FrameFirst And Right(FullData, 1) = FrameEnd
GetData = MSComm1.Input 采集数据
FullData = Right(FullData, 8) + GetData
Debug.Print FullData
DoEvents
Loop
DataPrg 处理数据
用原配的程序时通信正常,但用此程序时始终不能退出DO循环,发现采集的数据始终不能同时满足帧首/帧尾标志。当通信速度设为1200、9600时,Debug.Print的数据不同,而且一样不能退出DO循环。
请问程序错在哪里?还差什么参数或参数设置不当?另外,在串口通信时,用MSComm1_OnComm事件或用Timer1_Timer采集数据有什么区别?
衷心感谢!!