因为初学不是很了解,所以问一下:
串口在通信过程中,如果上位机缓冲区已满,下位机是继续发送呢?还是自动停止发送?这个机制是需要程序编制还是在串口本身存在的机能?
如果说缓冲区已满,或者溢出,这样的话上位机在从缓冲区读取数据的时候会有什么问题发生?
现在我的程序在读串口数据时经常有异常发生,掉字节,无数据等等,不排除下位机的问题。该如何解决?
求教大家。谢谢。

解决方案 »

  1.   

    上位机缓冲区已满,下位机是继续发送.这样就导致你的上位机缓冲区的数据溢出。所以需要你程序控制。
    如果说缓冲区已满,或者溢出,这样的话上位机在从缓冲区读取数据的时候,那数据肯定会不正确了。通信时发生异常等情况,可能是你的串口属性或者数据的操作还有问题。
    给你介绍个网站http://www.gjwtech.com/不错!
      

  2.   

    串口通讯中,双方的交互是人为控制的(这一点不同于USB);下位机不可能知道上位机的情况(象缓冲区满,校验错误之类)。
      

  3.   

    然,先假设我的下位机没有问题,它每秒钟发送一次数据,我也通过定时器每秒钟读取一次数据,照此理想状态它会有什么问题吗?仿佛没有。
    然,是否通信过程中的干扰,数据掉包,延时。。等其他在实际中会发生的问题对于数据发送传输造成的问题该是如何分析与解决呢?
     tyzyx(tyzyx) :”最好有一个线程监视串口。“
    这个方法应该是可行的吗,只要有数据来我就读取,很可惜的是多线程及事件等待触发这个过程我不会作(JUST A BEGINNER!).