Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как организовать одновременное чтение из COM-порта


Страницы:   1 2 3 4

kami ©   (2008-06-04 23:38:00) 

Вечер добрый.
Столкнулся с такой задачей:
имеется устройство, подключенное к COM-порту и программа, получающая из него данные. Необходимо дать возможность получения этих данных как другими модулями самой программы (с чем проблем, в принципе, нет), так и другими процессами (созданы на Delphi, мной), причем их количество заранее неизвестно. Нужно только чтение, запись не предусмотрена де-юре и де-факто.
На данном этапе имею возможность организовать "распараллеливание" чтения данных при помощи установки виртуальных COM-портов, по паре на каждого "читателя". Но...это на мой взгляд неправильно.

В идеале хотелось бы видеть такую картину : 1 модуль работает непосредственно с портом, а остальные модули/процессы регистрируют в этом модуле callback-функции и "забывают" о необходимости каких-то там настроек портов и тому подобном.
Подскажите пожалуйста, правильно ли мне видится "идеал", и как такое лучше/правильнее сделать.


ага0   (2008-06-06 17:47:00) [1]


> тормозишь

Да? Та не, наверна проста глуп до изумлению, ага. Эх, жаль не знам смайлика "пожал плечами":(

2 Anatoly Podgoretsky ©   (06.06.08 15:57) [61]

>Чуть, чуть не дописал

Понял, отстал:))

> Palladin ©   (06.06.08 15:58) [62]
> ни в пайпах и ни в сокетах не шарю... вот какая...)

Да ладно те, въедешь, че там сложнова. Глано - нАчать:) Тады бери пайпы - с имя с нуля проще разбираться по-мойму. Эта опять-же ежель АПИ. А ежель компаненты - дык вон хоть TTcpServer/TcpClient - куды уж проще. Хошь на то, хошь на друго - недели точна не понадобитси:))


Anatoly Podgoretsky   (2008-06-06 16:49:00) [2]

> Palladin  (06.06.2008 16:24:04)  [64]

Я говорил похоже, поскольку надо еще разработать протокол обмена, но это касается любого метода.
Принцип то простой.
Подключился, спросил, отключился или сново пункт 2.
Обычный разговор, да и термин часто используется Conversation
Я говорил, что сервер надо так написать, чтобы не падал при любых ошибках.


Игорь Шевченко   (2008-06-06 16:44:00) [3]


> А я чет не въехал:(


тормозишь


Palladin   (2008-06-06 16:24:00) [4]

я Сергея М. начитался... все получается куда хуже чем простой чат :)


Anatoly Podgoretsky   (2008-06-06 16:06:00) [5]

> Palladin  (06.06.2008 15:58:02)  [62]

Ну примеров в Дельфи достаточно, это по сути чат и такой пример как старт есть.
Принцип простой, слушать порт, пока кто то не постучится, можно обойтись даже и без множественных подключений, если сервер простой, одно соединение за раз. Для серверов самое сложное это не сокете/покеты, а что бы сервер крутился при любых условиях.


Palladin   (2008-06-06 15:58:00) [6]

ни в пайпах и ни в сокетах не шарю... вот какая...)


Anatoly Podgoretsky   (2008-06-06 15:57:00) [7]

> ага0  (06.06.2008 15:48:59)  [59]

Чуть, чуть не дописал - сокеты, наиболее беспроблематичное и маштабируемое.


ага0   (2008-06-06 15:52:00) [8]

2 Palladin ©

> просто пытаюсь построить локальный (относительно сервиса)
> лог-сервер для отладки и журналирования, того, что же происходит
> в приложении, особенно в сервисном... вот сижу уже с неделю,
>  думаю, что выбрать, пайпы или сокеты или еще чего...

Крута:)) Да выбери хоть шо, какая разница-та:))


ага0   (2008-06-06 15:48:00) [9]


> Игорь Шевченко ©   (06.06.08 13:49) [51]
> Palladin ©   (06.06.08 13:43) [50]
>
> Натурально LPC :)

А я чет не въехал:( Я так понял, шо в LPC сервак не могет сам по себе че-нит слать клиенту, тока в ответ. Если ет так, то как ево к ентой теме прикрутить? Аль не так?

И ишшо - сервак по LPC могет клиентов тока последоватно обслужить, то бишь пока одному отвечает принять запрос от другого не могет? Или могет? А как?


> Anatoly Podgoretsky ©   (06.06.08 15:36) [58]
> > Palladin  (06.06.2008 15:32:57)  [57]
>
> Просто и надежно, работает и через Интернет и любые шлюзы.
>

Хто, LPC? А как?


Anatoly Podgoretsky   (2008-06-06 15:36:00) [10]

> Palladin  (06.06.2008 15:32:57)  [57]

Просто и надежно, работает и через Интернет и любые шлюзы.


Palladin   (2008-06-06 15:32:00) [11]


> наиболее геморройный способ

в этом я уже убедился... просто пытаюсь построить локальный (относительно сервиса) лог-сервер для отладки и журналирования, того, что же происходит в приложении, особенно в сервисном... вот сижу уже с неделю, думаю, что выбрать, пайпы или сокеты или еще чего...


Игорь Шевченко   (2008-06-06 15:19:00) [12]

Palladin ©   (06.06.08 14:17) [54]

Я тебе могу сказать - это наиболее быстрый и наиболее геморройный способ организации межпроцессоного взаимодействия. В принципе, готовых примеров есть в тырнете.


Palladin   (2008-06-06 14:18:00) [13]

кажись самое оно под мою задумку...


Palladin   (2008-06-06 14:17:00) [14]


> Игорь Шевченко ©   (06.06.08 13:49) [51]

хем ) интересно... ты меня заинтриговал...


Evgeny V   (2008-06-06 14:05:00) [15]


> Anatoly Podgoretsky ©   (06.06.08 13:59) [52]

Не сообразил,  увы еще не телепат.  Но и про это я тоже вам написал в ответе, ошибки вернуться к вам позже,  тем или иным способом, зависит от того в как вы работаете с неблокирующим сокетом.
> Evgeny V ©   (06.06.08 12:12) [44]


Anatoly Podgoretsky   (2008-06-06 13:59:00) [16]

> Evgeny V  (06.06.2008 12:12:44)  [44]

При неблокирующем режиме, никакие ошибки не возвращаются.
Если ты не сообразил, то я именно это и подчеркнул своим сообщением.


Игорь Шевченко   (2008-06-06 13:49:00) [17]

Palladin ©   (06.06.08 13:43) [50]

Натурально LPC :)


Palladin   (2008-06-06 13:43:00) [18]


> Игорь Шевченко ©   (06.06.08 13:28) [49]

какие?


Игорь Шевченко   (2008-06-06 13:28:00) [19]


> подскажи локальное решение общения между сервисом и клиентским
> приложением


натурально порты :)


Palladin   (2008-06-06 13:18:00) [20]


> для локального решения в первую очередь нужно применять
> локальные решения

подскажи локальное решение общения между сервисом и клиентским приложением


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо