问一个C#serialport的问题

MySerialPort.ReceivedBytesThreshold=1;//设置输入指定的长度时触发接收处理事件这里是1MySerialPort.ReadTimeou... MySerialPort.ReceivedBytesThreshold = 1;//设置输入指定的长度时触发接收处理事件 这里是1
MySerialPort.ReadTimeout = -1;//Rthreshold inbuffersize
MySerialPort.ReadBufferSize = 4096; //接收缓冲区大小
MySerialPort.WriteBufferSize = 4096; //发送缓冲区大小
这是串口相关的部分配置,我在接收数据的用receivelength = MySerialPort.BytesToRead;来读取缓存区的字节数的时候最大就只能到32 导致我下位机每次传97个字节的数据 上位机要分三次才能接收到,请问需要怎么样才能扩大 缓存区最大的字节数啊~~
展开
 我来答
艾维客饭
2014-04-09 · 超过32用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:55.5万
展开全部
在datareceive()触发接收处理事件中
增加延时 thread.sleep(200);
realbogey
2014-04-08 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:84
采纳率:0%
帮助的人:84.4万
展开全部
ReceivedBytesThreshold改大一点,你是在DataReceived事件里读取数据的么?你设置为1表示的只要有1个字节的新数据就会触发dataReceived
追问
那就是每次都要预计下一次需要读取多少个字节的数据吗?那多麻烦啊~~刚刚我试过发送不同的指令然后修改Threshold的值 确实是可以的 但是指令多的 岂不是很麻烦了~
追答
你可以这样啊,下位机吧数据长度放在第一个,你先读数据长度,再动态调整你的ReceivedBytesThreshold不就可以了,也可以根据包头的数据长度来自己判断收没收完,或者你可以使用特殊字符来表示一条指令结束,比如\r\n之类的,这样你也好进行判断知道什么时候数据收完了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式