48 lines
1.2 KiB
Arduino
48 lines
1.2 KiB
Arduino
|
|
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();
|
||
|
|
}
|