如果Arduino以此波特率连续发送字节,则速度将最大为9600/10 = 960字节/秒(1个字节将需要10个波特:8个数据位1开始1个停止) . 然后将在超过104秒内收集100000个字节 . 如果通信没有中断,您的代码应该可以正常工作 . 要调试它,您可以在while循环中添加它:
System.Threading.Thread.Sleep(1000); //sleep 1 second
Console.WriteLine("Total accumulated = " + bytesread);
但是,更好的方法是使用 SerialPort 的 DataReceived 事件:
int buffersize = 100000;
SerialPort port = new SerialPort("COM3", 9600);
port.DataReceived += port_DataReceived;
// To be safe, set the buffer size as double the size you want to read once
// This is for the case when the system is busy and delays the event processing
port.ReadBufferSize = 2 * buffersize;
// DataReceived event will be fired when in the receive buffer
// are at least ReceivedBytesThreshold bytes
port.ReceivedBytesThreshold = buffersize;