c#程序在与外部设备进行串口通信时使用了 Conn.DataReceived这个方法去接收数据,这个一次最多可以读取多少个字节?这个最多读取的字节可以自定义吗?

c#程序在与外部设备进行串口通信,用了 Conn.DataReceived这个方法去接收数据,这个一次最多可以读取多少个字节?我的这个程序好像最多一次只能读取8个字节。 当外部设备在很短的时间间隔一直发一个字节数据给程序, 用这个方法接收数据时会不会接收到前几次的字节数据呢?

img

千万不要这么想,这么想的大部分都是自己往坑里跳,而且还是跳下去就爬不出来的

正确的想法是,你别去折腾一次读多少,你读到多少就是多少。
然后在去按双方定义的规则去写解码器去解码一次封包的协议

因为编写底层驱动的人是不知道你们双方定义的规则的,所以他的任务只是如实的返回字节流。如果你认为底层驱动代码会按你的规定读取数据,那就是是进坑了,因为那个编写驱动人压根就不会理会你们双方是咋想的,他的思路是“你们双方怎么想是你们自己的事情,我要做的只是尽可能的快速准确的把货物送到”--对,他就是快递小哥而已,从来不管你到底点了啥。
所以你要责怪快递小哥“我明明定了3件,你就送到1件”。
快递小哥也没办法,只能说“快递点到了多少就是多少,你自己根发货商确定去”

直接用ReadExisting方法