Добрый день.
Не пойму, что не так делаю, может быть поможет кто.
Вообщем есть у меня RPi3 и gsm модуль m590. GSM модуль подключаю к tx rx портам на RPi3.
Есть небольшой тестовый скрипт:
#!/bin/bash
stty -F /dev/ttyS0 raw -echo -echoe -echo
cat /dev/ttyS0 >> /home/pi/test/111.log &
echo -e -n "AT\r" > /dev/ttyS0
sleep 1s
echo -e -n "AT+CSQ\r" > /dev/ttyS0
sleep 1s
После выполнения скрипта, появляется файл 111.log с содержанием:
AT
OK
AT+CSQ
+CSQ: 28,0
OK
То есть скрипт исполняется, в файл все пишется, при повторном запуске скрипта, в конец файла добавится тоже самое.
Но если взять удалить файл 111.log или просто в скрипте написать 222.log и запустить скрипт повторно, то результат какой-то неправильный получается, теряется часть символов:
A+S
CQ 90
K
Перезагрузка GSM модема не помогает, помогает перезагрузка RPi.
Причем если ловлю этот баг, отключаю от GSM модема tx - rx и закорачиваю, пытаюсь открыть /dev/ttyS0 через minicom, все открывается, но ничего написать не могу, такое ощущение, что ttyS0 весит. Пробую отправить через echo «1234567» > /dev/ttyS0 , часть символов доходит, часть так же теряется..
UPD: Сегодня вместо подключения напрямую к tx-rx портам RPi, подключил tx-rx к конвертеру USB-TTL. Проблема такая же, после удаление 111.log и попытки еще раз скрипт запустить, создается файл, но с прерывистым текстом.
UPD2: Если переподключить конвертер USB-TTL, то minicom снова оживает и скрипт работает, файл создается и выглядит как и должен.
UPD3: Удаляя файл 111.log запуская опять скрипт, первые разы, скрипт не отрабатывается, второй или третий раз тоже, с 4 раза и далее скрипт начинает правильно отрабатываться.. Чертовщина какая-то.
Есть идеи? что тут не так?