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允许该波特率,但它们可能无法正确发送/接收数据。
在那种情况下,我建议使用Serial115200设备。除非使用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。请帮帮我。