我正在编写一个小型测试程序,该程序尝试serial.write()
在 ISR 中执行随后的 serial.read()。该代码最终将用于提示外部 GSM 屏蔽定期发送 SMS。
ISR(TIMER2_OVF_vect) {
Serial.println("AT+CMGS=\"0123456789\""); // Tell Sim900 To prepare sms to number 01...
while(Serial.read()!='>'); // Wait for Sim900 to respond
Serial.print("A text message"); // the SMS body
Serial.write(0x1A); //Confirm send instruction
Serial.write(0x0D);
Serial.write(0x0A);
}
}
经过大量测试后,我发现在Serial.read()
ISR 中无法读取实时串行提示符,而是只会读取在触发 ISR 之前缓冲的任何输入。
有没有办法解决?
我找到的唯一解决方案是将此代码放在 mainloop()
中。但我想使用定时器中断发送短信。
谢谢