由於SoftwareSerial.h默認只接收64字節串行緩衝區,Arduino會將之後接收到的數據丟棄,不滿足業務需求。
以下三種方法是筆者參考網上各種資料總結出來,對於WEMOS D1 R2,筆者只有方法一可行,其他兩個方法僅供參考。
方法一:修改緩衝區宏名(可行)
此方法針對WEMOS D1 R2可行,因爲集成esp8266模塊,該模塊自帶SoftwareSerial,修改SoftwareSerial.h即可!
//SoftwareSerial(int receivePin, int transmitPin, bool inverse_logic = false, unsigned int buffSize = 64);
SoftwareSerial(int receivePin, int transmitPin, bool inverse_logic = false, unsigned int buffSize = 2048);
目錄(僅供參考):C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\SoftwareSerial
方法二:修改SoftwareSerial.h
此方法是Arduino論壇評論看到的,理論上加到程序頭即可,也可以在SoftwareSerial.h中修改。
//#define _SS_MAX_RX_BUFF 64 // RX buffer size
#define _SS_MAX_RX_BUFF 2048 // RX buffer size
目錄(僅供參考):C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\src
方法三:修改緩衝區宏名
此方法是Arduino官方給出的方法,理論上加到程序頭即可,也可以在HardwareSerial.h中修改。請注意如果你使用SoftwareSerial.h此方法一定不行
#define SERIAL_RX_BUFFER_SIZE 2048 //修改串口發送緩衝區大小爲2048
#define SERIAL_TX_BUFFER_SIZE 2048 //修改串口接收緩衝區大小爲2048