В руководстве имеются примеры драйверов t11. Не могли бы вы дать ссылки на описание этих протоколов (Ш711/1 и HostLink) для разбора этих примеров?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Актуальных ссылок на эти протоколы у нас нет. Драйверы разрабатывались по печатным текстам начала 90-х годов для предыдущих версий Trace Mode. Попытки найти ссылку у производителя, например, http://www.rbs.ru/etp/prod/prod_files/sh711_rus.asp.htm, не удались. Да и нет уверенности, что современные версии протоколов соответствуют тем, по которым разрабаьывались драйверы..
Posted by Ленар (Участник № / Member № 2144) on :
Эти тексты не сохранились и у вас, я так понял? Тогда можно получить какой нибудь другой пример с описанием протокола? Так при изучении не совсем понятно что делается в некоторых функциях (например в Get или Set).
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Увы, не сохранились. По сложившейся практике передача описаний "закрытых" протоколов не производится. В приведенном примере функция Set при первом вызове производит инициализацию устройства - посылка 0x7c, а в последующих - запрос данных с указанием количества принимаемых от устройства байтов данных. Функция Get разбирает ответ от устройства, конвертирует символы в вещественные данные и передает во входные значения каналов, связанных с соответствующими приемниками данных.
Posted by Ленар (Участник № / Member № 2144) on :
Posted by Ленар (Участник № / Member № 2144) on :
По примеру пытаюсь сделать следующий драйвер: имеются 3 устройства, с каждого необходимо брать по 2 параметра. По протоколу устройство на мой запрос выдает все параметры устройства (даже те которые мне не нужны) в виде блока данных, где каждые 4 подряд байта - величина float. Я так понял мне нужно организовать 3 блоковых запроса по 2 канала в каждом блоке? По адресации у меня 1 байт на адрес устройства и 1 байт на адрес регистра, значит можно любой вид драйвера выбирать?
Posted by Ленар (Участник № / Member № 2144) on :
"Два младших байта структуры IA (IA.c[0] и IA.c[1]) влияют также на формирование блоковых (групповых запросов)." Два младших байта это то что я забью в поле "адрес" (атрибут 1 и 2) или то что забью в последнем параметре word?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Вы правы - Вам нужно организовать 3 шрупповых запроса по 2 канала в каждом. Вы действительно можете выбирать любой из 4-х видов драйвера. При этом "два младших байта структуры IA" - это два верхних параметра в редакторе переменной этого драйвера (Параметр 1 и Параметр 2).
Posted by Ленар (Участник № / Member № 2144) on :
Драйвер написал, но никак не удается его подключить. Высылаю тестовый проект и файлы драйвера. Экспортировал все функции, но в протоколе о драйвере ни слова. Использую COM1, но в протоколе после закрытия появляется строка INF_RS:COM4 TRANSACTION=0 ERROR=0 TIME=13.406. Почему СОМ4? В чем вообще ошибка? Драйвер уменьшил до минимума, то есть без всяких проверок (то есть сразу return(0)) и т.п. Посылаю в порт всего один символ, но при слежении за портом (например при помощи Free Serial Port Monitor) в журнал выводятся только строки об открытии и закрытии порта, запросов никаких нет. Ответ от устройства не расшифровываю, а просто присваиваю p[0].V.v=250 (хотя пробовал и расшифровывать), но при запуске канал так и остается нулевым. Я так понял драйвер не подключается к программе?
Заранее большое спасибо за оперативность.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Мы получили Ваш проект с драйвером и ответили Вам почтой. В драйвере у Вас обнаружена ошибка в определении передаваемого параметра. Переадресация COM-портов конкретно в Вашем узле Вашего проекта имеет место. Как возникла такая некорректность в описании узла, сказать не можем, не имея строгой последовательности Ваших процедур при создании проекта. Однако, если в Вашем же проекте создать заново такой же узел, то вызов драйвера осуществляется и переадресации портов нет.