串口编程--缓冲区大小问题
砂锅终结者 2016-09-07 11:58:26 现在我遇到这样二个问题:
--------------------------------------------------------------------------------------------------
【第一个】
对于 :SetupComm(hcom,1024,2048);
设置输入缓冲区大小为:1024字节,输出缓冲区大小为2048字节。
我的理解是:
输入缓冲区的目的:不能实时接收其他设备传来的数据,先放那,有空了再去拿(如果其他设备发送过来的数据大于1024字节就会丢数据了)。
输出缓冲区的目的:把想要发送的数据段瞬间放到那,不用一个个的发,让那边去发,主程序该干嘛干嘛。
现在问题来了,我写了一个测试程序,只接收串口发送来的数据。
缓冲区我是这样设的:SetupComm(hcom,1,1);
发送数据的设备,一次发送10字节,我这边读取是1s一次读取10字节的查询方式。
按理说,我设置了输入缓冲区大小为1字节,我1s读取一次,最多只能得到1个字节的数据(因为缓冲区就1个字节),可实际情况是,怎么接收都是对的,完全没错误!
(我考虑也许是恰巧我刚接收时,那般刚开始发送~!,可我让发送设备1s内发送10次,这边接收10次,每次的10字节都是正确的,感觉输入缓冲区还是很大,根本就不是1个字节!)
问题:
是我对SetupComm(hcom,1,1);理解错误了么?
还是SetupComm(hcom,1,1);根本就没用?
---------------------------------------------------------------------------------------------------
【第二个】
关于:奇偶校验位
windows编程写个串口发送程序,发送给下位机,奇偶校验位都是正确的。
但当我接收下位机上来的数据时,奇偶校验完全没作用!
比如:上位机设置了奇校验,下面发送来的校验位固定为0(或1),'0'与'1'都接收!
(因为不管是奇校验、还是偶校验 0011,0000与0011,0001 不可能同时接收)
问题:这是为什么呢?