Re: Связь с устройством: запрос-ответ.
От: Nikolay_Ch Россия  
Дата: 29.01.13 09:44
Оценка:
Здравствуйте, todritab, Вы писали:

T>Есть некое устройство. Подключается к компьютеру через COM или USB.


T>Протокол обмена:

T>Компьютер посылает запрос — устройство присылает ответ. В случае ошибки, ответ может и не прийти.
T>При некоторых событиях устройство может послать сообщение компьютеру само, без запроса.

T>Пока я использую самую примитивную реализацию: посылаю запрос и некоторое время жду ответа. В первом приближении это работает, но валится, если устройство само пришлет сообщение.


T>Хочется сделать более надежную реализацию. Мне это видится как-то так:

T>Две очереди: посланных и принятых сообщений. Функция, которая формирует из них третью очередь — пар запрос-ответ. Причем, в третьей очереди могут быть и неполные пары: запрос без ответа, и ответ без запроса.

T>Принципы спаривания сообщений:

T>1) По времени. Ответ должен прийти в течение некоторого промежутка времени после отправления запроса.
T>2) По смыслу. Есть функция, определяющая, может ли данное сообщение быть ответом на данный запрос.

Мне кажется, что все плохо именно из-за того, что устройство может послать сообщение "внезапно" — т.е. по сути образуется второй "обратный" поток данных.
ИМХО или делать для обратных сообщений отдельный поток данных или различать как-то "прямой" и "обратный" поток данных... Ну, например префиксами какими-то.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.