Я создаю приложение ac #, которое получает информацию от Arduino (нажатия кнопок), а затем переходит на соответствующий веб-сайт в веб-браузере. У меня есть 3 кнопки, которые соответственно печатают 1, 2 и 3 на последовательном мониторе.
После этого, когда нажата программная кнопка, приложение c # считывает номер, отправленный arduino через порт (ReadExisting ()) с портом, являющимся именем моего последовательного порта.
Это работает хорошо, когда я нажимаю кнопку Arduino, мое приложение считывает число и выполняет правильное действие. Тем не менее, я попытался напечатать номер на последовательном мониторе, когда ни одна кнопка не нажата (я пробовал и 0 и 4), но, похоже, это не работает. Последовательный монитор на Arduino действительно показывает число, появляющееся, когда ни одна из кнопок не нажата, но мой c # вылетает при попытке прочитать его.
Сообщение об ошибке, которое я получаю, когда происходит сбой: «входной строки не было вправильный формат "
Соответствующий бит кода c # (текст на голландском, но это не важно):
private void updateBtn_Click(object sender, EventArgs e)
{
message = Convert.ToInt32(port.ReadExisting());
btnLab.Text = Convert.ToString(message);
if (message == 1)
{
MessageBox.Show("Er is drugsafval gedropt in Breda! Klik op alarm voor de locatie en op route voor de weg ernaartoe.");
logBox.Items.Add("Merodelaan Breda," + DateTime.Now);
} else if (message == 2)
{
MessageBox.Show("Er is drugsafval gedropt in Tilburg! Klik op alarm voor de locatie en op route voor de weg ernaartoe.");
logBox.Items.Add("Leijweg Tilburg," + DateTime.Now);
} else if (message == 3)
{
MessageBox.Show("Er is drugsafval gedropt in Breda! Klik op alarm voor de locatie en op route voor de weg ernaartoe.");
logBox.Items.Add("Bergsche Hoevenpad Oss," + DateTime.Now);
}
} else if (message == 0)
{
MessageBox.Show("Er is momenteel geen alarm.");
}
Соответствующий соответствующий код Arduino (для одной из кнопок, длякаждая следующая кнопка абсолютно одинакова):
void loop() {
String input = Serial.readStringUntil('\n');
bredaState = digitalRead(bredaBtn);
tilburgState = digitalRead(tilburgBtn);
ossState = digitalRead(ossBtn);
if (bredaState == LOW)
{
digitalWrite(bredaLed, LOW);
Serial.println("0");
}
else {
Serial.println("1");
lcd.clear();
lcd.print("Alarm:Drugsafval");
lcd.setCursor(0,1);
lcd.print("in Breda!");
bredaState = digitalRead(bredaBtn);
for(int i=0; i<4; i++){
digitalWrite(bredaLed, HIGH);
delay(200);
digitalWrite(bredaLed, LOW);
delay(200);
digitalWrite(bredaLed, HIGH);
}
buzz();
lcd.clear();
lcd.print("Er is momenteel");
lcd.setCursor(0, 1);
lcd.print("geen alarm!");
}