【发布时间】:2018-08-19 11:01:37
【问题描述】:
我有一个 C# dll,我想在其中读取 Arduino 的串行端口。对于这个测试,我只是发送“1 1”。我无法让 C# 阅读此内容,我总是收到超时错误。我尝试了各种波特率、port.ReadLine、port.ReadByte(在 C# 中)和 Serial.print 和 Serial.println(在 Arduino 中)的各种组合。 Arduino 是一个很小的 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);
}
【问题讨论】:
-
你试过通过arduino软件连接arduino吗?
-
如果您指的是 Arduino IDE 中的串行监视器,它会显示“1 1 1 1 1 1 ....”,即。正确的输出
-
我自己没有尝试过,我已经通过蓝牙完成了一个项目,并与 Arduino pro 成功通信。我找到了一个你可能感兴趣的链接medium.com/@sawetefe/…
-
谢谢,我会保留它以备将来参考。同时,我已经解决了(请参阅下面的答案):必须设置 port.RtsEnable = true;
-
太好了,项目成功了!
标签: c# winforms arduino serial-port