问题描述
下位机一次发送了5000个字节。我通过串口接收一次只能接受4096个字节。剩下的字节必须在发送一次命令,让下位机返回数据,此时返回的数据包括2个部分,第一部分为刚才没收完的数据,第2部分为这次命令该返回的数据。感觉就是缓冲区只有4096.设置成更大缓冲区不管用。请教一下,在不改变下位机的情况下,有可能改变上位机,让上位机可以一次接收完5000个数据吗
解决方案
解决方案二:
串口既然是串行的,那么每次只能发送一个二进制数据位。至于你说的多少字节,这个是你上位机缓冲区的大小,这个是你自己控制的。你内存大,理论上搞一个100GB的也没事。
解决方案三:
缓冲区决定一次接收数据大小,而缓冲区是你自己设置的
解决方案四:
就算是你设置所谓缓冲区为1个字节,也是可以接受完5000个字节的消息内容的。处理DataReceived时,要处理不断处理锁触发的接收事件。难道你以为触发一次事件、执行一次Read语句就算是收完了一条消息?
解决方案五:
一看你纠结所谓缓冲区应该多“大”,就能看出问题来了。这个数值设置1个太小,设置5000算不算也太小?设置为1M是不是也小?万一所谓下位机发来的消息敲好是1M零1个字节呢?这问题出自错误的逻辑,没有什么答案。
解决方案六:
下位机发送时会自动分包的,最大就是4096,大于4096时就需要你在上位机自己组包,每个包头加一个编号
时间: 2025-01-21 05:59:34