ich möchte mit meinem Arduino über einen COM-Port Kommunizieren. Das funktioniert auch alles soweit einwandfrei, ich habe nur folgendes Problem:
Ich schicke einen Byte-Frame an den Arduino, der verarbeitet diesen richtig und gibt mir eine Antwort.
Diese Funktionalität prüfe ich in einem NUnit-Testprojekt:
SerialPort Port;
[SetUp]
public void Setup()
{
Port = new SerialPort()
{
BaudRate = 9600,
PortName = "COM4",
ReadTimeout = 1000,
WriteTimeout = 1000,
RtsEnable = false,
Handshake = Handshake.None
};
Port.Open();
}
[TearDown]
public void Teardown()
{
Port.Close();
Port.Dispose();
}
[Test]
public async Task ArduinoCommunicationTestOne()
{
byte[] data = new byte[10] { 0x00, 0x02, 0x09, 0x04, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 };
byte[] expectedResponse = new byte[9] { 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00 };
byte[] response = new byte[9];
Port.Write(data, 0, data.Length);
await Task.Delay(500);
Port.Read(response, 0, response.Length);
await Task.Delay(5000);
Assert.AreEqual(expectedResponse, response);
}
Wie gesagt, das funktioniert auch einwandfrei, allerdings schickt mein PC, paar Sekunden nach Beendigung des Tests die Nachricht nochmal an den Arduino und das möchte ich definitiv nicht. Habt ihr dazu eine Idee woran das liegen kann?
Im Anhang habe ich noch den Kommunikationsablauf aus dem Seriellen Monitor.
LG Konstanz