Я написал (плохо, так как это один из моих первых проектов arduino) программу, которая прослушивает порт TCP и, если получает определенные байты, отвечает.
Это работает, однако я печатаю«Живой» на последовательном мониторе, когда это произойдет. Проблема в том, что он печатает ALIVE, а затем печатает значение переменных char, которые я сравниваю.
byte responseBytes[8];
char* alive = "ABCD000000000112";
char* clientAlive = "ABCD000000000113";
void loop()
{
// if there are incoming bytes available
// from the server, read them and print them:
if (client.available()) {
for (byte n = 0; n < 8; n++) {
responseBytes[n] = client.read();
}
char* response = "";
array_to_string(responseBytes, 8, response);
if (strcasecmp(response, alive) == 0){
Serial.println("ALIVE"); //<-- This prints ALIVE and ABCD000000000112
client.write(clientAlive); //<-- This was added after the issue occured, it is not the issue.
}
for (byte n = 0; n < 8; n++) {
responseBytes[n] = 0;
}
}
}
void array_to_string(byte array[], unsigned int len, char buffer[])
{
for (unsigned int i = 0; i < len; i++)
{
byte nib1 = (array[i] >> 4) & 0x0F;
byte nib2 = (array[i] >> 0) & 0x0F;
buffer[i*2+0] = nib1 < 0xA ? '0' + nib1 : 'A' + nib1 - 0xA;
buffer[i*2+1] = nib2 < 0xA ? '0' + nib2 : 'A' + nib2 - 0xA;
}
buffer[len*2] = '\0';
}
Удаление
Serial.println("ALIVE");
останавливает печать чего-либо. Не просто ЖИВЫЙ
Я в недоумении от того, что здесь происходит, черт возьми.
Выход последовательного монитора, если он актуален
ALIVE
ABCD000000000112ALIVE
ABCD000000000112ALIVE
ABCD000000000112