Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C HTTPREAD缺少Arduino和SIM900的字符_C_Arduino_Sim900 - Fatal编程技术网

C HTTPREAD缺少Arduino和SIM900的字符

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

我的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

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,但不适用于您的网站。