C HTTPREAD缺少Arduino和SIM900的字符
我的Arduino使用的是SIM900模块,它缺少字符,尽管它返回的字符数是预期的。我在AT+SAPBR=1,1和AT+HTTPINIT上有错误,所以我不确定这是否是原因。我也不知道如何解决这些问题C HTTPREAD缺少Arduino和SIM900的字符,c,arduino,sim900,C,Arduino,Sim900,我的Arduino使用的是SIM900模块,它缺少字符,尽管它返回的字符数是预期的。我在AT+SAPBR=1,1和AT+HTTPINIT上有错误,所以我不确定这是否是原因。我也不知道如何解决这些问题 AT+CGATT? +CGATT: 1 OK AT+CGATT=1 OK AT+SAPBR=3,1,"CONTYPE","GPRS" OK AT+SAPBR=3,1,"APN","mobile.o2.co.uk" OK AT+SAPBR=1,1 ERROR AT+HTTPINIT ER
AT+CGATT?
+CGATT: 1
OK
AT+CGATT=1
OK
AT+SAPBR=3,1,"CONTYPE","GPRS"
OK
AT+SAPBR=3,1,"APN","mobile.o2.co.uk"
OK
AT+SAPBR=1,1
ERROR
AT+HTTPINIT
ERROR
AT+HTTPPARA="URL","http://www.xxxxxxxxxxx.com/temp/"
OK
AT+HTTPACTION=0
OK
+HTTPACTION:1,200,56
AT+HTTPREAD
+HTTPREAD:56
{"type":"dOK
输入字符时读取字符的My函数:
void whileAvailable() {
char data;
while (SIM900.available()) {
data=SIM900.read();
if (data>0) Serial.print(data);
}
}
我相信该函数可以很好地读取字符,但我不确定为什么它无法找到其余字符这是由于您使用的arduino uno或mega的串行缓冲区溢出造成的。增加缓冲区大小,使其能够容纳更多字节;并且可以显示这些数据。这是由于您使用的arduino uno或mega的串行缓冲区溢出造成的。增加缓冲区大小,使其能够容纳更多字节;并且可以显示这些数据。您需要在+SAPBR和+HTTPINIT模式下关机 试试这个:AT+SAPBR=0,1
AT+HTTPTERM
您需要在+SAPBR和+HTTPINIT模式下关闭 试试这个:AT+SAPBR=0,1
AT+HTTPTERM
这并不能回答这个问题。一旦你有足够的钱,你将能够;相反@MLavoie这是一个答案,也是目前唯一的答案,因为我觉得缓冲区大小确实是个问题。然而,改变这一点并不是那么简单,因为它被烘焙到UART库中,所以@user3661027您能提供更多的细节或一个如何做到这一点的示例吗?是的,这是可能的。转到您的安装文件夹C:\Program Files(x86)\Arduino\hardware\Arduino\avr\cores\Arduino,并将HardWareSerial.h中的串行\u TX\u BUFFER\u大小更改为128,串行\u RX\u BUFFER\u大小更改为128。这是Serial.print()中缺少字符的解决方案。这并没有提供问题的答案。一旦你有足够的钱,你将能够;相反@MLavoie这是一个答案,也是目前唯一的答案,因为我觉得缓冲区大小确实是个问题。然而,改变这一点并不是那么简单,因为它被烘焙到UART库中,所以@user3661027您能提供更多的细节或一个如何做到这一点的示例吗?是的,这是可能的。转到您的安装文件夹C:\Program Files(x86)\Arduino\hardware\Arduino\avr\cores\Arduino,并将HardWareSerial.h中的串行\u TX\u BUFFER\u大小更改为128,串行\u RX\u BUFFER\u大小更改为128。这是Serial.print()中缺少字符的解决方案。虽然这可能是缓冲区溢出,但这不是唯一的原因。响应请求的网站也会导致响应(响应头)。以上代码很可能适用于google.com.hk,但不适用于您的网站。虽然这可能是缓冲区溢出,但这不是唯一的原因。响应请求的网站也会导致响应(响应头)。以上代码很可能适用于google.com.hk,但不适用于您的网站。