1、是不是发送缓冲区一旦有了数据对方接收缓冲区就马上有了相同的数据。 
2、发送缓冲区的数据是如何清除的。 3、接收缓冲区的数据是读了几个字节,这几个字节就自动清除掉吗? 
还有几个问题,想起来再问。

解决方案 »

  1.   

    硬件自带的缓冲通常不过十几个字节。作应用时,程序一般还应开辟更大的缓冲区,根据不同的应用可以有几十字节甚至几KB。程序缓冲区应当采用FIFO的环形队列结构。缓冲区分发送缓冲和接收缓冲。这样,中断服务程序只要负责对缓冲区的操作即可,所以问题中
    1、需要看你发送的时间和速度等,理论上只要发送成功是没问题的。
    2、发送缓冲区需要调用函数来清空,这个是针对软件开辟的缓冲区。
    3、接收缓冲区硬件是读取后就清空了,但是软件开辟的需要手工清除。
      

  2.   

    如果在API层面(非驱动层),则1、是不是发送缓冲区一旦有了数据对方接收缓冲区就马上有了相同的数据。 
    //需要硬件传输时间。
    2、发送缓冲区的数据是如何清除的。 
    // PurgeComm清除,或者数据已经到了对方接收缓冲区,则自动清除。
    3、接收缓冲区的数据是读了几个字节,这几个字节就自动清除掉吗?
    // 是的。
      

  3.   

    #3说的意思你没理解。串口一般自己有个FIFO缓冲区,多是16字节的,这属于硬件范畴,你无需太多关注。在软件开发上,读来的数据和写出的数据要自己开辟个缓冲区去管理它,即,把要输出的数据写入输出缓冲区,而把读来的数据放入输入缓冲区。上层软件只与这两个缓冲区打交道,而物理上的收发是靠中断来实现的。比较麻烦,建议你去找例程。