Японский радиолюбитель Makoto Mori, JE3HHT, широко известный своими программами MMTTY, MMANA и MMSSTV - сделал еще один подарок любителям цифровых видов связи. MMVARI написана очень качественно и продуманно, впочем как и другие программы автора, работать c ней - одно удовольствие! Программу легко освоить и удобно пользоваться в реальной работе. Разработку этой программы автор начал, потому что ни одна из ранее написанных программ не могла полноценно работать с иероглифами (япония, китай и др.) в цифровых видах связи. |
Виды модуляции
Общее описание
Между индикатором настройки и кнопками FFT, расположена вертикальная
полоса, это индикатор уровня сигнала и порога шумоподавителя. Входной
сигнал на звуковую карту должен быть таким, чтобы полоска ярко-зеленого цвета
доходила до середины или чуть выше. При недостаточном уровне звукового сигнала,
качество приема заметно ухудшается.
|
В верхнем левом углу располагаются две большие кнопки TX(Home) и TXOFF. Об их назначении догадаться нетрудно, при нажатии TX(Home) программа начинает передачу того, что вы печатаете в передающем окне или выводит текст из заранее подготовленных макросов, при этом название на кнопке меняется на RX. Нажав ее вы перейдете в режим приема. Обратите внимание, что в режимах MFSK, BPSK, GMSK переход на прием происходит не сразу, это особенность протоколов. Кнопка TXOFF выключает передачу мгновенно (обрывает передачу) и не ждет окончания передачи текста. Под надписью BPF расположены четыре кнопки которые управляют шириной полосы пропускания DSP фильтра, чем уже выбранный фильтр, тем больше нагружается процессор компьютера, но и качество приема слабого сигнала или сигнала в QRM, реально возрастает. Хотя, с другой стороны, слишком узкий фильтр, может ухудшить качество приема. Кнопка AFC(АПЧ) включает систему точной автоподстройки на частоту принимаемого сигнала, замечу, что в MMVARI имеется возможность регулировки АПЧ в широких пределах, как по ширине захвата так и по уровню. Когда станции расположены вплотную и сигнал принимаемой станции слабее других, АПЧ может перескочить на соседний сигнал, в этих случаях ее лучше отключать. Кнопка NET фиксирует частоту передачи на определенной месте, в то время как частота приема может меняться, это удобно когда вам отвечают неточно на частоте. Когда NET нажата, частоты приема и передачи совпадают. Кнопка ATC, это автоматический контроль синхронизации, полезная функция при проведении QSO, когда по каким любо причинам, сбиваются временные метки в принимаемом сигнале (например, если у корреспондента не калибрована звуковая карта). С помощью ATC, программа подстраивает временные метки под принимаемый сигнал, чтобы лучше его декодировать, это рельно помогает при приеме слабых и зашумленных сигналов. Обратите внимание, что функция ATC, в MMTTY имеет совершенно другое назначение (не перепутайте)!
Аппаратный журнал |
Начало связи, нужно обозначить нажатием кнопки QSO, после окончания
связи, снова нажмите на кнопку и этот контакт будет записан в журнал. Если
связь не нужно записывать в лог - нажмите на Clear.
Приемное и передающее окна
Статусная строка
Настройка русского языка
Дополнительные каналы приема |
Калибровка звуковой карты
Макросы и их использование |
На картинке вы видите текст, который передает позывной корреспондента и затем ваш позывной. Макросы можно вставлять между текстом в нужные места. В MMVARI существует два типа макросов: Condition command и Macro command они отличаются назначением. Вот список Macro command которые вставляются в обычные тексты, для облегчения рутинной работы: |
<%TX> перейти на передачу <%RX> перейти на прием <%TXRX> переключиться в противоположное состояние <%TXOFF> выключить передачу <%AutoClear> автоматически очищать предающее окно <%ClearTXW> очистить передающее окно <%ClearRXW> очистить приёмное окно <%MyCall> мой позывной <%HisCall> позывной корреспондента <%HisName> имя корреспондента <%DearName> подстановка имени корреспондента во фразу: Dear имя <%HisRST> рапорт для вашего корреспондента <%MyRST> мой рапорт <%FREQ> текущая частота <%BAND> текущий диапазон <%HisQTH> местоположение корреспондента <%Note> текст написанный в заметках <%UDATE> текущяя UTC дата <%UTIME> текущее UTC время в формате HH:MM <%UTIMES> текущее UTC время в формате HH:MM:SS <%LDATE> местная дата <%LTIME> местное время (HH:MM) <%LTIMES> местное время (HH:MM:SS) <%PTIME> <%LPTIME> <%QPTIME> <%Capture> <%HisGreetings=2> автоматическое приветствие (1=GA, 2=Good morning) <%HisNR> порядковы номер и рапорт корреспондента (для контестов) <%MyNR> то же, но рапорт ваш (для контестов) <%Entity=<%HisCall>> <%EntityName=<%HisCall>> <%Continent=<%HisCall>> <%PLATFORM> тип операционной системы <%CodePage> кодовая страница выбранного языка <%LanguageID> цифровой идентификатор выбранного языка <%VER> версия программы <%VERMINOR> <%VARITYPE> <%MODE> текущий режим работы <%Level> соотношение сигнал-шум корреспондента <%PeakLevel> пиковое значение сигнал-шум <%AverageLevel> <%MetricMFSK> <%MetricMFSK=even> <%SquelchLevel=3.0> установить уровень шумоподавителя (s/n=3db) <%CWID> передать свой позывной CW в конце <%CWID= 73 :> передать указанный текст <%CWSpeed=20> скорость передачи CW <%MODE=GMSK> установить режим работы (rtty, bpsk, mfsk...) <%AutoNET> включить автоподстройку передачи автоматически <%NETON> включить автоподстройку передачи <%NETOFF> выключить автоподстройку передачи <%AFCON> включить автоподстройку приёма <%AFCOFF> выключить автоподстройку приёма <%ATCON> включить регулировку усиления <%ATCOFF> выключить регулировку усиления <%RxCarrier> показать текущую частоту приема <%TxCarrier> показать текущую частоту передачи <%RxCarrier=1750> установить текущую частоту приема <%TxCarrier=1750> установить текущую частоту передачи <%AFCFrequency> показать частоту автоподстройку приема <%TONE> передать одиночный тон <%BPF=0> установить один из фильтров 0, 1, 2 или 3 <%BPFTaps=64,80,128,256> установить ширину dsp-фильтров <%Notch=ONOFF> включить-выкл notch-фильтр <%Notch=1750> установить частоту notch-фильтра в герцах <%NotchTaps=128> установить добротность notch-фильтра (16-512) <%NotchWidth=1> установить ширину notch-фильтра (1-1000) <%BAUD> показать текущую скорость работы <%BAUD=31.25> установить скорость (20-300) <%AFCWidth=50> частота AFC в герцах <%AFCLevel=12> чувствительность AFC в децибелах <%ATCSpeed=0> скорость ATC (0-5) <%ATCLevel=15> чувствительность ATC в децибелах <%ATCPPM> корректировка ATC в ppm <%PTT=COM1> установить номер порта для управления ptt <%Radio=COM2> установить номер порта для обмена с трансивером <%RadioOut=\$000000000F> информация для радиопорта <%RadioCarrierKHz> <%RadioKHz> частота ГПД в кГц <%RadioKHz=YAESU-HF,14073.000> <%RadioMode> показать режим работы интерфейса радиостанции <%RadioMode=CI-V,LSB> установить режим работы интерфейса для радиостанции <%PTTON> нажать ptt <%PTTOFF> отпустить ptt <%FFTScale> показать текущий диапазон FFT индикатора <%FFTScale=2> установить диапазон для FFT (0-2) <%FFTWidth=1000> установить ширину обзора FFT индикатора (500-3000) <%SyncWidth=14> <%ShowCH=1,ONOFF> показать первый канал приема (1-4) (on/off/onoff) <%SetCHSpeed=1,31.25> установить скорость в первом канале приема <%SetCHMode=1,GMSK> установить протокол в первом канале приема <%ClearCHW=1> закрыть окно, первого канала приема (1-4) <%QSOON> обозначить начало qso <%QSOOFF> обозначить конец qso <%FREQ=7> установить частоту <%BAND=40m> установить диапазон <%HisCall=<%Capture>> установить позывной корреспондента <%HisRST=599> установить рапорт корреспондента <%MyRST=599> установить установить мой рапорт <%Note=<%VARITYPE>> написать заметку в журнал <%RefRXW> открыть приемное окно для редактирования <%EditFile=memo.txt, 0> открыть файл (имя, только чтение) <%SendFile=test.txt> передать файл <%EditMacro=2> редактировать макрос с указанным номером <%EditMacro=OnStart> редактировать макрос с указанным именем <%EditMacro=AS(CW)> редактировать макрос AS(CW) <%EditMacro=MacroTxt.txt> редактировать текстовый файл с макросом <%MacroText=MacroTxt.txt> запустить макрос из текстового файла <%SaveMacro=Macros.mac> сохранить все макросы <%LoadMacro=Macros.mac> загрузить все макросы <%HEX2DEC=ABCD> перевод значения из DEC в HEX <%CHAR=A> <%CHARX=A> <%CODE=82A0> <%SP> добавить пробел <%CR> добавить символ CR <%BS> добавить символ перевода строки <%TAB> добавить символ табуляции <%SkipCR> пропустить символ CR (ENTER) в макросе <%DisableCR> выключить CR в макросе <%EnableCR> включить CR в макросе <%DisableTAB> выключить табуляцию в макросе <%EnableTAB> включить табуляцию в макросе <%DisableSP> выключить пробел в макросе <%EnableSP> включить пробел в макросе <%Skip$=3,<%HisCall>> пропускать указанный ASCII код <%MSkip$=3,<%Note>> <%Find$=xx,ABCxxVVV> искать строку <%StrLen=<%HisCall>> показать длину строки <%MStrLen=<%Note>> <%ONOFF=<%Cond=IsSQ>> <%RepeatText=3,<%RepeatText=33,RY><%CR>> повторить указанную строку <%IDLE> передавать idle сигнал <%DIDDLE=LTR> установить diddle код для RTTY (BLK или LTR) <%UOS=ON> установить UOS для RTTY (on/off/onoff) <%RTTYWaitC=0> установить ожидание символа для RTTY <%RTTYWaitD=0> установить ожидание diddle для RTTY <%RTTYWordOut=ON> <%TxShift=170.0> установить разнос тонов передачи <%RxShift=170.0> установить разнос тонов приёма <%ToUpper=<%HisName>> <%ToLower=<%HisCall> de <%MyCall>> <%IME=ON> контроль IME (on, off, onoff) <%RepeatTX=3000> повторить предачу через указанное кол-во милисекунд <%Repeat=10000> повторить макрос через указанное кол-во милисекунд <%OnTimer=<%WaterMsg=4,<%AFCFrequency>Hz>> установить OnTimer для макроса <%Page=1> <%AutoReturn> <%MoveTop> установить курсор в начало текста <%MoveEnd> установить курсор в конец <%PopupTXW> <%DupeText> <%SeekNext> <%SeekPrev> <%SeekTop> <%DigitalLevel=16384> <%OutputVolume> <%InputVolume> <%Setup> открыть окно с установками <%SetupLog> открыть окно аппаратного журнала <%SetupRadio> открыть окно с установками для трансивера <%Calibration> открыть окно для калибровки звуковой карты <%BaseClock> показать базовую частоту часов звуковой карты <%Clock> показать скорректированную частоту зв.карты для приема <%Clock=11025.00> установить частоту зв.карты для приема <%TxOffset> показать сдвиг частоты тонов для передачи <%TxOffset=0.00> установить сдвиг частоты тонов <%DemodulatorClock> частота демодулятора в герцах <%FFTClock> <%FFTSize> <%WaterNoise> показать чувствительность водопада в децибелах <%WaterNoise=35,65> установить чувствительность водопада <%WaterLevels> показать уровень водопада <%WaterLevels=10,60,134,192,220,240> установить уровень водопада <%WaterColors> показать цвета водопада <%WaterColors=0,FF0000,FFFFFF,FF,FFFF00,FF0000,FFFF00,FFFF,80FF,FF,FF,FF> <%SpectrumColors> показать цвета индикатора <%SpectrumColors=0,FF00,FFFFFF,808080,FFFF00,FF0000> установить цвет водопада <%RxColors> показать цвета rx окна <%RxColors=FFFFFF,0,FF0000,FF,E0E0E0> <%TxColors> показать цвета tx окна <%TxColors=FFFFFF,0,FF0000,FF,FFFFFF> <%SoundName> показать имя звуковой карты <%SoundDevice=MONO,-1> установить режим ввода-вывода звука <%Suspend> освободить звуковую карту без выгрузки программы <%Resume> <%Wait=1000> ожидание в милисекундах <%Execute=notepad.exe <%Folder>memo.txt> запустить указанную программу <%Shell=<%Folder>emmvari.txt> открыть файл в оболочке <%Exit> выйти из программы <%ShutDown> перезагрузить windows <%YesNo=String> <%YesNoCancel=String> <%OkCancel=String> <%Error=Macro ERROR> <%Warning=Macro WARNING> <%Message=Macro message> <%WaterMsg=4,Metric=<%MetricMFSK>> <%Repeat=1000> <%RxStatus=Status> <%TableCount=AAA,BBB,CCC> <%TableStr=1,AAA,BBB,CCC> <%Table=<%BAUD>,20.0,31.25,45.0> <%Menu=A,B,C,D> <%MenuB="<%Table=<%BAUD>,20.0,31.25,45.45,62.5>",20.0,31.25,45.45,62.5> <%Menu> <%Input=Input strings> <%Input$> <%Click$> <%CLICK$> <%KeyStroke=41> <%KeyDown=12> <%KeyStroke=<%CHARX=V>> <%KeyUp=12> <%KeyUp=12> <%DoMacro=2> <%DoEvent=OnMode> <%Events> <%ButtonName=1,Clear> <%ButtonContents=1,<%ClearTXW>> <%PlayBack=ON> <%PlayBack=10> <%PlayBackSpeed=5> <%PlayBackButtons=60,30,15> <%PlaySound=sound.mmv> <%PlaySound> <%RecordSound=sound.mmv> <%RecordSound> <%QuickRecordSound> <%StopPlayRecord> <%SoundTime> <%Slider=CW speed,<%CWSpeed>,10,60,1,10> <%FileDialog=Text file,Text Files(*.txt)|*.txt|,Default,txt,> <%CPUBENCHMARK> показать скорость процессора <%RANDOM=<%PTIME>> <%RANDOM> <%String=Name> <%CallProc=Name> <%DebugProc=Name> <%Format=%.3f,<%BAUD>> <%Inv=<%Cond=IsSQ>> <%Floor=<%BAUD>> <%Log=10> вычислить логарифм указанного числа <%Exp=2.302585092994046> <%Sqrt=10> <%Pow=10,2> <%Sin=0.5> вычислить синус указанного числа <%Cos=0.5> вычислить косинус указанного числа <%Tan=0.5> вычислить тангенс указанного числа <%ArcTan=0.5> вычислить арктангенс указанного числа <%Cond=IsSQ> <%ListSpeed=20.0,31.25,45.45,62.5,93.75,125.0,250.0> <%ListCarrier=500,800,1000,1200,1500,1750,2000,2210> <%ListLogFreq=1.8,3.5,7,10,14,18,21,24,28,50,144,430,1200> <%SetCaptureLimit> <%ClearCaptureLimit> <%Font> <%Font=,14,> <%SetFocus> <%Folder> <%AddMenu=E&X,Caption&1,OnCaption1Click> <%InsertMenu=&H,&P,Caption&1, OnCaption1Click> <%ShowMenu=&F, ONOFF> <%EnableMenu=&F, ONOFF> <%ShortCut=&V, &C, &1, Ctrl+1> <%CheckMenu=&H, &P, ONOFF> <%DeleteMenu=&X> <%DoMenu=&V,&C,&1> <%DoButton=FFT> <%ShowHTML=home> <%SendMessage=PSKGNRFUNC,0,1> <%Memory> статус памяти (загрузка в %, всего в Мб, свободно в Мб.) <%BuffSize=4096> установить минимальный размер буфера для макроса <%EOF> символ конца макроса |
Как видите, здесь есть всё что только можно придумать, но и это еще не все! Теперь смотрите список Condition command, они применяются при создании сложных (интелектуальных) скриптов для расширения возможностей программы: |
#if IsCall #if IsName #if IsHisRST #if IsMyRST #if IsQTH #if IsNote #if IsLocal #if IsQSO #if IsDupe #if IsAFC #if IsNET #if IsTX #if IsPTT #if IsSQ #if IsTone #if IsTXEmpty #if IsRXScroll #if IsRepeat #if IsIME #if IsPlaying #if IsFileSending #if IsRecording #if IsFile(test.txt) #if IsDefined(Name) #if IsMBCS(<%HisName>) #if IsAlpha(<%MyNR>) |
#if IsNumber(<%MyNR>) #if IsUOS #if IsRadioLSB #if IsCaptureText(CQ) #if IsOnTimer #if IsIdle #if IsEnglish #if IsMfskCenter #if IsMfskMetricSq #if Is1stCR #if IsPlayBack #if IsCodeMM #if IsCall(<%CLICK$>) #if IsRST(<%CLICK$>) #if IsMenu(&H, &U) #if IsMenuEnabled(&H, &U) #if IsMenuChecked(&H, &U) #if IsMenuVisible(&H, &U) #if IsButton(QSO) #if IsButtonEnabled(QSO) #if IsButtonDown(QSO) #if ValFreq>=144 #if ValBaud==31.25 #if ValCarrierRX<1500 #if ValCarrierTX<1500 #if ValTimeLocal<1200 #if ValTimeUTC>=0900 |
#if ValDateLocal>=0801 #if ValDateUTC<0401 #if ValScope #if ValMacro(<%VER>)>=0.37 #if ValMenu #if StrCall==JA3QRZ #if StrMode==GMSK #if StrBand==40m #if StrHisRST==599 #if StrMyRST==599 #if StrNote==??? #if StrEntity==JA #if StrContinent==AS #if StrVARITYPE==JA #if StrPLATFORM==XP #if StrMacro(<%VER>)==0.37 #else #endif #macro <%TX> #proc Name #endp конец процедуры #repeat 3 #define Name Strings #DELETE Name #DELETEALL #exit выход из макроса #comment строка с коментарием |
Авторские макросы от RN9AAA
Управление добротностью полосового DSP-фильтра: <%DisableCR> #macro <%Menu=16,32,64,80,96,112,128,256,512> #if ValMenu #define _cLine <%Format=%d,<%Input$>> <%BPF=0><%BPFTaps=_cLine> #endif <%EOF>
Меню для управления DSP-фильтром: <%DisableCR> <%SquelchLevel=0><%AFCON> #macro <%Menu=rtty-U-Smart,rtty-L-Smart,bpsk-Narrow,mfsk-U-DX,mfsk-L-DX, -, Stop> #if ValMenu == 1 #macro <%OnTimer=<%MODE=rtty-U><%Notch=<%AFCFrequency>>><%NotchTaps=512><%NotchWidth=40> #elseif ValMenu == 2 #macro <%OnTimer=<%MODE=rtty-L><%Notch=<%AFCFrequency>>><%NotchTaps=512><%NotchWidth=40> #elseif ValMenu == 3 <%MODE=bpsk><%BPF=0><%BPFTaps=256><%NotchTaps=512><%NotchWidth=400> #if <%AFCFrequency> >= 1450 #macro <%OnTimer=<%Notch=<%Format=%f,<%AFCFrequency>-433>>> #else #macro <%OnTimer=<%Notch=<%Format=%f,<%AFCFrequency>+433>>> #endif #elseif ValMenu == 4 #macro <%OnTimer=<%MODE=mfsk-U><%Notch=OFF><%BPF=0><%BPFTaps=96>> #elseif ValMenu == 5 #macro <%OnTimer=<%MODE=mfsk-L><%Notch=OFF><%BPF=0><%BPFTaps=96>> #elseif ValMenu == 6 #macro <%OnTimer=><%Notch=OFF> #endif <%EOF>
Установка порога чуствительности 'водопада': <%DisableCR> #macro <%Menu=16,25,35,45,55,65,75> #if ValMenu #define _cLine <%Format=%d,<%Input$>> <%WaterNoise=_cLine> #macro <%OnTimer=<%WaterMsg=4,УРОВЕНЬ <%WaterNoise>dB>> #endif <%EOF> |
Определение страны по позывному: <%DisableCR> #comment made rn9aaa 2004.11.06 #macro <%Menu=Auto Info Call,Manual info Call,-, Stop> #if ValMenu == 1 #macro <%OnTimer=<%WaterMsg=4,<%Capture>><%WaterMsg=3,<%EntityName=<%Capture>> ** <%Continent=<%Capture>>>> #elseif ValMenu == 2 #macro <%OnTimer=<%WaterMsg=3,<%EntityName=<%HisCall>> ** <%Continent=<%HisCall>>>> #elseif ValMenu == 3 #macro <%OnTimer=> #endif <%EOF>
Изменение разноса между частотами <%DisableCR><%DisableTAB> #comment made rn9aaa 2004.11.06 #define _tTitle Shift RTTY and FSK-W #define _tCommand TxShift #define _tRange "10,450,1" #macro <%Menu=_tTitle> #if ValMenu #define _strArg <%TableStr=<%Menu>,_tTitle>,<%TableStr=<%Menu>,_tCommand>, <%TableStr=<%Menu>,_tRange> <%CallProc=Slider, _strArg> #endif #proc Slider @Title, @Command, @Min, @Max, @Step, @NumScales <%DisableCR> #macro <%Slider=@Title, <%@Command>, @Min, @Max, @Step, @NumScales> #if StrMacro(<%Input$>) <%@Command=<%Input$>> <%RxShift=<%Input$>> #endif #endp <%EOF>
Обновление файла ARRL.DX
Сканирование в полосе звуковых частот: <%DisableCR><%DisableSP> <%AFCON><%ATCON><%NETON> #comment made rn9aaa 2004.11.24 <%WaterMsg=1,Scan> #if <%RxCarrier> > 2650 <%RxCarrier=250> #elseif <%RxCarrier=<%Format=%f,<%RxCarrier>+20>> #endif #if <%Level> > 5 <%RxCarrier=<%Format=%f,<%RxCarrier>+5>><%WaterMsg=1,Busy> #else #macro <%Repeat=1> #endif <%EOF> Эти примеры, сделаны мной для изучения возможностей программы, все константы вы можете менять в разумных пределах и попробрвать подобрать оптимальные значения для вашей системы PC<-->TX/RX. Я не несу какую либо ответственность за последствия в применении данного макро-кода, все что вы делаете, является только вашей личной волей и стремлением к познанию. |
Заключение Результаты тестирования MMVARI и сравнение ее с другими программами аналогичного назначения, смотрите в ''сводной таблице качества приема программ'', данные в ней простоянно уточняются.
Полезные ссылки |
RN9AAA
UA6HJQ |