我有一个C#dll,我想在其中读取Arduino的串行端口。对于此测试,我只发送“ 1 1”。我无法让C#读取此内容,但总是会收到超时错误。我尝试了各种波特率,port.ReadLine,port.ReadByte(在C#中)以及Serial.print和Serial.println(在Arduino中)的各种组合。 Arduino是Teensy USB CDC(如果有的话)。设备管理器中的端口设置似乎还可以,就像在串行端口监视器中一样,我可以看到Arduino输出(貌似)很好:
C#代码。
int interval = 25;
using (SerialPort port = new SerialPort("COM9", 57600, Parity.None, 8, StopBits.One)) {
port.ReadTimeout = 7000;
port.NewLine = "\r";
try {
string output = null;
port.Open();
while (output == null && loopCnt < (timeOut / interval)) {
output = port.ReadLine();
Thread.Sleep(interval);
loopCnt++;
}
MessageBox.Show("output: [" + output+"]");
Arduino代码:
void setup() {
Serial.begin(57600);
}
void loop() {
Serial.print("1 1");
Serial.print('\r');
delay(5000);
}
答案 0 :(得分:0)
已解决:端口设置需要port.RtsEnable = true;