| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Com порт |
| Автор: study 1.8.2005, 12:03 |
| Привет всем!!! Помогите решить такую задачу. К компьютеру под ОС Linux к Com порту подключен датчик. Мне надо написать прораммку, которая бы посылала бы в Com порт значение и считывала результать, а результат записывать в текстовый файл. Можете помочь... Заранее спасибо... |
| Автор: chaos 1.8.2005, 12:28 | ||
вот тебе не большой пример:
|
| Автор: study 1.8.2005, 13:09 |
| Спасибо chaos, а можешь пояснить, /dev/cua0 - это имя com порта? |
| Автор: chaos 1.8.2005, 13:39 | ||
да, но это у меня, у себя ты должен подставить своё имя |
| Автор: study 1.8.2005, 13:57 |
| Хорошо, а вот я читал, что в com порт надо устанавливать скорость, биты данных, четность и стоповые биты, где здесь эти параметры задавать? |
| Автор: chaos 1.8.2005, 13:58 |
| тютю |
| Автор: study 1.8.2005, 14:11 |
| Я сам точно не знаю, просто смотрел какой-то класс для Visual C++, а там эти данные вводились... Так нужны эти данные или нет? |
| Автор: chaos 1.8.2005, 14:18 |
| нет, так все будет нормально работать, во всяком случае я всегда так делаю! Добавлено @ 14:19 если не получиться пиши |
| Автор: study 1.8.2005, 14:24 |
| Хорошо, спасибо большое, попробую, надеюсь получиться? |
| Автор: Airanius 24.12.2005, 09:55 | ||
И всё-таки... Как читать/писать в порт я разобрался и сам! Подскажите плиз начинаюшему, как изменить параметры порта (скорость, контроль чётность, таймауты, etc.) заранее спасибо |
| Автор: scapig 24.12.2005, 15:31 |
| Да.. мне тоже интересно, как это все проделывать в линухе, т.к. в винде это делается элементарно... Это понятно, что работать будет нормально, но как быть если надо , чтобы данные передавались с определенной скоростью...., а не от балды... Как конфигурить??? |
| Автор: GrayCardinal 24.12.2005, 17:30 | ||
Я сегодня добрый, минусовать не буду. Но просьба больше не упоминать в Линуховском разделе это нехорошее слово да и еще в таком виде $ man tcsetattr |
| Автор: Бонифаций 25.12.2005, 12:01 |
| man stty |
| Автор: Airanius 5.1.2006, 23:10 |
| Serial Programming Guide for POSIX Operating Systems.pdf - полное и подробное описание работы с Последовательным портом(ищите поисковиками) |
| Автор: Guest 12.1.2006, 02:58 |
| http://www.opennet.ru/docs/RUS/serial_guide/ http://www.opennet.ru/base/dev/rs232_prog.txt.html |
| Автор: mik19 20.6.2008, 17:52 |
| Доброго всем дня, у меня тоже возникла подобная задача, но мне не просто считать данные нужно, а немного посложнее мне нужно его мониторить, и в случае изменений, послать команду в шел (при определенных условиях). Другими словами мне нужен демон, который будет постоянно мониторить СОМ порт, и при поступлении данных, скажем, посылать в шел ансишный код буквы F. |
| Автор: chaos 23.6.2008, 12:54 |
| самый простой вариант настроить таймаут на чтение и в отдельно потоке постоянно пытаться проичтать из порта |
| Автор: MAKCim 23.6.2008, 13:23 |
| select()/poll()/epoll() |
| Автор: Tiffany 7.7.2008, 08:17 | ||
Вот тут нашла в своей проге кусочек, вроде то, что ты просил (если я прально поняла). Тока он на QT, но не страшно - переделать недолго =)
После этих манипуляций в "buf" будут данные с порта, делай с ними что хошь. А ваще читай man select и man termios (настройки порта) |
| Автор: nworm 27.9.2008, 00:39 |
| Тут возникла задача. При возникновении прерыванию от lpt порта передавать данные на com-порт прям из драйвера lpt-шного прерывания. Копаюсь в разных примерах драйверов. Можно в этом случае безнаказанно stdio.h подключить к драйверу прерывания от lpt? |
| Автор: MAKCim 27.9.2008, 10:48 | ||
нет |
| Автор: nworm 27.9.2008, 11:56 |
| А может что-нибудь ещё посоветуете? |
| Автор: nworm 3.10.2008, 00:23 | ||
Что-то я нашёл.
В ответ на последнюю строку (unsigned int ccflag = *(tty->termios->c_cflag);) мне выдаётся сообщение: /home/man/model2_my/lpt_interrupt/skeleton.c: In function ‘skeleton_kernel_initport’: /home/man/model2_my/lpt_interrupt/skeleton.c:63: error: dereferencing pointer to incomplete type Никто не знает, что с этим делать? |