Сайт | Скачать | Видео | Wiki

Автор Тема: Чем обрабатывать двоичные данные из(в) COM ? [решено]  (Прочитано 3073 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dim-kut

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 1014
  • Репутация: +41/-0
Делаю устройство, которое висит на последовательном порту и общаться с ним надо двоичными данными. Сначала туда кое-что послать ( выставить регистры ), потом обратно ( данные с АЦП ). Ну и в файл их сложить, график на экране нарисовать, несколько кнопочек прикрутить. И вот, не могу придумать, как попроще в линуксе это изобразить. На Tcl не вытанцовывается - там больше все под текст заточено. Другие скриптовые языки похоже тоже не помогут. В CPP ради этого лезть - из пушки по воробьям. Может бейсик какой взять ... Help.
« Последнее редактирование: 14 Июль 2010, 09:58:30 от dim-kut »
Engineering is the art of making what you want from things you can get.
Мои модули для PRA64fat лежат здесь. Под 64light могут не заработать.
Мой блог - dim-kut.livejournal.com Фонд, которому я доверяю - pomogi.org

Оффлайн Abnormal Terminate(R)

  • Постоялец
  • ***
  • Сообщений: 102
  • Репутация: +6/-0
А юзаный сом-порт присутствует в девайсах: /dev/* особенно в /dev/input ?
Если да, то можно *наверное* просто задействовать в командном режиме или шелл-скрипте как входное устройство...
Сугубое ИМХО.
:) = Ман рулит = (с)

Оффлайн dim-kut

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 1014
  • Репутация: +41/-0
Если да, то можно *наверное* просто задействовать в командном режиме или шелл-скрипте как входное устройство...
Порт присутствует, можно с ним работать конструкциями типа
echo blablabla > /dev/usb/ttyUSB0
Но когда работаешь с микросхемой, обычно требуется передавать ей произвольные двоичные данные, а не только те байты, которые отображаются как символы ASCII и параллельно принимать надо. Может быть в шелле этот вопрос как-то и решается, не знаю.

В Tcl есть встроенные команды binary format и binary scan, которые делают преобразование из текстовой в двоичную строку и обратно. Возможность вроде есть, но мне так и не удалось принять ни одного байта, хотя передача шла отлично. Возможно, это потому что у меня не нормальный com-порт, а мост USB-com на pl2303, с ним не все работает, например не работает setserial.

Меня спасла программка catty ( есть в моем хранилище ) - с ее помощью передаю один двоичный файл и принимаю другой:
./catty -d /dev/usb/ttyUSB0 -b 38400 -r 1 -i ./cmd/r_status_cmd > ./input/status   
Engineering is the art of making what you want from things you can get.
Мои модули для PRA64fat лежат здесь. Под 64light могут не заработать.
Мой блог - dim-kut.livejournal.com Фонд, которому я доверяю - pomogi.org