ActiveX компонент для управления трансивером


    Для управления трансивером с помощью ПК существует много различных программ, но ни одна из встречавшихся меня не устроила по своим функциональным возможностям.
Свои записи по радионаблюдению и радиосвязи я веду в программе созданной с использованием 1С-предприятия. Конфигурацию 1С-предприятия для этих целей мне помогли написать программисты, специализирующиеся на этом деле. Просматривая записи о наблюдении сигналов на каких-либо частотах удобно иметь возможность оперативно перестроить трансивер или приемник на нужную частоту. Для этих целей я написал ActiveX компонент, управляющий трансивером по COM-порту. Вначале этот компонент был написан по правилам написания внешних компонент для 1С-предприятия, т.е. не являлся полноценным ActiveX компонентом. Для моих целей этого вполне хватало, и долгое время мной использовался именной такой вариант. Но когда возникла идея опубликовать этот проект на WEB, то компонент был переписан в полноценный ActiveX объект. В результате появилась возможность использовать его не только из 1С-предприятия, но и, например, из MS Access или любых других программ и средств разработки, поддерживающих технологию COM / ActiveX.
    В данный момент этот компонент поддерживает работу с трансиверами Yaesu FT-847 и Yaesu FT-897D. Возможно, в дальнейшем будут добавлены еще какие-то модели. Учитывая, что трансивер Yaesu FT-857 очень мало отличается от FT-897D, то вероятнее всего возможно управление и этим аппаратом, указав для TrxControl2, что используется FT-897D. Но пока я этого не проверял. Если вы проведете такой эксперимент или точно уверены в идентичности команд CAT интерфейса FT-897D и FT-857, то пожалуйста сообщите мне об этом.

Свойства и методы компонента TrxControl2:
Свойства
Свойство ДоступНазначение
MainFreq RW Рабочая частота (число: Гц)
MainMode RW Режим работы (строка: USB, LSB, AM, AM-N, CW, CW-N, CW-R, CW-RN, FM (FM-25) FM-N (FM-12.5, FM-10) )
Offset RW Смещение частоты передачи (число: Гц)
Shift RW Направление смещения частоты передачи (строка: -, +, 0)
MainFreqTX RW Непосредственная установка частоты передачи
SQL R Состояние шумоподавителя (1-открыт, 0-закрыт)
Discr R Состояние дискриминатора (1-частота точно)
PL R Состояние декодера CTCSS/DCS (1-тон совпадает, 0-нет)
SMeter R Показание S-метра трансивера 0..n (n зависит от модели и может быть например 14 или 31)


Методы
         Метод         Возвращает Параметры Назначение
SetType()   строка с идентификатором трансивера. "FT-847" "FT-897D" Устанавливает тип трансивера, с которым работает данный экземпляр TRX_Contol.trx
GetTRXList() Строка со списком идентификаторов трансиверов, разделенных запятой   Получить список доступных трансиверов.
GetCurTRX() Строка с идентификатором трансивера.   Получить тип текущего трансивера.
SetPort()   номер порта (1-COM1, 2-COM2, и т.д.) Указывает с каким портом работаем
SetPortSpeed()   скорость порта (1200, 2400, 9600, 19200, 28800, 57600, 115200) Устанавливает скорость порта
Connect()     Открывает к использованию порт и если надо посылает необходимые команды управляемому устройству
GetRcvStatus()     Запрашивает из управляемого устройства данные, которые возможно затем получить из свойств "SQL" и "Discr"
Delay()   продолжительность задержки в мС Задержка. Используется для остановки на некоторое время в средствах разработки, где нет такой функции
VFOAB()     Переключает текущий VFO в трансивере (A / B)
SetLock(n)   число 1 или 0 Включает на трансивере режим Lock
SetPTT(n)   число 1 или 0 Включает на трансивере режим PTT
SetClar(n)   число 1 или 0 Включает на трансивере режим Clar (расстройка)
SetClarFreq(n)   число Гц Устанавливает значение расстройки (Гц)
SetSplit(n)   число 1 или 0 Включает на трансивере режим Split
SetCTCSSTone(n)   число от 67.0 до 250.3 Гц (стандартные значения CTCSS тонов) Устанавливает значение CTCSS тона.
SetDCSCode(n)   число от 23 до 754 (стандартные значения DCS кодов) Устанавливает значение DCS кода.
SetPLMode(n)   Строка одна из "CTCSS ON", "CTCSS ENC", "CTCSS DEC", "DCS ON", "DCS ENC", "DCS DEC", "OFF" Устанавливает режим CTCSS/DCS (Private Line)
Методы, предоставляющие информацио и доступности различных функций. В разных моделях трансиверов CAT предусматривает управление разным набором функций.
CanGetMainFreq() число 0 или 1   Доступность считывания частоты из трансивера. Если недоступно, то свойство MainFreq возвращает последнюю установленную частоту.
CanLock() число 0 или 1   Доступность включение режима Lock.
CanPTT() число 0 или 1   Доступность влючать PTT через CAT.
CanClar() число 0 или 1   Доступность Clar (расстройки).
CanSplit() число 0 или 1   Доступность Split.
CanCTCSS() число 0 или 1   Доступность устанавливать тон CTCSS.

 

    Программа-установщик не делалась и поэтому компонент предлагается в виде DLL-файла. Для его использования необходима регистрация в реестре с помощью утилиты regsvr32.exe, входящей в поставку Windows 98, 2000, XP.
Для регистрации в системе необходимо выполнить из командной строки команду "regsvr32 TrxControl2.dll" в директории, где расположен файл TrxControl2.dll. В дальнейшем, при использовании файл должен оставаться там же.

Скачать файл - TrxControl2.dll   (180кб)

Тестировалась работа компонента под OS Windows 98, 2000, XP.
Информация о командах управления трансиверами получена из руководств пользователя. Подключение к трансиверу производится с помощью CAT-интерфейса.

    Пример использования компонента в 1С-Предприятие:

        транс = СоздатьОбъект("TrxControl2.trx");
        транс.SetPort(1);
        транс.SetPortSpeed(57600);
        транс.Connect();


        // В цикле (сканирование)

        чст = (получение частоты например из справочника,документа или ее вычисление)

        транс.MainFreq = чст * 1000; //*1000 для перевода в кГц из Гц
        транс.Delay(40);
        транс.GetRcvStatus();

        Если (транс.SQL = 1) Тогда
                транс.Delay(200);
                транс.GetRcvStatus();
                Если (транс.SQL = 1) и (транс.Discr = 1) Тогда

                   // Действия при обнаружении активности на частоте

                КонецЕсли;
        КонецЕсли;

Алексей Игонин (RA3TLB)