串口通讯问题!!!!!

时间:2021-12-21 17:57:36
使用MSCOMM32标准控件,实现医疗仪器和计算机实时通讯,无应答。在应用过程中存在大批量(比如》50,100条数据)传输时丢数据问题(具体过程是:通过MSCOMM32控件接收数据到INPUT 缓冲区,然后从INPUT中读出,显示,保存.可显示,但没能存入数据库中,估计是原因可能是接收和显示保存数据的速度问题)求一解决方法,大分数相增!!!言者有分!!! 

5 个解决方案

#1


也许是缓冲区设得不合适,接收大批量数据时缓冲区装不下,建议你在接收时就存入数据库中,或者将缓冲区大小设得超过可能接收到的数据

#2


考虑考虑用多进程的方法实现

#3


方法:收到一个字符就触发Oncomm事件,不用缓冲区,保证数据的完整。
     接收缓冲区的字符数相关参数设置(详情请查阅MSDN帮助)。
     MSComm1.InputLen = 1
     MSComm1.RThreshold = 1
看看我的免费的医院“检验仪器数据接收”软件:http://download.pchome.net/industry/health/9890.html

#4


硬件与software的波特率要一样才行的!

#5


根据硬件的晶振计算的波特率于com控件你所设定的波特率的误差的相差值是有一定的限制的,而且很苛刻的。建议你买一本单片机的书来看看。上面有例子。
其实不用oncomm事件也可以的,你只需要计算每次传输的数据流量例如是128个字节,然后检查缓冲区是不是有128个字节的数据就可以了.最后清空缓冲区。
还有就是实际传输的数据流量可能要大于128,因为在传输过程中,根据你的传输模式,每个字节的前一位和后一位很可能加上高电平位和底电平位,但是这种做法能避免这种情况,
还有com控件本身不是很完善,有一些bug,所以难免出一些问题,多找找资料,看看例子,多试试就可以了:)
有什么事情可以与我联系qq:9890214
email:sun-1112@263.net

#1


也许是缓冲区设得不合适,接收大批量数据时缓冲区装不下,建议你在接收时就存入数据库中,或者将缓冲区大小设得超过可能接收到的数据

#2


考虑考虑用多进程的方法实现

#3


方法:收到一个字符就触发Oncomm事件,不用缓冲区,保证数据的完整。
     接收缓冲区的字符数相关参数设置(详情请查阅MSDN帮助)。
     MSComm1.InputLen = 1
     MSComm1.RThreshold = 1
看看我的免费的医院“检验仪器数据接收”软件:http://download.pchome.net/industry/health/9890.html

#4


硬件与software的波特率要一样才行的!

#5


根据硬件的晶振计算的波特率于com控件你所设定的波特率的误差的相差值是有一定的限制的,而且很苛刻的。建议你买一本单片机的书来看看。上面有例子。
其实不用oncomm事件也可以的,你只需要计算每次传输的数据流量例如是128个字节,然后检查缓冲区是不是有128个字节的数据就可以了.最后清空缓冲区。
还有就是实际传输的数据流量可能要大于128,因为在传输过程中,根据你的传输模式,每个字节的前一位和后一位很可能加上高电平位和底电平位,但是这种做法能避免这种情况,
还有com控件本身不是很完善,有一些bug,所以难免出一些问题,多找找资料,看看例子,多试试就可以了:)
有什么事情可以与我联系qq:9890214
email:sun-1112@263.net