This is topic нестандартный драйвер in forum Драйверы / Device Drivers at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/14/t/000024.html

Posted by yura (Участник № / Member № 35) on :
 
Существует проблема. Устройство принимает данные в формате размером в 11бит:
1 2 3 4 5 6 7 8 9 10 11 - номера бит
0 х х х х х х х х N 1
1- стартовый бит
2-9- информационные биты
10- признак команды (N=1) или данных (N=0)
11 - стоповый бит
Для опроса устройства посылается 4 байта в которых первых два байта значения бита 10 = 1,
а следующие байты N=0. В ответе устройства все байты имеют значение 10 бита равным 0 (N=0).
Для обмена с ТМ5, написан драйвер обмена по последовательному порту. Можно ли реализовать в драйвере изменение 10-го бита в одной посылке. В стандартных настройках порта можно установить любое значение (маркер, пробел) но оно будет использоваться во ВСЕХ байтах. Есть ли какой либо выход?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Не совсем понятны фразы: "Можно ли реализовать в драйвере изменение 10-го бита в одной посылке" и "В стандартных настройках порта можно установить любое значение (маркер, пробел) но оно будет использоваться во ВСЕХ байтах" - о какой настройке порта идет речь и что значит изменение в одной посылке? Пожалуйста, поясните свой вопрос более подробно. [Недоумение / Confused]
 
Posted by yura (Участник № / Member № 35) on :
 
У нас есть устройство со следующим протоколом:
команда запроса ХХYY (где X и Y - информационный байт), ответ - YYYYY...YYY. Для передачи байта X порт должен иметь следующие настройки: 1 стартовый бит, 8 бит данных, маркер=1, 1 стоповый бит; для Y - 1 стартовый бит, 8 бит данных, пробел=0, 1 стоповый бит. Мы реализовали для данного устройства драйвер обмена по последовательному порту, но у нас нет возможности во время обмена данными менять значение 10-го бита. Что Вы нам посоветуете в решении этой проблемы?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В таком случае Вам необходимо писать драйвер через TYPE12 (драйвер для обмена по произвольному носителю) и реализовывать обработчик СОМ порта самим. TYPE11 имеет встроенную поддержку обработки СОМ порта и не поддерживает динамического изменения настроек СОМ порта при приеме-передаче.
 
Posted by electropribor (Участник № / Member № 122) on :
 
Нам тоже пришлось из-за особенности устройства (нужно было удерживать DTR после окончания передачи) пришлось переписать драйвер TYPE11 на TYPE12. Изменения не очень сложные - основные проблемы с хранением настроек, у нас они хранятся в файле. Есть ли какие-нибудь другие способы?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Не очень понятно, о каких настройках идет речь.
 
Posted by electropribor (Участник № / Member № 122) on :
 
Да хотя бы выбор СОМ-порта. Да, конечно можно все настройки СОМ-порта указывать в параметрах канала, но так получается как-то не очень хорошо. Если каналов много, а проект придётся переносить на другую машину, где порт поменятся или просто небоходимо изменить параметры СОМ порта - придётся менять настройки для каждого канала.
Сейчас же в нашем драйвере dll при инициализации загружает все необходимые параметры из обычного текстового файла.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Можно попробовать при первом вызове драйвера проанализировать количество портов и опросить их последовательно на наличие подключенных устройств. Где устройство ответит, с тем СОМ-портом и работать. В таком случае нет необходимости хранить настройки и при переходе не другую систему автоматически бедет осуществлен переход на новый СОМ-порт.
 
Posted by electropribor (Участник № / Member № 122) on :
 
В принципе конечно реально, но 32 возможных СОМ-порта, 2 возможных скорости работы. И 32 возможных устройства на одном СОМ-порту, подключенных по RS-485 = 2048 вариантов [Улыбка / Smile]
 
Posted by electropribor (Участник № / Member № 122) on :
 
Да, 2 возможных скорости работы - это столько у нашего прибора. Реально же - больше.
Нет, в данном случае ini-файл предпочтительнее. А ещё можно в dll и ведения log-файла подрубить - сразу будет видно, что работает, а что - нет
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2