0
我正试图从我的电脑与我的arduino进行通信。我在循环中发送1,0,0,0,并且arduino将收到的数据发送回去。然而,而不是让1,0,0,0回来了,这是我得到:C#与arduino的串行通信
1000
1000
1000
1000
1000
1000
1000
0011
0000
0010
0100
1001
0000
0011
0000
正如你所看到的,它工作在开始,但开始几条短信后变得怪异。 而不是发送3 0它发送5.为什么?
这里是我的代码:
C#应用程序:
class Program
{
SerialPort p;
static void Main(string[] args)
{
Program p = new Program();
p.initialize();
}
private void initialize()
{
p = new SerialPort("COM3", 115200);
p.Open();
byte[] data = { 1, 0, 0, 0 };
Thread t = new Thread(reading);
t.Start();
while(true)
{
p.Write(data, 0, data.Count());
}
Console.ReadLine();
}
private void reading()
{
while (true)
{
Console.WriteLine(p.ReadLine());
}
}
}
的Arduino:
void setup()
{
Serial.begin(115200);
delay(5000);
Serial.println("Program started....");
}
void loop()
{
for (int i = 0;i<4;i++)
{
Serial.print(Serial.read());
}
Serial.println();
delay(500);
}
读取和写入线程似乎不会以相同的频率触发并且不同步。 – Dave
我不这么认为,读写线程是完全独立的。此外,在Arduino上的值也是错误的 – user2422196
我想你只是超载你的外部硬件。您的串行端口允许发送速度为1000,甚至不使用任何握手。这对于arduino板来说可能只是很多。 – PMF