Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Принять данные с com-портов, нужно разобраться, а не получить код 
:(
    Опции темы
flashaa
Дата 4.2.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: нет
Всего: 25



Cтоит задача: принять данные с одного из ком-портов.
Т.е. источник данных может быть подлючен к com1, com2 и тд.
Для начала следует определить, с какого порта идут данные, я думаю программ должна читать со всех доступных портов, затем "закрывать" соединение со всеми портами, кроме того, на который пришли данные. Данные приходит не постоянным потоком, а порциями.

Я давно неплохо программировал на Делфи, но мне не приходилось работать с ком-портами. К тому же в те далекие времена у меня был Делфи 5, а сейчас требуется написать на седьмой версии ( я знаю, что она не самая последняя, но такова задача ) , так что инструментарий мой наверно 1000 раз устарел.

Прошу помочь вот в чем: пожалуйста, опишите общие принципы работы с ком-портами в делфи; какие предпочтительно использовать компоненты (с учетом 7 версии), как считывать данные в условиях моей задачи и тп. Привествуются хорошие ссылки.

В поиске есть готовые куски кода, но это мне не надо, т.к. хотелось бы понять суть, а код я сам напишу. Ещё в поиске была ссылка на faq, которая сейчас отображает не пойми что http://forum.vingrad.ru/vingrad-faq/section-545.html .
PM MAIL   Вверх
Felan
Дата 4.2.2008, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: 2
Всего: 7



Общие принципы везде одинаковые. Открываешь порт и читаешь из него, или пишешь в него.
Предпочтительно не использовать компаненты. Лучше делать на WinAPI.
В условиях такой задачи лучше использовать события, которые генерирует драйвер порта. А еще лучше так не делать, а четко определиться с каким портом работать.

Вот ссылка на класс. Посмотришь как сделано и разберешься... а можешь прям так заюзать smile


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
flashaa
Дата 6.2.2008, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: нет
Всего: 25



Cпасибо большое, файлы скачал, глянул. Буду разбираться. А ещё: чем можно протестировать прием данных по ком-портам? Какое самое простое устройство подключить? В принципе есть второй комп, но тогда надо писать прогу, которая будет данные отправлять )
PM MAIL   Вверх
Felan
Дата 7.2.2008, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: 2
Всего: 7



Нульмодемный кабель. Соденяешь com1 и com2. Все что пишешь в один, появляется на втором.
Можно заглушку соорудить, где линии Tx и Rx соеденены (может еще что-то, точно не помню сейчас). Втыкаешь ее в порт, и все что в него пишется, можно сразу же прочитать из него же.

Но тут все равно придется программу писать. smile


Это сообщение отредактировал(а) Felan - 7.2.2008, 08:12


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
Rennigth
Дата 7.2.2008, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



Цитата(flashaa @  6.2.2008,  21:23 Найти цитируемый пост)
В принципе есть второй комп, но тогда надо писать прогу, которая будет данные отправлять

С второго компа данные можно отправлять HyperTerminal-ом smile

Добавлено через 1 минуту и 27 секунд
п.с. в принципе и с одного компа можно, только с одного порта данные пишешь, с другого читаешь.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
EvilsInterrupt
Дата 8.2.2008, 03:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 1
Всего: 9



flashaa, Ставим VMware и там есть COM1 и работаем, в чем трабл ?
PM MAIL WWW ICQ Jabber   Вверх
Pacific
Дата 15.2.2008, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Тоже воюю с com-портом и не могу добиться правды:
настройки: 9600, 8, чет, стопбит=1, управление потоком = нет (Гипертерминал работает, когда управление потоком = нет,Xor/Xof)
при чтении из порта программа вылетает с ошибкой "System error 995  операция ввода/вывода прервана из-за завершения потока команд или по запросу приложения". Как бороться - не пойму, причем ошибка появляется только когда из порта поступают данные.
Думаю, может из-за управления потоком, но как выставить не могу найти. Ставлю Четность в "нет" - нет сообщения об ошибке, но нет и данных.
Кто-нить подсказать может?

PM MAIL   Вверх
Rennigth
Дата 15.2.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



Цитата(Pacific @  15.2.2008,  16:44 Найти цитируемый пост)
Тоже воюю с com-портом и не могу добиться правды:
настройки: 9600, 8, чет, стопбит=1, управление потоком = нет (Гипертерминал работает, когда управление потоком = нет,Xor/Xof)
при чтении из порта программа вылетает с ошибкой "System error 995  операция ввода/вывода прервана из-за завершения потока команд или по запросу приложения". Как бороться - не пойму, причем ошибка появляется только когда из порта поступают данные.
Думаю, может из-за управления потоком, но как выставить не могу найти. Ставлю Четность в "нет" - нет сообщения об ошибке, но нет и данных.
Кто-нить подсказать может?

ошибка в 17-й строке


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Pacific
Дата 15.2.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Цитата(Rennigth @ 15.2.2008,  16:53)
ошибка в 17-й строке

В смысле исходник дать? Или я юмера не понял?
PM MAIL   Вверх
Rennigth
Дата 15.2.2008, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



Цитата(Pacific @  15.2.2008,  17:25 Найти цитируемый пост)
В смысле исходник дать? 
  smile 
Мыж не телепаты  smile 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Pacific
Дата 15.2.2008, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



А я думал вы все умеете  ;-)

...ошибка возникает при вызове ReadFile


Присоединённый файл ( Кол-во скачиваний: 38 )
Присоединённый файл  uComPort.pas 5,85 Kb
PM MAIL   Вверх
Pacific
Дата 15.2.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



и модуль управления.
в комментариях - мои попытки заставить работать

Присоединённый файл ( Кол-во скачиваний: 36 )
Присоединённый файл  Unit1.pas 3,01 Kb
PM MAIL   Вверх
Pacific
Дата 15.2.2008, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Дико извиняюсь... Все работает. Оказалось "чет" - "even", а не  "odd" smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.