2015-05-13 6 views
1

Я работаю над встроенным Linux (построен через buildroot, а не мной, но у меня есть доступ). Я подключаю сотовый модем через USB, который создает ttyACM0 (и еще несколько ttyACMx). Я использую pppd для запуска модема - и он работает нормально.fopen() не работает/dev/ttyACM0

Что я пытаюсь сделать, обновляет APN в chatscript (перед запуском pppd), задав «AT + CIMI» и проанализировав номер сети в ответе.

Я пробовал atinout, небольшую программу на языке c, которая работает на моем ноутбуке (Ubuntu) и на другой встроенной Linux, но не работает на этой платформе. Он использует fopen(). Я попытался выявить проблему и обнаружил, что fopen() терпит неудачу с errno 5 (Ошибка ввода/вывода). Я изменил, чтобы открыть(), и это сработало !!! Я могу отправить запросы AT и просмотреть полученные ответы.

Итак - в чем дело?

*** PS -/DEV монтируется как TMPFS, он работает BusyBox mdev (как проставление в devtmpfs по udev, на моем ноутбуке).

Спасибо.

+0

Далее можно исследовать путем сравнения 'strace' выход версии с' FOPEN() 'и' один с открытым() '; возможно, 'open()' вызывается с разными _flags_. – Armali

ответ

0

В конце концов я использовал API последовательного порта с фреймворком Qt (это Qt приложение "). Он использует базовый API open()/write().