OnComm与定时器的区别 点击:1287 | 回复:1



JHCOM

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2002年6月11日
发表于: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采集数据有什么区别? 衷心感谢!!



JHCOM

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2002年6月11日
发表于:2002-06-12 11:05:00
1楼
我将帧首帧尾变量由下 FrameFirst=CHR(F0)+CHR(F0) FrameEnd=CHR(0D) 改为 FrameFirst=CHR(240)+CHR(240) FrameEnd=CHR(13) 故障依旧,还望各位赐教,多谢了!

热门招聘
相关主题

官方公众号

智造工程师