APC220 kommunikasjonstest

Målet er å sende en streng fra enhet 1 til enhet 2. Når den er motatt og godtatt av enhets 2 respons sendes tilbake til enhet 1.

Diagram

Kode

Github: https://github.com/kjetilfjellheim/arduino_misc/tree/main/apc220_comtest

Koden under lager to strenger som COMMAND or RESPONSE. COMMAND sendes først fra enhet 1 til enhet 2. Når kommandoen blir mottatt på enhet 2 så responderer den med OK tilbake til enhet 1.

char* COMMAND = "Command\0";
char* RESPONSE = "OK\0";
void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  Serial2.begin(9600);
}

Serial brukes for debugging. Serial 1 er enhet 1 og Serial 2 er enhet 2. Enhet 1 og 2 er som standard satt opp med baud 9600.

if (Serial1.availableForWrite()) {
    Serial1.write(COMMAND);
    Serial1.flush();
    Serial.println("Command sent");
  }

Når enhet 1 er tilgjengelig for å sendes så sender vi «Command\0». Vi bruker \0 for å identifisere når alle data er lest.

 if (Serial2.available()) {
    String received = Serial2.readStringUntil('\0');
    if (received.equals(COMMAND)) {
      Serial.println("Command received");
      Serial2.write(RESPONSE);
      Serial2.flush();
      Serial.println("Response sent");
    }    
  }

Serial 2 leser mottatt streng og sjekker om den er som forventet. Hvis den er det så responderer vi med RESPONSE strengen.

  if (Serial1.available()) {
    String received = Serial1.readStringUntil('\0');
    Serial.println(received);
    if (received.equals(RESPONSE)) {
      Serial.println("Response was received"); 
    }       
  }

Når enhet 1 er tilgjengelig så leser vi respons strengen og sjekker at den er ok.

Resultat