读书人

delphi下用spcomm时打开串口跟计算接收

发布时间: 2014-04-18 13:32:59 作者: rapoo

delphi下用spcomm时打开串口和计算接收事件次数
1,用spcomm时计算接受次数在XP机下是n个n个的加的,n指的是一次接收了多少字符,而在自己的win机下用同样的程序试了下,发现是正常的一个一个加的,不知道跟系统有么有关系?
2,在打开串口时也遇到同样问题,在自己电脑下是用try except 可以捕捉异常,在xp下就不同。而且delphi和spcomm是一模一样的
[解决办法]
此情况,应该是跟系统的设置的缓冲区有关系的。
[解决办法]
应该跟mscomm的rthread接收的字节设置有关。
[解决办法]
你用的Spcomm是哪个版本的,推荐使用cnpack的组件包。里面有Spcomm的封装,很不错的。W7有权限控制的。运行程序,要给管理员权限的。
[解决办法]
SPCOMM不是有设置单次数据接收长度设置吗,一般都是一包接收一次,当然接收超时不要设置的刻意的小,我试过一包数据最大2048个字节的,数据加CRC校验的,收完之后用验证下就可以了,基本没什么错。XP、win7、win8.1都有试过。
[解决办法]
你可以发一包大于2048个字节的数据看看,比如5000字节,spcomm最大一包没记错的话,应该就是2048,你如果这时设置接收数据长度是2048,那么5000字节的话会触发spcomm接收3次,你的记数会因为这包数据加3次。当然长度设置短了,分包触发就越多。
另外一个原因是发送超时,每个字节和每包数据都有超时时间,超过这个临界值,一包数据也会被分为二次触发,你的记数也会增加。
电脑cpu在很忙,或者内存吃紧的时候串口数据收发会有延迟,也可能会影响超时时间,从而影响触发次数。
经验之谈,仅供参考。

读书人网 >.NET

热点推荐