Интро:
- есть некоторая плата на ARM-e, с линуксом собранным на основе идеологии сборки openembedded
Вариант платы #1 - на плате распаяны два модема GSM/CDMA оба AnyData (выбор, вкл, выкл нужного модема через gpio)
Вариант платы #1 - на плате распаян GSM модем Wavecom
Общение в обоих случаях идет через последовательный порт /dev/ttySAC0
Есть некая утилитка do_at_cmd, которая выводит на экран принятый аргумент-команду, пишет команду в последовательный порт и ждет оттуда ответ который выводит в следующем виде «got '%s'».
Треубется — принимать на плату SMS-сообщения, с последующей их обработкой на стороне ещё одого приложения.
Лог для варианта 1 (во втором варианте все нормально):
root@pegasus:~# do_at_cmd "ATZ"
ATZ
got `ATZ___OK__'
root@pegasus:~# do_at_cmd "ATQ0"
ATQ0
got `ATQ0___OK__'
root@pegasus:~# do_at_cmd "AT+CMEE=1"
AT+CMEE=1
got `AT+CMEE=1___OK__'
root@pegasus:~# do_at_cmd "AT+CREG=1"
AT+CREG=1
got `AT+CREG=1___OK__'
root@pegasus:~# do_at_cmd "AT+COPS?"
AT+COPS?
got `AT+COPS?___+COPS: 0,0,"MegaFon RUS",2____OK__'
root@pegasus:~# do_at_cmd "AT+CSMS?"
AT+CSMS?
got `AT+CSMS?___+CSMS: 0,1,1,1____OK__'
root@pegasus:~# do_at_cmd "AT+CMGF=0"
AT+CMGF=0
got `AT+CMGF=0___OK__'
root@pegasus:~# do_at_cmd "AT+CNMI=2,2,2,1,0"
AT+CNMI=2,2,2,1,0
got `AT+CNMI=2,2,2,1,0___+CMS ERROR: 303__'
root@pegasus:~# do_at_cmd "AT+CNMI=2,1,0,0,0"
AT+CNMI=2,1,0,0,0
got `AT+CNMI=2,1,0,0,0_'
в ответ на команду AT+CNMI приходит неполная строка, и после этого модем вообще не отвечает на команды. Например, в ответ на «AT» - молчание. СМС-до него также не доходят (подозреваю что модем подвисает).
такое же поведение наблюдается при отсылке ему команды «AT+IFC=2,2»
может кто уже сталкивался с подобной проблемой?