Witam,
piszę ostatnio oprogramowanie do obsługi SIM900 na AtMega644 w C. Potrzebne mi jest tylko połączenie TCP z serwerem. Nie interesują mnie połączenia ani SMS'y (na razie). Generalnie wszystko idzie dobrze, połączenie się zestawia, transmisja idzie w obydwu kierunkach, ale:
Kiedy zostawiam urządzenie do testów na noc (cały czas aktywne połączenie TCP i co minuta zapytanie od serwera do kontrolera) to zauważam dziwny objaw.
Serwer traci połączenie z urządzeniem po kilku godzinach (widzę to w logach aplikacji serwerowej i w wyniku polecenia netstat), jednak moduł SIM900 na komendę CIPSTATUS odpowiada "CONNECT OK". Procesor był zaprogramowany na pytanie SIM900 co pewien czas o status połączenia.
Pomyślałem, że może to przez te zbyt częste pytania o status, SIM900 zgłupiał, więc zmieniłem program tak, aby procesor reagował tylko na komunikaty od SIM900.
I znów coś poszło nie tak. Około godziny 23 serwer przestał "widzieć" urządzenie, a dopiero 3 godziny później SIM900 wysłał do procesora komunikat "+PDP: DEACT".
Moduł SIM900 jest na starcie ustawiany komendami:
ATr
AT
AT+IPR=9600
ATE=0
AT+CREG=0
AT+CMGF=1
AT+CMGDA="DEL ALL"
AT+CNMI=1,1,0,0,0
AT+GSMBUSY=1
AT+CLIP=1
AT+CIPSHUT
AT+CIPMUX=0
Potem następuje sekwencja połączenia:
AT+CSTT="APN","APN_USER","APN_PASS"
AT+CIICR
AT+CIFSR
AT+CIPSTART="server",port
Możliwe że gdzieś pomyliłem się w spisywaniu komend do tego postu, ale zapewniam, że wszystkie działają, po każdej oczekiwana i sprawdzana jest odpowiedź.
Czyli podsumowując: procesor działa, ale moduł SIM900 podłączony do niego fałszywie twierdzi, że jest połączony do serwera.
Czy ktoś może miał taką sytuację? Jak sobie z nią poradzić? Potrzebuję połączenia stałego i niezawodnego.
piszę ostatnio oprogramowanie do obsługi SIM900 na AtMega644 w C. Potrzebne mi jest tylko połączenie TCP z serwerem. Nie interesują mnie połączenia ani SMS'y (na razie). Generalnie wszystko idzie dobrze, połączenie się zestawia, transmisja idzie w obydwu kierunkach, ale:
Kiedy zostawiam urządzenie do testów na noc (cały czas aktywne połączenie TCP i co minuta zapytanie od serwera do kontrolera) to zauważam dziwny objaw.
Serwer traci połączenie z urządzeniem po kilku godzinach (widzę to w logach aplikacji serwerowej i w wyniku polecenia netstat), jednak moduł SIM900 na komendę CIPSTATUS odpowiada "CONNECT OK". Procesor był zaprogramowany na pytanie SIM900 co pewien czas o status połączenia.
Pomyślałem, że może to przez te zbyt częste pytania o status, SIM900 zgłupiał, więc zmieniłem program tak, aby procesor reagował tylko na komunikaty od SIM900.
I znów coś poszło nie tak. Około godziny 23 serwer przestał "widzieć" urządzenie, a dopiero 3 godziny później SIM900 wysłał do procesora komunikat "+PDP: DEACT".
Moduł SIM900 jest na starcie ustawiany komendami:
ATr
AT
AT+IPR=9600
ATE=0
AT+CREG=0
AT+CMGF=1
AT+CMGDA="DEL ALL"
AT+CNMI=1,1,0,0,0
AT+GSMBUSY=1
AT+CLIP=1
AT+CIPSHUT
AT+CIPMUX=0
Potem następuje sekwencja połączenia:
AT+CSTT="APN","APN_USER","APN_PASS"
AT+CIICR
AT+CIFSR
AT+CIPSTART="server",port
Możliwe że gdzieś pomyliłem się w spisywaniu komend do tego postu, ale zapewniam, że wszystkie działają, po każdej oczekiwana i sprawdzana jest odpowiedź.
Czyli podsumowując: procesor działa, ale moduł SIM900 podłączony do niego fałszywie twierdzi, że jest połączony do serwera.
Czy ktoś może miał taką sytuację? Jak sobie z nią poradzić? Potrzebuję połączenia stałego i niezawodnego.
