Существует проблема. Устройство принимает данные в формате размером в 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-го бита в одной посылке" и "В стандартных настройках порта можно установить любое значение (маркер, пробел) но оно будет использоваться во ВСЕХ байтах" - о какой настройке порта идет речь и что значит изменение в одной посылке? Пожалуйста, поясните свой вопрос более подробно.
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 вариантов
Posted by electropribor (Участник № / Member № 122) on :
Да, 2 возможных скорости работы - это столько у нашего прибора. Реально же - больше. Нет, в данном случае ini-файл предпочтительнее. А ещё можно в dll и ведения log-файла подрубить - сразу будет видно, что работает, а что - нет