извините, что я не ответил ранее. Я проверил это, и оказалось, что в минимальном коде это работало хорошо! Я имею в виду, я могу видеть «RING» на последовательном мониторе сразу после набора номера. Так что это не проблема с оборудованием!
//bare minimum code:
void loop() {
if(serialSIM800.available()){
Serial.write(serialSIM800.read());
}
if(Serial.available()){
serialSIM800.write(Serial.read());
}
}
В моем реальном коде мне нужно сравнить вызывающий номер со списком доверенных. Для этого я сохранил все доверенные номера в списке контактов на сим-карте (с общим префиксом «mytrusted»). Итак, в основном цикле есть оператор if:
while(mySerial.available()){
incomingByte = mySerial.read();
inputString += incomingByte;
}
if (inputString.indexOf("mytrusted") > 0){
isTrusted = 1;
Serial.println("A TRUSTED NUMBER IS CALLING");
}
После добавления этого условия «if» Arduino иногда распознает доверенный номер после 1-го вызова, а иногда после 4-го или 5-го. Я не подозреваю сам оператор if, а предыдущий цикл while, в котором входящие байты объединяются в одну строку.
Есть идеи, что можно улучшить в этом простом коде?