|
Модераторы: xvr |
|
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
На эти грабли уже наступали в соседней ветке (в другом разделе, правда). 14 байт - размер аппаратного FIFO у порта. Остальные байты просто еще не успели прийти. Читайте read'ом в цикле, пока не наберется сколько надо. Еще можно настроить timeout'ы приема символов (не знаю, где это настраивается в Linux, ищите) |
|||
|
||||
Oligarch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 8.8.2007 Репутация: нет Всего: нет |
спасибо.
|
|||
|
||||
Oligarch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 8.8.2007 Репутация: нет Всего: нет |
v cikle eto ponyatno. Prosto mne ydobnee kogda potok, v kotorom budet vipolnyat'sya etot kod, budet gdat' priema vsego paketa, kotoryi ochen' dlinnui. A v to vremya poka on gdet, drygie potoki bydyt vipolnyat'sya. Ya ychitivay eto, potomy chto proga dolgna rabotat' na controllere ARM9 (200MHz), poetomy kipeshy za bistrodeistvie i proizvoditel'nos't.
Ya ge vistavil time-out: termios_struct.c_cc[VMIN]=0; termios_struct.c_cc[VTIME]=1; eto oznachaet, chto read() budet otschitivat' 100ms dlya kagdogo vhodyashego simvola, i kak tol'ko dlya kakogo nibud' simvola time_out isteket, to read() vozvratit prochitannie simvoli. Eto tak ved'? moget vse taki kak to mogno bez cikla i bez vremennoi zadergki megdy zapis'y i chteniem oboitis'? |
|||
|
||||
xvr |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Нет
|
||||
|
|||||
Oligarch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 8.8.2007 Репутация: нет Всего: нет |
Как там дела с переключением приема/передачи RS-485 под линуксом? Не решил еще? Если решил, вышли код.
у меня отладочная плата с микроконтроллером AT91SAM9260 (линукс вшит во флэш), её UASRT'ы могут работать в режиме RS-485. Переключение в этот режим происходит выставлением определенного бита в управляющем регистре порта. В этом режиме контроллер автоматически дёргает ногой RTS, которая запаяна на управляющий вход управления приемом/передачей схемы RS-485 интерфейса. И всё бы хорошо, но как из под линукса достучаться до этого управляющего регистра и выставить порт в режим RS-485. Либо можно как то программно дёргать этой ногой RST? опять же будет неизвестно все ли данные отосланы перед выставлением интерфейса на прием.... Это сообщение отредактировал(а) Oligarch - 27.4.2009, 22:02 |
|||
|
||||
hente |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 20.3.2009 Где: Томск Репутация: нет Всего: нет |
Для начала чтобы из ком порта сделать RS485 необходимо выставить джампера на плате(в соответствии с документацией на плату)
Далее 2 пути: 1) Программный, тогда тебе надо будет удостовериться что стоят драйвера(либо при необходимости поставить их), и используешь стандартные функции Read/write (я делал именно так) 2)Аппаратный тут либо ты используешь функцию ioctl либо явно через регистры выставляешь то что те надо ща поищу доку к регистрам ... Это сообщение отредактировал(а) hente - 30.4.2009, 10:58 --------------------
долой быдло кодеров!!! |
|||
|
||||
demon051 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 26.7.2011 Репутация: нет Всего: нет |
для примера
Это сообщение отредактировал(а) demon051 - 20.12.2019, 12:53 |
|||
|
||||
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |