![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
study |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 20.9.2004 Репутация: нет Всего: нет |
Привет всем!!!
Помогите решить такую задачу. К компьютеру под ОС Linux к Com порту подключен датчик. Мне надо написать прораммку, которая бы посылала бы в Com порт значение и считывала результать, а результат записывать в текстовый файл. Можете помочь... Заранее спасибо... |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
вот тебе не большой пример:
Это сообщение отредактировал(а) chaos - 1.8.2005, 12:46 |
|||
|
||||
study |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 20.9.2004 Репутация: нет Всего: нет |
Спасибо chaos, а можешь пояснить, /dev/cua0 - это имя com порта?
|
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
да, но это у меня, у себя ты должен подставить своё имя |
|||
|
||||
study |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 20.9.2004 Репутация: нет Всего: нет |
Хорошо, а вот я читал, что в com порт надо устанавливать скорость, биты данных, четность и стоповые биты, где здесь эти параметры задавать?
|
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
тютю
![]() |
|||
|
||||
study |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 20.9.2004 Репутация: нет Всего: нет |
Я сам точно не знаю, просто смотрел какой-то класс для Visual C++, а там эти данные вводились...
Так нужны эти данные или нет? ![]() |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
нет, так все будет нормально работать, во всяком случае я всегда так делаю!
Добавлено @ 14:19 если не получиться пиши |
|||
|
||||
study |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 20.9.2004 Репутация: нет Всего: нет |
Хорошо, спасибо большое, попробую, надеюсь получиться?
![]() |
|||
|
||||
Airanius |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.11.2005 Репутация: нет Всего: нет |
И всё-таки... Как читать/писать в порт я разобрался и сам! Подскажите плиз начинаюшему, как изменить параметры порта (скорость, контроль чётность, таймауты, etc.) заранее спасибо |
|||
|
||||
scapig |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 8.11.2005 Репутация: нет Всего: 2 |
Да.. мне тоже интересно, как это все проделывать в линухе, т.к. в винде это делается элементарно...
![]() Это понятно, что работать будет нормально, но как быть если надо , чтобы данные передавались с определенной скоростью...., а не от балды... Как конфигурить??? Это сообщение отредактировал(а) scapig - 24.12.2005, 15:34 |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
Я сегодня добрый, минусовать не буду. Но просьба больше не упоминать в Линуховском разделе это нехорошее слово да и еще в таком виде ![]() $ man tcsetattr |
|||
|
||||
Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: 1 Всего: 40 |
man stty
-------------------- Бонифаций. |
|||
|
||||
Airanius |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.11.2005 Репутация: нет Всего: нет |
Serial Programming Guide for POSIX Operating Systems.pdf - полное и подробное описание работы с Последовательным портом(ищите поисковиками)
|
|||
|
||||
Guest |
|
|||
Unregistered |
||||
|
||||
mik19 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 30.11.2007 Репутация: нет Всего: нет |
Доброго всем дня, у меня тоже возникла подобная задача, но мне не просто считать данные нужно, а немного посложнее мне нужно его мониторить, и в случае изменений, послать команду в шел (при определенных условиях). Другими словами мне нужен демон, который будет постоянно мониторить СОМ порт, и при поступлении данных, скажем, посылать в шел ансишный код буквы F.
|
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
самый простой вариант настроить таймаут на чтение и в отдельно потоке постоянно пытаться проичтать из порта
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
select()/poll()/epoll()
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Все эти вещи нужно вводить (DCB, COMMSTATE etc.), но только для Windows, чтобы система разрешила работать с COM портом, как нам надо. В линуксе этих вещей в принципе нет, т.к. порт по сути - папка/файл. Если попробовать не просто через fopen, а через socket поработать, то может быть, там что-то как-то и придется куда-то указывать. Правда, не пробовал. У меня в либе fopen висит...
Просто тайм-аут может не прокатить. Все зависит какой девайс сидит на порте, и по какому протоколу он работает RS-232, 485, т.к. в этом случае могут быть косяки из-за того, что, дисикнт возникает, короче смещение окна чтения. |
||||
|
|||||
Tiffany |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 23.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Вот тут нашла в своей проге кусочек, вроде то, что ты просил (если я прально поняла). Тока он на QT, но не страшно - переделать недолго =)
После этих манипуляций в "buf" будут данные с порта, делай с ними что хошь. А ваще читай man select и man termios (настройки порта) |
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: нет Всего: 8 |
Тут возникла задача.
При возникновении прерыванию от lpt порта передавать данные на com-порт прям из драйвера lpt-шного прерывания. Копаюсь в разных примерах драйверов. ![]() Можно в этом случае безнаказанно stdio.h подключить к драйверу прерывания от lpt? |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
нет -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: нет Всего: 8 |
А может что-нибудь ещё посоветуете?
|
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: нет Всего: 8 |
Что-то я нашёл.
В ответ на последнюю строку (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 Никто не знает, что с этим делать? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |