Тема / Topic: Проблема с драйвером подтипа КОНТР_2
Chikirev Dmitry
Junior Member / Новичок
Участник № / Member № 1121
отправлено / posted
Здравствуйте.
Я создал драйвер для обмена с контроллером по произвольному носителю. Возникли две проблемы.
1. При обработке групповых данных (по 8 каналам в одном ответе) в драйвере в функции Set_yyy осуществляется запрос к нулевому каналу. Полученные данные этого канала функцией Get_yyy передаются МРВ. Данные остальных каналов сохраняются в памяти. При обработке любого ненулевого канала того же адреса функцией Set_yyy (max_rec=max_send=0) в значение канала МРВ передаются ранее сохраненные данные. Остальные функции при этом не вызываются. При нормальном обмене проблем нет, но если при получении из порта данных нулевого канала функцией ReadMedia возникла ошибка, то после каждого обращения к функции Set_yyy любого другого канала происходит вызов ReadMedia, хотя ни посылать в порт, ни читать из порта ничего не нужно. Как настроить драйвер, чтобы этого не происходило?
2. При атрибуте "Подключение"=1 все равно происходит вызов всех функций драйвера. Только при атрибуте "Состояние"=1 прекращается обращение к драйверу. Что я мог сделать в драйвере, что такое произошло и как это можно исправить?
отправлено / posted
1) Если запрашивается не нулевой канал, то max_rec=max_send=0, Media должна это понимать. Вам необходимо добавить проверку: если обе длины нулевые - ничего не делаеть и просто выходит. Примерно так:
code:
// запись int WriteMedia(long &hndl, char *sbuf, int out_count, int &actual_count) { if (out_count == 0) { actual_count = 0; return 0; } }
// чтение int ReadMedia(long &hndl, char *rbuf, int in_count, int &actual_count) { if (in_count == 0) { actual_count = 0; return 0; } }
А проще - вообще media не использовать, обработка порта пусть будет в t12, а media - пустая заглушка: пример:
2) Мы попробуем проверить, но скорее всего в рамках 5-й версии это действительно так - атрибут Подключение не влияет на вызовы функций драйвера.
Сообщения / Posts 17292 | Из / From: Россия
| IP / IP: IP адрес / IP address |