5 个解决方案
#1
也许是缓冲区设得不合适,接收大批量数据时缓冲区装不下,建议你在接收时就存入数据库中,或者将缓冲区大小设得超过可能接收到的数据
#2
考虑考虑用多进程的方法实现
#3
方法:收到一个字符就触发Oncomm事件,不用缓冲区,保证数据的完整。
接收缓冲区的字符数相关参数设置(详情请查阅MSDN帮助)。
MSComm1.InputLen = 1
MSComm1.RThreshold = 1
看看我的免费的医院“检验仪器数据接收”软件:http://download.pchome.net/industry/health/9890.html
接收缓冲区的字符数相关参数设置(详情请查阅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
其实不用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
接收缓冲区的字符数相关参数设置(详情请查阅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
其实不用oncomm事件也可以的,你只需要计算每次传输的数据流量例如是128个字节,然后检查缓冲区是不是有128个字节的数据就可以了.最后清空缓冲区。
还有就是实际传输的数据流量可能要大于128,因为在传输过程中,根据你的传输模式,每个字节的前一位和后一位很可能加上高电平位和底电平位,但是这种做法能避免这种情况,
还有com控件本身不是很完善,有一些bug,所以难免出一些问题,多找找资料,看看例子,多试试就可以了:)
有什么事情可以与我联系qq:9890214
email:sun-1112@263.net