Тема / Topic: КОНТР_1 типа "Запрос-ответ-подтверждение"
Svetlov
Forum Member / Участник форума
Участник № / Member № 1193
отправлено / posted
Возможно ли реализовать драйвер типа не "запрос-ответ", а "запрос-ответ-подтверждение"? Если да, то как?
Про функцию Check_xxx сказано - "Если при этом значение параметра max_send больше 0, то осуществляется посылка по последовательному порту строки из буфера rbuf. " Сначала я подумал, что это то что надо, но ведь я не могу изменить rbuf - он нужен для функции Get_xxx. Тогда для чего это? И как мне послать контроллеру подтверждение принятия данных?
Сообщения / Posts 31 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
В функции GET_xxx есть такая опция (см.документацию) "Если младший бит старшего байта параметра type_cnv равен 1 (0x01000000), то следующий вызов драйвера выполняется для того же самого канала (переход к обработке очередного канала не производится). Это свойство используется при разработке многопроходных драйверов."
Вам следует после получения ответа и его разборки при повторном обращении к драйверу от того же канала в функции SET_xxx задать, что надо передавать, но количество байтов в ответе указать равным 0.
Сообщения / Posts 17315 | Из / From: Россия
| IP / IP: IP адрес / IP address |
sugar
Forum Professor / Завсегдатай форума
Участник № / Member № 1198
отправлено / posted
Есть ли еще какое-либо условие для для того чтобы драйвер продолжал обработку одного канала и не переходил к следущему? type_cnv поставил 0x01000000 ,но каналы продолжают вызываться по очереди без задержки. Мне необходимо реализовать цикл обработки канала запрос-ответ-запрос-ответ-запрос-ответ-запрос-ответ.Осуществить 4 прохода при обработке одного канала.Что я мог упустить? Для отладки вел лог файл в который записывал удаленный адрес канала ia.c[3] ,который на каждом канале индивидуальный.Каждая новая строка лога шла с новым удаленным адресом,хотя должен быть по моему мнению один и тот же. В функцию Get_xxx передается удаленный адрес ia.c[i] канала "инициатора" или "найденного"?
Сообщения / Posts 152 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Просим прощения за неточность в документации. "Если младший бит первого байта параметра type_cnv равен 1 (0x0100), то следующий вызов драйвера выполняется для того же самого канала (переход к обработке очередного канала не производится). Это свойство используется при разработке многопроходных драйверов."
Сообщения / Posts 17315 | Из / From: Россия
| IP / IP: IP адрес / IP address |
sugar
Forum Professor / Завсегдатай форума
Участник № / Member № 1198
отправлено / posted
Поставил type_cnv=0x0100 ,но ничего не поменялось каналы как продолжались вызываться по очереди так и дальше меняются на новые. В функцию Get_xxx передается удаленный адрес ia.c[i] канала "инициатора" или "найденного"? В чем может быть дело?
Сообщения / Posts 152 | Из / From: Россия
| IP / IP: IP адрес / IP address |
sugar
Forum Professor / Завсегдатай форума
Участник № / Member № 1198
отправлено / posted
Для каких алгоритмов обработки даных можно написать многопроходный драйвер(DATA11,BLOCKDATA11,одиночных)? А канал инициатор при type_cnv = 0x0100 меняется на другой или должен остаться тот же самый?
Сообщения / Posts 152 | Из / From: Россия
| IP / IP: IP адрес / IP address |
romer
unregistered
отправлено / posted
При выдаче функцией Get_xxx type_cnv = 0x0100 разбор ответа функцией Compare_xxx не осуществляется. МРВ сразу вызывает функцию Set_xxx с удаленным адресом того же канала.
IP / IP: IP адрес / IP address |
sugar
Forum Professor / Завсегдатай форума
Участник № / Member № 1198
отправлено / posted
Почему же эта функция c type_cnv=0x0100 не работает, вызывается следующий канал с другим удаленным адресом?
Сообщения / Posts 152 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
## У нас нет возможности детально работать с исходными кодами программ, написанных пользователями. Режим многопроходности в драйвере проверялся и функционирует.
Сообщения / Posts 17315 | Из / From: Россия
| IP / IP: IP адрес / IP address |