int DE_Pin = 4; int RE_Pin = 5; int IRQ_Pin = 1; char receivedMessage[64]; int receivedMessageIndex = 0; void send_data(const String data, const String answer) { data.replace("\r", ""); data.replace("\n", ""); Serial.println(data + answer); } void handleIRQ() { detachInterrupt(digitalPinToInterrupt(irqPin)); send_data("#7V","message") attachInterrupt(digitalPinToInterrupt(irqPin), handleIRQ, RISING); } void get_message() { while (Serial.available()) { char receivedChar = Serial.read(); if (receivedChar == '\n') { receivedMessage[receivedMessageIndex] = '\0'; // Null-terminate the string receivedMessageIndex = 0; if (strstr(receivedMessage, "#7V") != NULL) { send_data(receivedMessage, " ARDU_RS485_07-09-2023"); } else { send_data(receivedMessage, "?"); } } else { receivedMessage[receivedMessageIndex++] = receivedChar; } } } void setup() { pinMode(DE_Pin, OUTPUT); pinMode(RE_Pin, OUTPUT); digitalWrite(DE_Pin, 0); digitalWrite(RE_Pin, 1); Serial.println("Begin"); attachInterrupt(digitalPinToInterrupt(irqPin), handleIRQ, RISING); } void loop() { get_message(); }