|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 8
|
||||||
Не работает драйвер для работы приема/передачи по ком порту24.06.2011, 15:40. Показов 4471. Ответов 14
Метки нет (Все метки)
Господа, прошу совета или помощи. Который день мучаюсь, все никак не решу проблемку...
Суть дела - пишу драйвер для работы приема/передачи по ком порту. Вот исходник:
0
|
||||||
| 24.06.2011, 15:40 | |
|
Ответы с готовыми решениями:
14
MIDI, FT232, драйвер ком-миди от Roland. Не работает. Использование DLL для приема-передачи данных в разных приложениях Определения скорости передачи и приема по сети для процесса в Windows |
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 24.06.2011, 20:32 | |
|
Стесняюсь спросить... А там точно есть что читать?
0
|
|
|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 8
|
|
| 25.06.2011, 01:08 [ТС] | |
|
Вообще, честно говоря, если б не было, то в любом случае возвращалось бы 0...
Ну а вообще стоит заглушка для проверки работоспособности, я думаю было бы глупо публиковать сюда, если бы дело было в этом ![]() Мне не понятно почему порт на запись работает, флаги устанавливаются, а на чтение не хочет... Просто может кто-то кто сталкивался поможет, а то честно уже прям печаль берет...
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||
| 25.06.2011, 10:06 | ||
|
Заглушка это железка? А скажем cu или tip с ней прекрасно работают?
0
|
||
|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 8
|
|
| 25.06.2011, 15:39 [ТС] | |
|
Если я правильно понимаю, если стоит флаг nonblock, то собственно как раз и должен возвращаться 0, если никаких байтов прочитано не было... но уж точно не -1 и порт временно недоступен, разве нет?
Проблема-то не в том, что байты не приходят, а в том, что порт при наличии nonblock все равно временно недоступен для чтения... P.S: если я в чем-то глубоко заблуждаюсь, прошу разъяснить моменты, буду очень благодарен... P.P.S: по существу заглушка спаяна для теста приема-передачи, она отлично работает с такими программами ... хотя в принципе для проверки этого кода должно быть вполне достаточно соединить 2 и 3 pin...
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 25.06.2011, 17:47 | |
|
Заблуждаетесь, глубоко...
с O_NONBLOCK read() как раз вернет -1 и EAGAIN если читать нечего. 0 это EOF (в не зависимости от того установлен O_NONBLOCK или нет) и если не ошибаюсь в случае заглушки 0 там просто не удивить т.к. DCD всегда присутствует. Во общем просто попробуйте сделать poll/select перед чтением/записью или уберите O_NONBLOCK
1
|
|
|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 8
|
|
| 27.06.2011, 00:47 [ТС] | |
|
ладно, спасибо что уделили время...
Просто странно - запись ведь проходит, по идее ведь есть что считывать
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||
| 27.06.2011, 09:39 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 8
|
|
| 27.06.2011, 13:05 [ТС] | |
|
Я просто если честно, в отладчике смотрю буфер, значение n_write, как раз 5 на n_write и буферу передалось Hello.
P.S: а нет ли у вас случаем какой-нибудь шпаргалки по poll? А то нормальную документацию я не нашел, а сам не так давно начал со всем этим работать, пока куча непонятного...
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||||||
| 27.06.2011, 13:51 | ||||||
|
Кроме man poll ничего в голову не приходит...
0
|
||||||
|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 8
|
||||||
| 28.06.2011, 01:26 [ТС] | ||||||
|
бррр... результаты все равно не радуют..
при FNDELAY -1 port temp unavaible, при fcntl(fd, F_SETFL,0) виснет на чтении...Добавлено через 2 минуты Если не сложно кому-нибудь, проверьте у себя плз, может у меня с машиной что-то не то... пробовал канонический ввод, raw mode, все равно ничего нет...
0
|
||||||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 28.06.2011, 15:43 | |
|
Вы уж определитесь ко второй странице чего желаете...
Канонический режим: read()/poll(POLLIN) будет спать вечно, т.к. в вашем Hello нет \n/EOF/EOL. Не канонический режим: 1. O_NONBLOCK не установлен - работать будут VMIN(у вас 1байт) и VTIME(у вас 1сек) следующим образом: read спит пока не появиться VMIN байт, как только в буфере накопилось VMIN байт данных, запускается таймер VTIME, если по истечении VTIME больше ничего не пришло, то read вернет прочитанное, иначе таймер перезапускается. 2. O_NONBLOCK установлен - read вернет прочитанное либо -1. ЗЫ: poll() в качестве таймаута перед write() прикольно...
0
|
|
|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 8
|
||||||
| 28.06.2011, 17:08 [ТС] | ||||||
|
сделал вроде все как вы сказали, все равно -1
, read source temporarily unavaible...
0
|
||||||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 28.06.2011, 17:33 | |
|
Вы уж простите, но такой фигни я не говорил... Пытайтесь хотя бы капельку понимать что вы пишите в своей программе.
Ну вот объясните мне, какого хрена сначала poll() незнамо чего, а только потом инициализация структуры??? Зачем делать fcntl(fd, F_SETFL, O_NONBLOCK); если файл уже открыт с O_NONBLOCK??? Для чего вы ставите ECHOE и прочие флаги??? Нафига сохранять настройки порта если они никогда не восстанавливаются в программе? Что по вашему выведет printf(buffer); если произойдет чудо и прога заработает? И в конце концов я уже 2 раза повторил, что канонический режим и O_NONBLOCK с вашим "Hello" не дружат. Вот "man termios\n" будет работать, а "Hello" нет...
0
|
|
|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 8
|
|
| 28.06.2011, 18:14 [ТС] | |
|
знаете, в этом вся проблема нашей страны - все считают что если человек не понял объяснения, значит он тупой, а это совсем не так, просто умение объяснять понятно - очень редкий дар. Да и потом - у всех разный опыт программирования, да и вообще работы в частности, и объяснения на одном уровне не обязательно соответствуют уровню, на котором сейчас человек и, казалось бы понятные для вас вещи, могут быть не такими уж понятными, а принцип - "ну тогда и не суйся" вот это апогей таланта, если б учителя вам в школе говорили - не суйся, многого бы вы достигли? они-то точно побольше знали, но тем не менее показывали ошибки и приводили пример, хоть могли этого вполне и не делать - книга есть - читай...
В любом случае спасибо, и, если уж вас так задевает мой непрофессионализм извините за возможно потраченные ваши нервы...
0
|
|
| 28.06.2011, 18:14 | |
|
Помогаю со студенческими работами здесь
15
Сделать замер времени,которое потребовалось для приема / передачи используя таймер Как читать 9-й бит по ком порту? Разные скорости приема и передачи Поделитесь программой приема/передачи файла
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|