Arduino Uno + GSM Shield SIM900 TCP-клиент не получает данные

Мне нужно связать Arduino Uno R3 с Tinysine GSM Shield (модуль sim 900) с серверным сокетом NodeJS, используя сокеты TCP / IP. Итак, встроенная система - это TCP-клиент. Мне нужно, чтобы Arduino отправил какое-то сообщение и получил ответ, используя полученные данные, чтобы мигать другим светодиодным индикатором. Сокет tcp работает, и я могу отправить сообщение и обработать его в сокете моего сервера, но не могу получить ответ (socket.write) во встроенном (на самом деле, я получаю некоторые нечеткие символы и символы переменных).

Мой серверный сокет работает нормально, используя Hercules, например клиентский TCP, я мог завершить весь процесс.

Я использую библиотеки SIM900 и InetGSM с AT-командами для TCP-соединения (изначально я не хочу использовать AT-HTTP-соединение, потому что это изменит мою систему).

Как я могу получить разборчивое сообщение от сокета моего сервера? Спасибо


person Luiz Fernando da Silva    schedule 23.09.2015    source источник


Ответы (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!");
    }
}
person Luiz Fernando da Silva    schedule 25.09.2015