我需要使用TCP / IP套接字将Arduino Uno R3与Tinysine GSM Shield(sim 900模块)通信到NodeJS服务器套接字。因此,嵌入式系统是TCP客户端。我需要Arduino发送一些消息并接收答案,使用收到的数据闪烁不同的collor led。 tcp套接字正在工作,我可以发送消息,并在我的服务器套接字中处理它,但是无法接收嵌入式的答案(socket.write)(实际上,我收到一些模糊和变量字符)。
我的服务器套接字工作正常,使用类似客户端TCP的Hercules,我可以完成整个过程。
我正在使用SIM900和InetGSM库与AT命令进行TCP连接(最初我不想使用AT HTTP连接,因为它会改变我的系统)。
如何从服务器套接字收到清晰的消息?感谢
答案 0 :(得分:1)
我解决了!
当我发送AT + CIPSEND命令时,我收到的是一系列字符,其中包含命令的AT响应和从我的服务器发送的数据。
所以,我需要做的是将它存储在数组中并选择此数组中的数据位置,或者选择正确数组位置的答案,如下例所示。
例如:
//Im waiting for char '1'
//After sending message with AT commands ...
char answer;
for(i = 0; i < 15; i++){ //15 is an random limit value that worked for me, I dont know why
answer = (char)gsm.read();
if(answer == '1'){
Serial.println("I find the answer!");
}
}