我现在需要读取串口数据,因此我设置了一个定时器定时去读取串口,
要求:"前后数据的空间间隔间隔至少需33位",请问我该设多长的定时器才不会发生帧冲突,比如我读取串口的时候却收到了两次的东西。假若设波特率为300;

解决方案 »

  1.   

    用微软的串口控件,该控件会触发DataArrival
    然后 ,read
      

  2.   

    不可能收到相同的数据,你是不是用readfile接收的?
    你在读出缓冲区的数据的同时也清空了接收缓冲区。
    至于消息触发,就是一有数据就读是可以的,具体是什么记不得
    回去查点资料。
      

  3.   

    用定时器不是很好的做法,你可以用ylb_and_xy(~0~蜗牛先生~0~)或2934046(wy520) 的做法!
      

  4.   

    波特率为300,意思是300位/秒.所以1位差不多3.3ms.33位的时间差不多109ms.
    也就是说: Sleep(109);
    但是,你这种方法不好,你应该启动一个监视线程,通过调用GetCommMask函数,并判断lpEvtMask参数是否为EV_RXCHAR.如果是,就表示有字符进入接收缓冲区,然后将数据接收下来就可以了.
    你可以去www.codeguru.com上面下载一个串口类,看看他的源代码,他就是这么做的!!!
      

  5.   

    我这有关于地层的串口编程代码,我也是搞这个的,你需要么,[email protected]有什么问题我帮你,不过我的是用的底层的方法。