|
Модераторы: xvr |
|
hente |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 20.3.2009 Где: Томск Репутация: нет Всего: нет |
Добрый день уважаемые...
Проблема в следующем: не могу записать на порт RS-485 под Linux пишу прогу:
Под виндой смотрю данные из программы Terminal. так вот write работает нармально сообщения уходят, а вот read ну никак не хочет:((( даже не знаю чо делать.... По идее надо переключить режим чтение запись а как это сделать? Гугля ничего путевого не дала.... а сам не знаю куда смотреть... За ранее благодарен)за ранее спасибо... --------------------
долой быдло кодеров!!! |
|||
|
||||
GrayCardinal |
|
||||
Фигасе Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
Извини, но лично я не врубаюсь, как оно должно "работать" Добавлено через 2 минуты и 36 секунд
меня убило Это сообщение отредактировал(а) GrayCardinal - 20.3.2009, 14:53 |
||||
|
|||||
hente |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 20.3.2009 Где: Томск Репутация: нет Всего: нет |
Сорри брал не из исходника по этому синт. ошибки ...
--------------------
долой быдло кодеров!!! |
|||
|
||||
GrayCardinal |
|
|||
Фигасе Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
hente,
После read воткни perror и скажи результат... |
|||
|
||||
hente |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 20.3.2009 Где: Томск Репутация: нет Всего: нет |
На Read просто останавливается и никаких ошибок нет...
Я так понял идет ожидание появления данных порте или как... Если поставить в опен Open флаг O_NOCTTY тогда Read возвращает 0 Это сообщение отредактировал(а) hente - 20.3.2009, 16:06 --------------------
долой быдло кодеров!!! |
|||
|
||||
kurtis |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 65 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
А как у Вас происходит переключение режима Прием/Передача (направление передачи) ? Обычно схематически RS-485 представляет собой 2 линии связи и 3-я линия для управления потоком передачи. Возможно для переключения режима нужно "дергать" пин DTS ком-порта. А как это делается в драйвере Linux это уже читайте документацию вроде Serial HOW-TO или что-то подобное.
|
|||
|
||||
hente |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 20.3.2009 Где: Томск Репутация: нет Всего: нет |
Да вот в том то и проблема что никак...
В документациях в примерах никакого переключателя я так и не нашел.. Да и сам пример откуда брал там тож ничего такого нет, просто подряд идут write и read. Щас еще раз попробую прогуглить мож чо полуиться.... но если есть варианты решения проблемы то буду очень рад, да и так спс )) Добавлено через 59 секунд к стате как я понял то у RS485 всего 2 канала а не 3 --------------------
долой быдло кодеров!!! |
|||
|
||||
kurtis |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 65 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
Ну как бы интерфейс считается 2-х проводным, но по факту обычно еще требуется иметь общие земляные потенциалы между абонентами, так что земля может считаться 3-м проводом, но это на важно, я говорил немного не про это. В RS-485 ключевым моментом является переключения направление передачи. В RS485 все устройства делятся на master и slave. Соответственно мастер передает, а слейв слушает и если его спросят, он отвечает. Для избежания мусора на линии используется переключение направление передачи, т.к. мастер изначально становиться на передачу, слейвы становятся на прием и слушают свой адрес для ответа, когда мастер заканчивает передачу, он становиться на прием и начинает слушать кто и что ответит. Слейв который услышал свой адрес, становиться на передачу и отвечает, после ответа он снова становиться на прием, а мастер становиться на передачу. Управление направлением передачи осуществляется программно. Как вы работаете с RS-485 ? Через КОМ-порт (RS-232) или у вас какая-то плата расширения (USB, PCI) ? Что такое /dev/ttyS1 ? Покажите вывод "setserial -a /det/ttyS1" |
|||
|
||||
hente |
|
||||||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 20.3.2009 Где: Томск Репутация: нет Всего: нет |
на одноплатной ЭВМ (на физическом уровне)джемперами COM2 выставил на RS485
принцип работы то я понял а вот как программно работать хз. к стате если воспользоваться утилиткой cat, то ситация такая: при вводе
то на другом конце RS485 (под виндой) данные приходят без проблем все в норме если ввести
то на другом конце RS485 (под виндой) данные отсылая под Linux ничего не приходит... в документациях никак не могу найти переключение режима чтения записи
к стате под виндой я уже говорил использую Terminal прогу и там соединение идет через переходник USB->RS485 (+дрова там всяки) /dev/ttyS1 - это устройство Это сообщение отредактировал(а) hente - 21.3.2009, 07:26 --------------------
долой быдло кодеров!!! |
||||||
|
|||||||
hente |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 20.3.2009 Где: Томск Репутация: нет Всего: нет |
Люди добрые так может кто-нибуть посоветует что либо? уже 4 дня на одном месте топчусь не знаю что делать.... Поисковики ваще бред выдают .... Может есть какие-либо другие технологии...
Тут подкинули идею: отслеживать прерывания ну и читать определенные регистры... А вот как отловить эти прервания, бог его знает... Хотя всяко данная проблема решается очень легко а вот по какому пути идти.... --------------------
долой быдло кодеров!!! |
|||
|
||||
xvr |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Марку этой 'одноплатной ЭВМ' - в студию!
|
||||
|
|||||
hente |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 20.3.2009 Где: Томск Репутация: нет Всего: нет |
PCE-5120G2
terminal автоматом стоит на приеме...т.е. надо разобраться только с линуксом... К стате многомерными пробами и ошибками нашел такую чтуку как RTS (под линуксом) вроде данные начали отправляться и приниматься вот тока не полностью...)) пару байтов теряется не могу понять в чом дело...но все это дело пока работает нга низком уровне (функции inb,oub,insb,uotsb) а хотелось бы просто работать с функциями write read... --------------------
долой быдло кодеров!!! |
||||
|
|||||
xvr |
|
||||||||||||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Хм, действительно не описанно, как переключать направление
Второй вариант - переключение ногой в интерфейсе RS232 (RTS в вашем случае). Недостаток - надо ловить окончание передачи (физическое) байтов из RS232 и только потом переключаться на прием. Дело усложняется тем, что передаваемые данные буферизуются в железе (FIFO). Дело еще более усложняется тем, что у чипа RS232 нет прерывания по опустошению передающего регистра (IMHO) (есть только по готовности принять следующий байт для передачи, что не одно и тоже). Так что для отлова момента переключения RTS надо непрерывно читать регистр состояния передатчика
Кстати, последствия полудуплекса RS485 - одновременный прием и передача невозможны, только по очереди. |
||||||||||||||
|
|||||||||||||||
hente |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 20.3.2009 Где: Томск Репутация: нет Всего: нет |
xvr - на конце у меня собственно не rs232 а переходник USB->RS485 (все эт под win) а что такое CRS? переключать то я научился а вот read все равно колом встает при отправке не зависимо в каком положении RTS cстоит не подскажете в чем дело? --------------------
долой быдло кодеров!!! |
|||
|
||||
xvr |
|
||||||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Это не имеет значения - там такой же автосвитчер для переключения направления (ну может чуть поумнее и делать паузы после отправки ему не надо)
|
||||||||
|
|||||||||
Правила форума "С/С++: Программирование под 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. |