|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.07.2011, 14:21 | #1 |
Форумчанин
Регистрация: 26.01.2009
Сообщений: 125
|
Com порт - странное поведение
Я откопипастил программу для работы с Com портом в асинхронном режиме.
Вчера вечером всё работало! А сегодня начались чудеса. У меня на столе два ноутбука, соединены шнурком для RS232. Запускаю одну и ту же (свою) программу на обоих ноутах и пробую передать с одной на другую любую строчку. В одну сторону идёт, а в другую нет! Переворачиваю кабель (подумав что может в распайке дело), повторяю - результат тот же, опять не идёт в ту же сторону куда не шло. Открываю на стороне которая не могла принять HyperTerminal - всё отлично проходит! Открывал HyperTerminal на всякий случай на другой стороне тоже, также всё работало. Я ума не приложу почему не работает в одну сторону. Событие выставлено в EV_RXFLAG. Пытался ловить событие отладчиком - а события нет! Я плохо понимаю какая между ними разница, но попробовал выставить событие в EV_RXCHAR. Стало ловить но программа начала вести себя по другому - она стала принимать пакетами по 16 байт, соответственно если я посылаю 17 то приходит один, она приняла 16, обработала и принимает дальше. Понятно что можно обработать эту приёмку пакетами, но ведь можно наверно и без неё обойтись как нибудь?? Объясните пожалуйста что происходит. Почему по EV_RXFLAG события не происходит, хотя на другом компе всё отрабатывается замечательно. И с другой стороны - можно ли обойти эту нарезку по 16 байт? вот прикрепляю основной код потока для чтения на всякий случай это версия с EV_RXFLAG которая работает в одну сторону Код:
Последний раз редактировалось BoozZzilla; 12.07.2011 в 15:53. |
13.07.2011, 08:22 | #2 |
Форумчанин
Регистрация: 26.01.2009
Сообщений: 125
|
ап
Попробовал на другой паре ноутбуков - опять ловится только на одном ноутбуке, причём на том же самом что ловил в прошлый раз.
Выходит что на одной машине по приёму #13 портом генерируется событие, а на других не генерируется?? Ребята, может у кого возникнет идея? Я спал плохо сегодня |
13.07.2011, 08:34 | #3 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Посмотри мою прогу работает с Com портом, может что для себя найдешь в ней
Весь код по работе написан в unit FunctComPort.pas http://zalil.ru/31414794 Последний раз редактировалось Aliens_wolfs; 13.07.2011 в 08:38. |
13.07.2011, 10:02 | #4 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,742
|
TC, у вас вот в гипертерминале все работает как понял? Вы в курсе, что он настраивает COM порт (там походу видно), а вот по вашему коду вижу работу с DCB только вот с этим DCB.EvtChar:=char(#13); - и где все остальное, тайминги, настройка буфера, стоп-битов, ...?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
13.07.2011, 11:12 | #5 | |
Форумчанин
Регистрация: 26.01.2009
Сообщений: 125
|
Цитата:
Эту строчку я показал чтобы было ясно что событие я выставил на #13 При открытии я конечно всё выставляю что важно: baudrate, parity, bytesyze, stopbits. И повторю: на другом конце эта же программа всё принимает. upd. Да да да я опять опрофанился у меня была написана функция настройки порта, но я её /мля/ оказывается не запускал!!! ... Извиняюсь, тема закрыта... Последний раз редактировалось BoozZzilla; 13.07.2011 в 12:02. Причина: глупость автора... |
|
13.07.2011, 13:04 | #6 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,742
|
это уже восьмая тема на моей памяти, когда забывают настроить порт ...ничего, с кем не бывает
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
15.07.2011, 20:41 | #7 |
Регистрация: 15.07.2011
Сообщений: 3
|
Приветствую товарищей програмеров!
Не откажете в помощи начинашке? Мне необходимо доработать готовую прогу для работы с СОМ портом. Сама прога есть уже и скомпилированая и работает нормально, но вот в исходниках что-то не так (либо в том как я их открываю): при открытии в Делфи 7 он мне заявляет "Class TComPort not found. Ignore the error and continue?", хотя TComPort вроде описан в отдельном модуле CPort. При попытке скомпилировать вылазит ошибка "Field Form1.ComPort1 does not have corresponding component. Remove the declaration?" (где Form1.ComPort1:TComport). При ответе "нет" - спокойно компилит, и прога естественно не работает. Я предположил что прога написана на более раннем делфи, но на 5м делфи проблема не исчезла а только обросла ошибками с русскими символами в форме. Вот сами исходники: http://zalil.ru/31427017 (прога, исходник проги, модуль CPort в отдельной папке Com_port) Я решил не создавать отдельной темы т.к. сдесь до самого программирования компорта я даже не дошел - даже готовую прогу открыть не могу. |
15.07.2011, 20:44 | #8 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Компонент TComPort установлен?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
15.07.2011, 21:22 | #9 |
Регистрация: 15.07.2011
Сообщений: 3
|
В самом Delphi? Видимо нет.
Только в uses прописан Cport. или это не та степь? |
15.07.2011, 23:23 | #10 |
Регистрация: 15.07.2011
Сообщений: 3
|
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Странное поведение чисел.... | sult9191 | Общие вопросы по Java, Java SE, Kotlin | 2 | 20.01.2011 17:12 |
Странное поведение realloc | eraserhp | Помощь студентам | 0 | 15.05.2010 18:06 |
Странное поведение gets | alex_alpha | Общие вопросы C/C++ | 3 | 27.03.2010 18:21 |
Странное поведение TTreeView | mutabor | Компоненты Delphi | 1 | 01.05.2009 05:17 |
Странное поведение базы | yulia | БД в Delphi | 7 | 22.04.2009 07:15 |