【发布时间】:2014-05-11 05:03:35
【问题描述】:
我已将 Arduino 连接到串行端口。 Arduino 有以下简单的代码来发送字节:
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.write((char)100);
}
接收字节的代码(在单独的线程中):
int buffersize = 100000;
byte[] buffer = new byte[buffersize];
SerialPort port = new SerialPort("COM3", 9600);
port.ReadBufferSize = buffersize;
port.Open();
int bytesread = 0;
do
{
bytesread = port.BytesToRead;
}
while(bytesread < buffersize && bytesread != buffersize);
port.Read(buffer, 0, buffersize);
我读到 BytesToRead 可以返回比 ReadBufferSize 更多的内容,因为它包含一个缓冲区。但相反,我只能收到近 12000 个,之后 ReadBufferSize 不会改变。所有波特率都会出现同样的问题。
那么如何一次读取缓冲区中的所有 100000 个字节?也许有一些驱动程序设置等? 请帮忙。
【问题讨论】:
-
您应该读取缓冲区中可用的任何内容并将其粘贴到其他地方进行处理。再读一遍,依此类推。
标签: c# serial-port arduino