функция Serial.available()
Добавлено: 06 фев 2018, 16:13
Здравствуйте!
1. Я использую для приема-передачи канал 1 (RX1, TX1) Ардуино Мега 2560.
2. В моей тестовой программе, когда на Ардуино поступает строка, он ее принимает и затем правильно передает, но после передачи строки продолжает передавать без остановки разную чушь. Получается, что как бы нет признака строки, хотя я вставлял разные коды признака. Код - #13, код - '\n', код - '\0'.
Код программы:
char b1;
int k = 1000;
int ZapPin = 8;
//----------------------------------------------------------------------
void setup() {
pinMode(ZapPin, OUTPUT); // приём - LOW, передача - HIGH
Serial1.begin(19200);
}
//----------------------------------------------------------------------
void loop() {
if (Serial1.available() > 0) {
delay(k);
k = 0;
b1 = (char) Serial1.read();
if (b1 != '\0') {
digitalWrite(ZapPin, HIGH);
Serial1.print("Kod = ");
delay(2);
Serial1.println(b1);
delay(2);
digitalWrite(ZapPin, LOW);
delay(10);
}
if (b1 == '\0') {
Serial1.println("Konec");
delay(2);
digitalWrite(ZapPin, LOW);
delay(10);
}
}
}
Вопрос: подскажите, что не правильно я сделал?
1. Я использую для приема-передачи канал 1 (RX1, TX1) Ардуино Мега 2560.
2. В моей тестовой программе, когда на Ардуино поступает строка, он ее принимает и затем правильно передает, но после передачи строки продолжает передавать без остановки разную чушь. Получается, что как бы нет признака строки, хотя я вставлял разные коды признака. Код - #13, код - '\n', код - '\0'.
Код программы:
char b1;
int k = 1000;
int ZapPin = 8;
//----------------------------------------------------------------------
void setup() {
pinMode(ZapPin, OUTPUT); // приём - LOW, передача - HIGH
Serial1.begin(19200);
}
//----------------------------------------------------------------------
void loop() {
if (Serial1.available() > 0) {
delay(k);
k = 0;
b1 = (char) Serial1.read();
if (b1 != '\0') {
digitalWrite(ZapPin, HIGH);
Serial1.print("Kod = ");
delay(2);
Serial1.println(b1);
delay(2);
digitalWrite(ZapPin, LOW);
delay(10);
}
if (b1 == '\0') {
Serial1.println("Konec");
delay(2);
digitalWrite(ZapPin, LOW);
delay(10);
}
}
}
Вопрос: подскажите, что не правильно я сделал?