Answers:
该答案列出了4种基本选择:
HardwareSerial
,永远是最好的。只需使用预定义的Serial
变量。在某些Arduinos,有多余HardwareSerial口,叫Serial1
,Serial2
等。纳米只Serial
。
AltSoftSerial
,最好的软件串行库。只允许一个实例,并且必须在输入捕捉引脚之一(Nano的引脚8和9)上使用它。
我NeoSWSerial
是第二好的。它适用于任意两个引脚,但仅适用于波特率9600、19200和38400。
SoftwareSerial
是最糟糕的选择。它可以在任何两个引脚上工作,但是效率很低。它在发送或接收字符的整个过程中都禁用中断,并且不能同时执行两个中断(与所有其他串行选择不同)。这可能会干扰草图的其他部分,其他设备通信或库。
如果可以使用较低的波特率,则可以将调试打印保留在上Serial
,并使用AltSoftSerial
或NeoSWSerial
用于设备。
但是,如果必须使用115200,则唯一可靠的选择是Serial
。尽管AltSoftSerial
并SoftwareSerial
允许该波特率,但它们可能无法正确发送/接收数据。
在那种情况下,我建议使用Serial
115200设备。除非使用ISP,否则必须断开设备才能通过USB上传新草图。
然后将AltSoftSerial
或NeoSWSerial
用于您的调试语句。您需要在选定的引脚上使用TTL串行USB适配器(即FTDI)才能连接到PC。本Serial Monitor
或其他终端仿真器程序会从USB COM端口读取。
NeoICSerial
只需将attachInterrupt
方法添加到AltSoftSerial
。您可能不需要处理中断中的每个字符。只需使用AltSoftSerial
,available()
然后调用,然后read()
如果一个字符已准备好。同样,NeoHWSerial
将相同的attachInterrupt
功能添加到core HardwareSerial
。但是,NeoSWSerial
是完全不同的类(它也具有attachInterrupt
功能)。
key=getKey();
GSM(使用2和3号Arduino Uno引脚)时,我没有收到SMS。请帮帮我。