![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: нет Всего: 25 |
Cтоит задача: принять данные с одного из ком-портов.
Т.е. источник данных может быть подлючен к com1, com2 и тд. Для начала следует определить, с какого порта идут данные, я думаю программ должна читать со всех доступных портов, затем "закрывать" соединение со всеми портами, кроме того, на который пришли данные. Данные приходит не постоянным потоком, а порциями. Я давно неплохо программировал на Делфи, но мне не приходилось работать с ком-портами. К тому же в те далекие времена у меня был Делфи 5, а сейчас требуется написать на седьмой версии ( я знаю, что она не самая последняя, но такова задача ) , так что инструментарий мой наверно 1000 раз устарел. Прошу помочь вот в чем: пожалуйста, опишите общие принципы работы с ком-портами в делфи; какие предпочтительно использовать компоненты (с учетом 7 версии), как считывать данные в условиях моей задачи и тп. Привествуются хорошие ссылки. В поиске есть готовые куски кода, но это мне не надо, т.к. хотелось бы понять суть, а код я сам напишу. Ещё в поиске была ссылка на faq, которая сейчас отображает не пойми что http://forum.vingrad.ru/vingrad-faq/section-545.html . |
|||
|
||||
| Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
Общие принципы везде одинаковые. Открываешь порт и читаешь из него, или пишешь в него.
Предпочтительно не использовать компаненты. Лучше делать на WinAPI. В условиях такой задачи лучше использовать события, которые генерирует драйвер порта. А еще лучше так не делать, а четко определиться с каким портом работать. Вот ссылка на класс. Посмотришь как сделано и разберешься... а можешь прям так заюзать -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: нет Всего: 25 |
Cпасибо большое, файлы скачал, глянул. Буду разбираться. А ещё: чем можно протестировать прием данных по ком-портам? Какое самое простое устройство подключить? В принципе есть второй комп, но тогда надо писать прогу, которая будет данные отправлять )
|
|||
|
||||
| Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
Нульмодемный кабель. Соденяешь com1 и com2. Все что пишешь в один, появляется на втором.
Можно заглушку соорудить, где линии Tx и Rx соеденены (может еще что-то, точно не помню сейчас). Втыкаешь ее в порт, и все что в него пишется, можно сразу же прочитать из него же. Но тут все равно придется программу писать. Это сообщение отредактировал(а) Felan - 7.2.2008, 08:12 -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
С второго компа данные можно отправлять HyperTerminal-ом Добавлено через 1 минуту и 27 секунд п.с. в принципе и с одного компа можно, только с одного порта данные пишешь, с другого читаешь. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 1 Всего: 9 |
flashaa, Ставим VMware и там есть COM1 и работаем, в чем трабл ?
|
|||
|
||||
| Pacific |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
Тоже воюю с com-портом и не могу добиться правды:
настройки: 9600, 8, чет, стопбит=1, управление потоком = нет (Гипертерминал работает, когда управление потоком = нет,Xor/Xof) при чтении из порта программа вылетает с ошибкой "System error 995 операция ввода/вывода прервана из-за завершения потока команд или по запросу приложения". Как бороться - не пойму, причем ошибка появляется только когда из порта поступают данные. Думаю, может из-за управления потоком, но как выставить не могу найти. Ставлю Четность в "нет" - нет сообщения об ошибке, но нет и данных. Кто-нить подсказать может? |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
ошибка в 17-й строке -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Pacific |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
В смысле исходник дать? Или я юмера не понял? |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Pacific |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
А я думал вы все умеете ;-)
...ошибка возникает при вызове ReadFile Присоединённый файл ( Кол-во скачиваний: 38 )
uComPort.pas 5,85 Kb |
|||
|
||||
| Pacific |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
и модуль управления.
в комментариях - мои попытки заставить работать Присоединённый файл ( Кол-во скачиваний: 36 )
Unit1.pas 3,01 Kb |
|||
|
||||
| Pacific |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
Дико извиняюсь... Все работает. Оказалось "чет" - "even", а не "odd"
|
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |