串口程序中缓冲区有什么用 不写缓冲程序有什么影响吗?

串口程序中缓冲区有什么用 不写缓冲程序有什么影响吗?,第1张

如果用C编写的话,用处可大了,如果用汇编的话,不需要也没什么所谓啊。C编译的话,KEIL往往会有很多条指令产生的,没有汇埋友编那么简洁。前面为什么这弯晌槐样说呢,这是跟通讯时间有很大关系,就9600的波特率来说,每3ms就要传送一个位,传送一个字节要24ms。也就说,当我们传完一个字节后,我们只有3ms的时间(不能大于3ms)去搬送一个字节进FSUB,如果此时你还定义一个数的话,那我相信编译出来的汇编可不是仅仅只有一条MOV指令而已。并且你还得判断发送位呢。当然完成这些动作之后,我们是有24-3=21ms时间去处理数据谨手放入缓区。

SerialPort com3 = new SerialPort("COM1" ,9600), System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One)

com3.DiscardInBuffer()//丢谈返弃来自串行驱动程序的接收缓冲区的数据

每次带迹接收数据后,调用蠢侍并DiscardInBuffer方法就可以把缓存中的数据清除了

上位机应当采用动态开僻缓冲区的做法。最好有一个线程监视串口。

上位机缓冲区已满,下位机是继续发送.这样就导致你的上位机缓冲区的数据溢出。所以需要你程序控制。

如果说缓冲区已满,或者溢出,这样的毕困话上位机在从缓冲区读取数据的时候,那数据肯定会不正确了。

通戚数启信时发生异常等情况,可能是你的串口属性或者数据的 *** 作还有问题。

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12373128.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存