Руководство по эксплуатации

advertisement
Программа для управления прибором РСТ-430
1. Краткое описание
4.1 Назначение
Программа предназначена для управления радиокоммуникационным сервисным тестером
РСТ-430
Программа позволяет настроить прибор, снять измерения и записать их в отчет Excel.
4.2 Технические характеристики
4.2.1 Скорость снятия с прибора любого измерения 1 измерение в секунду.
4.2.2 Программа позволяет снимать измерения: частоту, мощность, девиацию/модуляцию,
КНИ, частоту НЧ из прибора в режиме измерения параметров передатчика и СИНАД,
напряжение и частоту НЧ из прибора в режиме измерения параметров приемника.
4.2.3 Программа позволяет устанавливать: напряжение модуляции, частоту модуляции,
выход модуляции (AFOUT, EXT3, EXT4) прибора в режиме измерения параметров
передатчика и частоту ВЧ, мощность, частоту модуляции, частоту НЧ прибора в режиме
измерения параметров приемника.
4.2.4 Так же позволяет отключать или включать модуляцию, менять вход измерений
(AFIN,EXT1, EXT2) прибора в режиме измерения параметров приемника и менять вид
модуляции (АМ, ЧМ) для обоих режимов.
4.2.5 Все виды измерений можно сохранить в отчет Excel.
4.3 Общие сведения о программе
4.3.1 Назначение кнопок
Внешний вид программы представлен на Рис.1
Рис. 1
Красная кнопка- включение/выключение программы. Сам прибор
кнопки не выключается.
по нажатию этой
Кнопка с ? – вызов окна-помощника показывающего текущий режим программы,
назначения действующих кнопок на клавиатуре программы и режимы в которые можно перейти. Она
предназначена для более понятной и комфортной работы с программой.
Кнопка с «Х»- закрытие программы. Если отчет Excel не был сохранен, программа
предложит его сохранить.
Панель статуса – внизу экрана программы отображает возможность сохранить в отчет в
Excel( когда измерение удачное и не отображаются символы «--.--» или «----.--»), при не отключенном
приборе- сообщает что прибор отключен как на Рис.1.
Кроме окна-помощника также при наведении указателя мыши на каждой кнопке
всплывает всплывающие подсказки с информации о назначении кнопки в текущем режиме. На тех
кнопках , которые не участвуют в текущем режиме подсказка не всплывет.
4.3.1.1 Назначение кнопок клавиатуры программы в режиме измерения параметров
передатчика.
В этот режим программа попадает разу после нажатия красной кнопки.
F1 –перевод прибора в режим измерения частоты ВЧ
F2 – перевод прибора в режим измерения мощности
F3 – перевод прибора в режим измерения девиации в режиме ЧМ (модуляции в режиме
АМ)
F4 - перевод прибора в режим измерения КНИ
F5 - перевод прибора в режим измерения частоты НЧ
ESC- переход программы в режим установок прибора в режиме измерения параметров
передатчика. В этот режим переходит только программа, прибор же остается в том режим в котором
он находится в данный момент.
Start-переход программы в режим изменения опций прибора. В этот режим переходит
только программа, прибор же остается в том режиме, в котором он находится в данный момент.
Tab- перевод программы в режим измерения параметров приемника. В этот режим
переходит только программа, прибор же остается в том режиме, в котором он находится в данный
момент. Перейдя в этот режим, программа не будет считывать измерения с прибора. Для этого
необходимо будет выбрать кнопками F1,F2,F5 необходимый вид измерений.
4.3.1.2 Назначение кнопок клавиатуры программы в режиме измерения параметров
приемника.
F1 –перевод прибора в режим измерения частоты СИНАД
F2 – перевод прибора в режим измерения напряжения
F3 – перевод прибора в режим изменения входа измерений
F4 – отключение/включение модуляции
F5 - перевод прибора в режим измерения частоты НЧ
ESC- переход программы в режим установок прибора в режиме измерения параметров
приемника. В этот режим переходит только программа, прибор же остается в том режиме, в котором
он находится в данный момент.
Start-переход программы в режим изменения опций прибора. В этот режим переходит
только программа, прибор же остается в том режиме, в котором он находится в данный момент.
Tab- перевод программы в режим измерения параметров приемника. В этот режим
переходит только программа, прибор же остается в том режиме, в котором он находится в данный
момент. Перейдя в этот режим программа не будет считывать измерения с прибора. Для этого
необходимо будет выбрать кнопками F1,F2,F5 необходимый вид измерений.
4.3.1.3 Назначение кнопок клавиатуры программы в режиме изменения установок прибора
в режиме измерения параметров передатчика
F1 – переход в режим редактирования напряжения модуляции
F2 – переход в режим редактирования частоты модуляции
F3 – переход в режим установки выхода модуляции
ESC – Выход из установок
4.3.1.4 Назначение кнопок клавиатуры программы в режиме изменения установок прибора
в режиме измерения параметров приемника
F1 – переход в режим редактирования частоты
F2 – переход в режим редактирования мощности на выходе
F3 – переход в режим редактирования модуляции
F4 – переход в режим редактирования частоты НЧ
ESC – Выход из установок
4.3.1.5 Назначение кнопок клавиатуры программы в режиме редактирования любой
установок выбранных в пунктах 4.3.1.3 и 4.3.1.4.
0-9, , - клавиши набора нового значения редактируемого параметра
Space – удаление введенного числа
Enter – подтверждение введенного параметра. После нажатия этой кнопки в прибор будет
сохранено новое значение параметра, если оно попадает в допустимые значения. Допустимые
значения отображаются в окне-помощнике в режиме редактирования параметра. При допустимом
значении прибор перейдет в установки и отобразит все установки, в том числе и новое установленное.
Esc – отмена редактирования параметра в установках
4.3.1.6 Назначение кнопок клавиатуры программы в режиме установки выхода модуляции
F1 – установка выходом модуляции AFOUT
F2 – установка выходом модуляции EXT3
F3 – установка выходом модуляции EXT4
4.3.1.7 Назначение кнопок клавиатуры программы в режиме установки входа измерений.
F1 – установка выходом модуляции AFIN
F2 – установка выходом модуляции EXT1
F3 – установка выходом модуляции EXT2
4.3.1.7 Назначение кнопок клавиатуры программы в опции прибора.
F1 – смена вида модуляции
ESC – Выход из опции
4.3.2 Назначение кнопок клавиатуры компьютера при активной форме программы
Enter – сохранение результата измерения в Excel. При первом нажатии загружает и
показывает сформированный отчет с измеренным параметром, а в последующие нажатия просто
добавляет измерения в отчет. Эта кнопка доступна только когда программа находится в режиме
измерения какого-то параметра и измерение удачное (не отображаются символы «--.--» или «----.--»).
В любом случае о доступности этой кнопки пишет панель статуса внизу экрана программы
сообщением Сохранить результат измерения – Enter или Сохранить результат измерения - Enter
Завершить протокол – Пробел при однократном нажатии на нее.
Пробел – вызов меню сохранения отчета в папке Otschet. Доступна только после
сохранения хотя бы одного параметра в отчет. В любом случае о доступности этой кнопки пишет
панель статуса внизу экрана программы сообщением Сохранить результат измерения - Enter
Завершить протокол – Пробел при однократном нажатии на нее.
4.3.3 Назначение кнопок в меню сохранения отчета.
В меню доступен только ввод номера отчета, под которым он будет сохранен.
Сохранить – сохранение отчета под выбранным номером. В случае совпадения с
существующим отчетом программа предложит переписать или отменить сохранение
Распечатать – отправка отчета на печать
Отмена – отмена сохранения и выход из меню сохранения отчета.
4.4 Настройка программы
4.3.1 Настройка СОМ-порта.
В начале после запуска программы, но не нажата красная кнопка необходимо настроить
СОМ-порт. Для этого правой кнопкой мыши вызываем меню настройки номера СОМ-порта.
Настройка СОМ-порта доступна только при выключенной красной кнопке. В меню настройки
доступен только выбор номера порта, все остальные настройки сохранены в программе по умолчанию
и не меняются.
4.3.1 Не интерфейсные настройки
Кроме органов управления есть файл Options.ini с названиями параметров сохраняющиеся
в файле отчета при записи параметра в отчет по Enter. Например ключ F1= Частота несущая
передатчика соответствует параметру сохраняемому по Enter в режиме измерения частоты в
положении передатчик. Таким образом, все эти названия сохраняющиеся по Enter можно изменять
если в этом будет необходимость. Всего имеется девять ключей с F1 по F8. C F1 по F5 сохраняются
названия измеренных параметров прибора в режиме измерения параметров передатчика. При этом при
измерении девиации сохраняется название из ключа F3_CM, а при измерении модуляции сохраняется
из ключа F3_AM.
Для настройки отчетов сохраняющихся по Пробелу имеется файл шаблон Shablon.xls
который так же можно подстраивать при необходимости: шаг, названия и т.д.., кроме перестановок
названий. Все отчеты сохраняются в папке Otschet.
4.5 Работа с программой совместно с прибором
Весь интерфейс позаимствован у прибора, но функционально его не повторяет. То есть
все нажатия кнопок в точности не повторяют нажатия кнопок прибора, а только лишь позволяет
установить новые установки и снять измерения
При нажатии на красную кнопку программа перейдет в рабочий режим. В этом режиме
программа сохранит в приборе установленные по умолчанию в программе установки всех установок в
приборе. То есть установит напряжение модуляции 0.25 В, частоту модуляции 1 кГц, выход
модуляции AFOUT в установке в режиме измерения параметров передатчика, частоту 173 МГц, выход
120 дБм, модуляцию 30 кГц, частоту НЧ 1 кГц в установках прибора в режиме измерения параметров
приемника, кроме того, устанавливается ЧМ модуляция и включение модуляции. Установив
настройки, программа переведет прибор в режим измерения несущей частоты передатчика. Перевод
прибора в другие режимы осуществляется кнопками F1-F5 в режиме измерения параметров
передатчика и F1,F2,F5 в режиме измерения параметров передатчика. В режиме измерения параметров
передатчика кнопка F3- изменяет вход измерений, который запоминается в приборе только после
нажатия кнопок F1-F3 выбирающий соответствующий вход F1 - AFIN1,F2 - EXT1 и F3 - EX2. В
режиме измерения параметров передатчика кнопка F4 (включение/выключение модуляции) - сразу
сохраняет в приборе при нажатии на нее.
При нажатии на Esc при измерении любого параметра прибором программа переходит в
режим установок прибора в режиме измерения параметров или приемника или передатчика. Прибор
же остается в режиме измерения, не переходя никуда. В режиме установок в программе можно
установить новые установки нажатием F1-F5 в режиме Приемник и F1-F3 в режиме Передатчик.
Программа перейдет в режим редактирования выбранного параметра! Кнопками 0-9 и , выставляем
параметр, кнопкой Space на клавиатуре программы удаляют введенные символы, а Esc отмена. После
установки нового значения новое значение фиксируют кнопкой Enter на клавиатуре прибора. Прибор
переходит в режим измерения параметров и отображает соответствующий раздел установок с новыми
установленными параметрами. Для переходами обратно в режим измерения нажмите Esc и выберите
измерение, которое нужно кнопками F1-F5! Прибор из установок перейдет в выбранный пункт
измерения.
Для смены вида модуляции АМ/ЧМ перейдите в опции нажатием кнопки Start и там
кнопкой F1 можно сменить АМ/ЧМ модуляцию. Только после нажатия на F1 – установится модуляция
в приборе. Возврат в режим измерение так же происходит по нажатию Esc и нажатия на
соответствующий пункт измерения кнопками F1-F5.
Описание функций управления прибором РСТ-430 для написания других программ
(приводится для предоставления возможности подстройки данной программы под потребности пользователя)
Функция управления прибором делится на две части: первая часть отправляет команду
соответствующему установленному режиму. Вторая часть размещена в событии принятия пакета
от СОМ-порта и обрабатывает ответ в соответствии установленному режиму.
//Первая часть функции – это функция CommPortWrite(int N_reg,int pod_regim) параметрами
которой задается режим установки соответствующего режима или считывания соответствующего
измерения с прибора.
int N_reg
– номер режима в котором находится прибор
int pod_regim – номер подрежима в котором находится прибор
MyComm1->Write – запись в СОМ-порт команды
int reg_comport;
//режим в котором находится прибор при обработки ответа от
прибора
int podreg_comport;
//подрежим, в котором находится прибор при обработки ответа
от прибора
Итак, рассмотрим все возможные случаи вызова функции
а)CommPortWrite(0,0) - //устанавливаем установки прибора в режиме измерения параметров
передатчика Установливаем новые значения напряжения модуляции, частоты модуляции и выход
модуляции( может быть AFOUT, EXT3, EXT4) те что по Esc.
б) CommPortWrite(0,2) - //устанавливаем установки прибора в режиме измерения параметров
приемник.! Устанавливаем новые
в) CommPortWrite(3,0) - //переводим прибор в режим измерения частоты передатчика
г) CommPortWrite(3,1) - //переводим прибор в режим измерения мощности передатчика
д) CommPortWrite(3,2) - //переводим прибор в режим измерения девиации или модуляции
передатчика в зависимости от вида модуляции CM_AM == "ЧМ" – при АМ модуляции и CM_AM
== "АМ" – при ЧМ модуляции.
е) CommPortWrite(3,3) - //переводим прибор в режим измерения КНИ передатчика
ж) CommPortWrite(3,4)- //переводим прибор в режим измерения частоты НЧ передатчика
з) CommPortWrite(4,0) - //переводим прибор в режим измерения чувствительности методом
"СИНАД" приемника
и) CommPortWrite(4,1) - //переводим прибор в режим измерения выходного напряжения приемника
к) CommPortWrite(4,2) - //переводим прибор в режим измерения частоты НЧ приемника
к) CommPortWrite(5,0) - //устанавливаем вид модуляции прибора.
String F_VCH_izm
String U_BCH_izm
String dev_mod
передатчика
String KNI_pered
String f_nch
String CINAD
"СИНАД" приемника
String U_veyh
приемника
String F_Nch
="$0007:Mtf,00@";
="$0007:Mtp,00@";
="$0007:Mtd,00@";
//команда измерения частоты ВЧ передатчика
//команда измерения мощности передатчика
//команда измерения девиации модуляции
="$0007:Mtk,00@"; //команда измерения КНИ передатчика
="$0007:MtF,00@"; //команда измерения частоты НЧ передатчика
="$0008:MrSs,00@"; //команда измерения чувствительности методом
="$0007:MrU,00@";
//команда измерения выходного напряжения
="$0007:MrF,00@";
//команда измерения частоты НЧ приемника
void __fastcall TForm1::CommPortWrite(int N_reg,int pod_regim)
{ if(N_reg == 0 && pod_regim==0) //
{ Nastr_paket_pered();
//Формируем команду по установкам
Sleep(1000);
MyComm1->Write(Set_Nastr_pered.c_str(),Set_Nastr_pered.Length()); //устанавливаем настройки
прибора в режиме измерения параметров передатчика
reg_comport = 0;
//выставляем флаги для второй функции
podreg_comport = 1;
//при получении ответа от прибора
}
if(N_reg == 0 && pod_regim==2)
{ Nastr_paket_priem();
Sleep(1000);
MyComm1->Write(Set_Nast_priem.c_str(),Set_Nast_priem.Length()); //устанавливаем настройки
прибора изм приемника
reg_comport = 0;
podreg_comport = 3;
}
if(N_reg == 3 && pod_regim==0)
//измерение частоты ВЧ передатчика
{ podreg_comport = 1;
reg_comport = 3;
MyComm1->Write(F_VCH_izm.c_str(),F_VCH_izm.Length());
}
if(N_reg == 3 && pod_regim==1)
{ podreg_comport = 2;
//измеряют мощность
reg_comport = 3;
MyComm1->Write(U_BCH_izm.c_str(),U_BCH_izm.Length()); //
}
if(N_reg == 3 && pod_regim==2)
{ podreg_comport = 3;
//измеряют девиацию или модуляцию
reg_comport = 3;
if(CM_AM == "ЧМ")
dev_mod="$0007:Mtm,00@";
else
dev_mod="$0007:Mtd,00@";
MyComm1->Write(dev_mod.c_str(),dev_mod.Length());
}
if(N_reg == 3 && pod_regim==3)
{ podreg_comport = 4;
//измеряют КНИ
reg_comport = 3;
MyComm1->Write(KNI_pered.c_str(),KNI_pered.Length());
}
if(N_reg == 3 && pod_regim==4)
{ podreg_comport = 5;
//измеряют частоту НЧ передатчика
reg_comport = 3;
MyComm1->Write(f_nch.c_str(),f_nch.Length());
}
if(N_reg == 4 && pod_regim==0)
{ podreg_comport = 1;
//Измерить чувствительность методом "СИНАД"
reg_comport = 4;
MyComm1->Write(CINAD.c_str(),CINAD.Length());
}
if(N_reg == 4 && pod_regim==1)
{ podreg_comport = 2;
//Измерить выходное напряжения приемника
reg_comport = 4;
MyComm1->Write(U_veyh.c_str(),U_veyh.Length());
}
if(N_reg == 4 && pod_regim==2)
{ podreg_comport = 3;
//Измерить частоту НЧ приемника
reg_comport = 4;
MyComm1->Write(F_Nch.c_str(),F_Nch.Length());
}
if(N_reg == 5 && pod_regim==0)
//устанавливаем новый вид модуляции
{ Nastr_paket_priem();
Sleep(1000);
MyComm1->Write(Set_Nast_priem.c_str(),Set_Nast_priem.Length());
reg_comport = 5;
podreg_comport = 1;
}
Timer5->Enabled = true;
//запускаем таймер таймаута, если время его истечет, а прибор ничего
не выдаст в ответ на команду то в нем будет говорить об отключении прибора
}
//подпрограмма формирует команду установки новых значений установок прибора в режиме
измерения параметров передатчика и вид модуляции(АМ или ЧМ).. Входными параметрами
являются глобальные переменные
String U_mod_str;
//напряжение модуляции
String F_mod_str;
//частота модуляции
String Out_mod_str;
//выход модуляции может быть AFOUT, EXT3, EXT4
В итоге получаем готовую команду установки новых установок прибора в режиме измерения
параметров передатчика записанную в переменную Set_Nastr_pered
String Paket_tmp;
String __fastcall TForm1::Nastr_paket_pered()
{ Paket_tmp = ":";
podreg_comport = 1;
if(CM_AM == "ЧМ")
//флаг показывает в какой вид модуляции прибор можно
перевести
Paket_tmp = Paket_tmp+"StA,"; //т.е. если ЧМ – значит прибор в режиме АМ модуляции и
можно его
Else
//перевести в ЧМ модуляцию и наоборот
Paket_tmp = Paket_tmp+"StF,";
if(Out_mod_str == "AFOUT")
Nch_Bx = "M1";
if(Out_mod_str == "EXT3")
Nch_Bx = "M2";
if(Out_mod_str == "EXT4")
Nch_Bx = "M3";
Paket_tmp = Paket_tmp+U_mod_str+','+F_mod_str+','+Nch_Bx+'@';
Set_Nastr_pered = "$"+paket_side_ras(Paket_tmp)+Paket_tmp;
}
//подпрограмма формирует команду установки новых значений установок прибора в режиме
измерения параметров приемника, а также отключение или включение модуляции и вид
модуляции(АМ или ЧМ). Входными параметрами являются глобальные переменные
String F_VH_str;
String U_VH_str;
String Dev_VH_str;
String F_NH_str;
String Vhod_izm;
String Vkl_mod;
//частота ВЧ в режиме измерения пар-в приемника
//напряжение ВЧ в режиме измерения пар-в приемника
//девиация в режиме измерения пар-в приемника
//частота НЧ в режиме измерения пар-в приемника
//вход измерения может быть AFIN, EXT1, EXT2
//включение или откючение модуляции
В итоге получаем готовую команду установки новых установок прибора в режиме измерения
параметров приемника записанную в переменную Set_Nast_priem
String Paket_tmp;
String __fastcall TForm1::Nastr_paket_priem()
{ Paket_tmp = ":";
if(Vhod_izm == "AFIN")
Izm_Bx_str = "IN4";
if(Vhod_izm == "EXT1")
Izm_Bx_str = "IN2";
if(Vhod_izm == "EXT2")
Izm_Bx_str = "IN3";
if(Vkl_mod == "ВКЛЮЧИТЬ МОД.")
Mod_vkl = "M3";
else
{ if(CM_AM == "ЧМ")
Mod_vkl = "M2";
else
Mod_vkl = "M0";
}
//Paket_tmp = Paket_tmp+"SrF,";
if(CM_AM == "ЧМ")
//флаг показывает в какой вид модуляции прибор можно
перевести
Paket_tmp = Paket_tmp+"SrA,"; //т.е. если ЧМ – значит прибор в режиме АМ модуляции и
можно его
Else
//перевести в ЧМ модуляцию и наоборот
Paket_tmp = Paket_tmp+"SrF,";
Paket_tmp=Paket_tmp+F_VH_str+','+U_VH_str+','+Dev_VH_str+','+F_NH_str+','+Mod_vkl+','+Izm_Bx_s
tr+'@';
Set_Nast_priem = "$"+paket_side_ras(Paket_tmp)+Paket_tmp;
}
Теперь вторая часть функции работы с прибором RST-432: Обработка ответа прибора на принятую
команду! Функция находится в обработчике СОМ-порта при принятии ответа от прибора.
String Tmp_comm;
//текущий измеряемый параметр в приборе
short Tmp_count;
//ее размер в байтах
//переменные измеренных параметров прибора в режиме измерения параметров приемника
char F_BCH[10];
//измеренная частота ВЧ в режиме измерения пар-в приемника
short F_BCH_count=0;
//ее размер в байтах
char u_BCH[10];
приемника
short u_BCH_count=0;
char mod_dev[10]; ;
short mod_dev_count=0;
char kni_pered[10];
short kni_pered_count=0;
char Fnch_pered[10];
short Fnch_pered_count=0;
char Fvch_priem[10];
short Fvch_priem_count=0;
char Uvyeh_priem[10];
приемника
short Uvyeh_priem_count=0;
char Fnch_priem[10];
short Fnch_priem_count=0;
short f_error=0;
//измеренная напряжение ВЧ в режиме измерения пар-в
//ее размер в байтах
//измеренная девиация в режиме измерения пар-в приемника
//ее размер в байтах
//измеренная КНИ передатчика
//ее размер в байтах
//измеренная частота НЧ передатчика
//ее размер в байтах
//измеренная частота ВЧ в режиме измерения пар-в приемника
//ее размер в байтах
//измеренное напряжение ВЧ в режиме измерения пар-в
//ее размер в байтах
//измеренная частота НЧ в режиме измерения пар-в приемника
//ее размер в байтах
//1-ошибка 0-ошибок нет
//переменные сом порта при приеме байтов
String Com_paket_full;
//весь пакет
short f_fist_paket=1;
//заголовок
short f_com_full=0;
//пришли все части пакета
char paket_full_tmp[100];
short ukaz_paket_tmp=0;
//при приходе ответа от прибора срабатывает эта функция
void __fastcall TForm1::MyComm1RxChar(TObject *Sender, DWORD Count)
{ unsigned char *Tmp;
//временный пакет куда сбрасываются принятый ответ от
прибора
Tmp = new char[Count];
char *Byte;
MyComm1->Read(Tmp,Count);
//читаем с СОМ-порта пришедший с прибора пакет
f_error=0;
//считаем что пока ошибок нет
Timer5->Enabled = false;
//выключаем таймер таймаута обрыва связи
f_priboroff=0;
//ответ пришел значит прибор активен
if(f_com_full==0)
//так как ответ от прибора приходит частями, то
{ for(int i=0;i<Count;i++)
//просто склеиваем части в один пакет
{ Com_paket_full = Com_paket_full + (char)Tmp[i];
paket_full_tmp[ukaz_paket_tmp] = Tmp[i];
ukaz_paket_tmp++;
}
if(Tmp[Count-1]=='@')
//признаком того что пришла последняя часть пакета – символ конца
@
{ f_com_full=1;
//говорим что пакет пришел полностью
ukaz_paket_tmp=0;
}
}
if(paket_full_tmp[6]=='n' && paket_full_tmp[7]=='a' && paket_full_tmp[8]=='k' && f_com_full==1)
//в случае прихода команды ошибки выставляем флаг ошибки
f_error=1;
if(paket_full_tmp[6]=='S' && paket_full_tmp[7]=='T' && paket_full_tmp[8]=='A' &&
paket_full_tmp[9]=='T' && paket_full_tmp[10]=='E' && f_com_full==1) //в случае прихода
команды ошибки выставляем флаг ошибки
f_error=1;
if(reg_comport == 0 && podreg_comport == 1 && f_com_full==1) //установили настройки новые
передатчика
{ if( !Pered_nastr(Com_paket_full.c_str()) && f_error==0) //анализируем команду ответа
{ U_mod_str = U_mod_str_pre;
//если анализируемая команда не верна
F_mod_str = F_mod_str_pre;
//восстанавливаем старые установки
обратно
Out_mod_str = Out_mod_str_pre;
}
}
if(reg_comport == 0 && podreg_comport == 3 && f_com_full==1) //установили новые установки
приемника
{ if( !Priem_nastr(Com_paket_full.c_str()) && f_error==0) //анализируем команду ответа
{ F_VH_str = F_VH_str_pre;
//если анализируемая команда не верна
U_VH_str = U_VH_str_pre; ;
//восстанавливаем старые установки
обратно
Dev_VH_str = Dev_VH_str_pre;
F_NH_str
= F_NH_str_pre;
Vkl_mod
= Vkl_mod_pre;
Vhod_izm
= Vhod_izm_pre;
}
}
//------------------------------измеренные параметры передатчика----------------------------------------------//
if(reg_comport == 3 && podreg_comport == 1 && f_com_full==1) //пришел ответ с измеренной
частотой ВЧ кнопка F1
{ if(f_error==0)
//если не пришла команда с ошибкой в приборе
{ ukaz_paket=10;
F_BCH_count = Command_iz_paket(Com_paket_full.c_str(),F_BCH);//считываем величину
измерения
Tmp_comm = Char_To_Str(F_BCH,F_BCH_count);
//переводим ее в String
if(Tmp_comm.AnsiPos('.')==0)
//удостоверяемся что это число
Tmp_comm = "- - - -.- -";
//вместо измерения пишем штрихи
else
{ //данные правильные}
}
Else
//если ошибка то тоже пишем штрихи
Tmp_comm = "- - - -.- -";
}
if(reg_comport == 3 && podreg_comport == 2 && f_com_full==1) //пришел ответ с измеренной
напряжением ВЧ кнопка F2
{ if(f_error==0)
//если не пришла команда с ошибкой в приборе
{ ukaz_paket=10;
u_BCH_count = Command_iz_paket(Com_paket_full.c_str(),u_BCH);//считываем величину
измерения
Tmp_comm = Char_To_Str(u_BCH,u_BCH_count);
//переводим ее в String
if(Tmp_comm.AnsiPos('.')==0)
//удостоверяемся что это число
Tmp_comm = "- -.- -";
//вместо измерения пишем штрихи
else
{ //данные правильные}
}
Else
Tmp_comm
//если ошибка то тоже пишем штрихи
= "- -.- -";
}
if(reg_comport == 3 && podreg_comport == 3 && f_com_full==1) //пришел ответ с измеренной
девиацией или модуляцией кнопка F3 в зависимости от вида модуляции
{ if(f_error==0)
//если не пришла команда с ошибкой в приборе
{ ukaz_paket=10;
mod_dev_count = Command_iz_paket(Com_paket_full.c_str(),mod_dev);
Tmp_comm = Char_To_Str(mod_dev,mod_dev_count);
if(Tmp_comm.AnsiPos('.')==0)
//удостоверяемся что это число
Tmp_comm = "- -.- -";
else
{ //данные правильные}
}
Else
//если ошибка то тоже пишем штрихи
Tmp_comm = "- -.- -";
}
if(reg_comport == 3 && podreg_comport == 4 && f_com_full==1) //пришел ответ с измеренной
напряжением КНИ кнопка F4
{ if(f_error==0)
//если не пришла команда с ошибкой в приборе
{ ukaz_paket=10;
kni_pered_count = Command_iz_paket(Com_paket_full.c_str(),kni_pered);
Tmp_comm = Char_To_Str(kni_pered,kni_pered_count);
if(Tmp_comm.AnsiPos('.')==0)
//удостоверяемся что это число
Tmp_comm = "- -.- -";
else
{ //данные правильные}
}
Else
//если ошибка то тоже пишем штрихи
Tmp_comm = "- -.- -";
}
if(reg_comport == 3 && podreg_comport == 5 && f_com_full==1) //пришел ответ с измеренной
частота НЧ кнопка F5
{ if(f_error==0)
//если не пришла команда с ошибкой в приборе
{ ukaz_paket=10;
Fnch_pered_count = Command_iz_paket(Com_paket_full.c_str(),Fnch_pered);
Tmp_comm = Char_To_Str(Fnch_pered,Fnch_pered_count);
if(Tmp_comm.AnsiPos('.')==0)
//удостоверяемся что это число
Tmp_comm = "- - - -.- -";
else
{ //данные правильные}
}
Else
//если ошибка то тоже пишем штрихи
Tmp_comm = "- - - -.- -";
}
//-------------------------------измеряемые параметры приемника-----------------------------------------------//
if(reg_comport == 4 && podreg_comport == 1 && f_com_full==1) //пришел ответ с измеренной
СИНАД кнопка F1
{ if(f_error==0)
//если не пришла команда с ошибкой в приборе
{ ukaz_paket=11;
Fvch_priem_count = Command_iz_paket(Com_paket_full.c_str(),Fvch_priem);
Tmp_comm = Char_To_Str(Fvch_priem,Fvch_priem_count);
if(Tmp_comm.AnsiPos('.')==0)
//удостоверяемся что это число
Tmp_comm = "- -.- -";
else
{ //данные правильные}
}
Else
Tmp_comm
//если ошибка то тоже пишем штрихи
= "- -.- -";
}
if(reg_comport == 4 && podreg_comport == 2 && f_com_full==1) //пришел ответ с измеренным
напряжением ВЧ кнопка F2
{ if(f_error==0)
//если не пришла команда с ошибкой в приборе
{ ukaz_paket=10;
Uvyeh_priem_count = Command_iz_paket(Com_paket_full.c_str(),Uvyeh_priem);
Tmp_comm = Char_To_Str(Uvyeh_priem,Uvyeh_priem_count);
if(Tmp_comm.AnsiPos('.')==0)
//удостоверяемся что это число
Tmp_comm = "- -.- -";
else
{ //данные правильные}
}
Else
//если ошибка то тоже пишем штрихи
Tmp_comm = "- -.- -";
}
if(reg_comport == 4 && podreg_comport == 3 && f_com_full==1) //пришел ответ с измеренной
частотой НЧ кнопка F5
{ if(f_error==0)
//если не пришла команда с ошибкой в приборе
{ ukaz_paket=10;
Fnch_priem_count = Command_iz_paket(Com_paket_full.c_str(),Fnch_priem);
Tmp_comm = Char_To_Str(Fnch_priem,Fnch_priem_count);
if(Tmp_comm.AnsiPos('.')==0)
//удостоверяемся что это число
Tmp_comm = "- - - -.- -";
else
{ //данные правильные}
}
Else
//если ошибка то тоже пишем штрихи
Tmp_comm = "- - - -.- -";
}
if(reg_comport == 5 && podreg_comport == 1 && f_com_full==1) //выставили вид модуляции
{ if(f_error==0) //проверяем что модуляция установилась
{ if(Com_paket_full.AnsiPos("srA")==0 && Com_paket_full.AnsiPos("srF")==0)//проверяем что
действительно не ответ с установленным видом модуляции
if(CM_AM == "ЧМ") //если так то восстанавливаем обратно
CM_AM = "АМ";
else
CM_AM = "ЧМ";
Display_regim_view(5,1,false);
}
}
delete Tmp;
if(f_com_full==1) //пакет весь принят по частям и обработан восстанавливаем переменные
{ Com_paket_full = "";
f_com_full=0;
}
//Timer4->Enabled = true;
}
//Подпрограмма обработки ответа от прибора. Проверяем шапку на соответствие. Сохраняет все
установленные установки установленные командой CommPortWrite(0,1) извлекая их из ответа
прибора.
char f_BCH[10];
//частота ВЧ в установках прибора в режиме измерения параметров
передатчика F1 в установках.
short f_BCH_count=0; //размер величины частоты ВЧ в равная числу байт например 10.0 будет 4
байта
char U_BCH[10];
//напряжение ВЧ в установках прибора в режиме измерения параметров
передатчика F2 в установках.
short U_BCH_count=0; //размер величины напряжения ВЧ в равная числу байт
char Mod_AM[10];
//модуляция в установках прибора в режиме измерения параметров
передатчика F3 в установках.
short Mod_AM_count=0;//размер величины модуляции в равная числу байт
char Mod[10];
//частота НЧ в установках прибора в режиме измерения параметров
передатчика F4 в установках.
short Mod_count=0;
//размер величины частоты НЧ в равная числу байт
char Mod_Bx[10];
//включение или отключение модуляции прибора в режиме измерения
параметров приемника F4
short Mod_Bx_count=0; //размер величины включение или отключение модуляции в равная числу
байт
char Izm_Bx[10];
//вход измерения прибора в режиме измерения параметров приемника F3
short Izm_Bx_count=0; //размер величины вход измерения модуляции в равная числу байт
char U_nch[10];
//напряжение НЧ в установках прибора в режиме измерения параметров
приемника F1 в установках.
short U_nch_count=0; //размер величины напряжения НЧ модуляции в равная числу байт
char F_nch[10];
//частота НЧ в установках прибора в режиме измерения параметров
приемника F2 в установках.
short F_nch_count=0;
//размер величины частоты НЧ модуляции равная числу байт
char Bx_Nch[10];
//выход модуляции НЧ в установках прибора в режиме измерения
параметров приемника F3 в установках.
short Bx_Nch_count=0; //размер величины выхода модуляции НЧ равная числу байт
short ukaz_paket;
//указатель в пакете ответа прибора
//переменные установок в режиме измерения параметров приемника, отключении включении
модуляции //F4, изменения вида модуляции, изменения входа измерения F3
String F_VH_str_pre;
//сохраненное до изменения частота ВЧ
String U_VH_str_pre;
//сохраненное до изменения напряжение ВЧ
String Dev_VH_str_pre; //сохраненное до изменения девиация
String F_NH_str_pre;
//сохраненное до изменения частота НЧ
String Vkl_mod_pre;
//включение или отключение модуляции до изменения
String Vhod_izm_pre;
//вход измерения может быть AFIN, EXT1, EXT2 до изменения
String CM_AM;
//выбор ЧМ или АМ если прибор в режиме АМ то переменная равна ЧМ
//переменные установок в режиме измерения параметров передатчика
String U_mod_str_pre;
//сохраненное до изменения напряжение модуляции
String F_mod_str_pre;
//сохраненное до изменения частота модуляции
String Out_mod_str_pre; //сохраненное до изменения выход модуляции
bool __fastcall TForm1::Priem_nastr(char *kommanda) //команда обработки ответа в режиме
приемника
{//команда в ответ на команду чтения параметров передатчика и установки
if(kommanda[6] == 's' && kommanda[7] == 'r') //заголовок верный
{ if(kommanda[8] == 'A' || kommanda[8] == 'F') //в режиме АМ или в режиме ЧМ
{ f_BCH_count = 0; U_BCH_count=0; Mod_AM_count=0; Mod_count=0; Mod_Bx_count=0;
Izm_Bx_count=0;
ukaz_paket=10;
//ставим указатель на начало первого установленного параметра в ответе
f_BCH_count = Command_iz_paket(kommanda,f_BCH);
U_BCH_count = Command_iz_paket(kommanda,U_BCH);
Mod_AM_count = Command_iz_paket(kommanda,Mod_AM);
Mod_count = Command_iz_paket(kommanda,Mod);
Mod_Bx_count = Command_iz_paket(kommanda,Mod_Bx);
Izm_Bx_count = Command_iz_paket(kommanda,Izm_Bx);
F_VH_str = Char_To_Str(f_BCH,f_BCH_count);
F_VH_str_pre = F_VH_str;
U_VH_str = Char_To_Str(U_BCH,U_BCH_count);
U_VH_str_pre = U_VH_str;
Dev_VH_str = Char_To_Str(Mod_AM,Mod_AM_count);
Dev_VH_str_pre = Dev_VH_str;
F_NH_str = Char_To_Str(Mod,Mod_count);
F_NH_str_pre = F_NH_str;
Mod_vkl = Char_To_Str(Mod_Bx,Mod_Bx_count);
if(Mod_vkl == "M3")
{ Vkl_mod = "ВКЛЮЧИТЬ МОД.";
f_vkl_mod=false;
}
if(Mod_vkl == "M0" || Mod_vkl == "M2")
{ Vkl_mod = "ОТКЛЮЧИТЬ МОД.";
f_vkl_mod=true;
}
if(Mod_vkl == "M3" || Mod_vkl == "M0" || Mod_vkl == "M2")
Vkl_mod_pre = Vkl_mod;
Izm_Bx_str = Char_To_Str(Izm_Bx,Izm_Bx_count);
if(Izm_Bx_str == "IN4")
Vhod_izm = "AFIN";
if(Izm_Bx_str == "IN2")
Vhod_izm = "EXT1";
if(Izm_Bx_str == "IN3")
Vhod_izm = "EXT2";
if(Izm_Bx_str == "IN4" || Izm_Bx_str == "IN2" || Izm_Bx_str == "IN3")
Vhod_izm_pre = Vhod_izm;
}
if(kommanda[8] == 'A')
CM_AM = "ЧМ";
if(kommanda[8] == 'F')
CM_AM = "АМ";
}
//в режиме АМ
//в режиме ЧМ
}
bool __fastcall TForm1::Pered_nastr(char *kommanda) //команда обработки ответа в режиме
приемника
{ if(kommanda[6] == 's' && kommanda[7] == 't') //заголовок верный
{ if(kommanda[8] == 'A' || kommanda[8] == 'F') //в режиме АМ или в режиме ЧМ
{ U_nch_count=0; F_nch_count=0; Bx_Nch_count=0;
ukaz_paket=10;
U_nch_count = Command_iz_paket(kommanda,U_nch);
F_nch_count = Command_iz_paket(kommanda,F_nch);
Bx_Nch_count = Command_iz_paket(kommanda,Bx_Nch);
U_mod_str = Char_To_Str(U_nch,U_nch_count);
U_mod_str_pre= U_mod_str;
F_mod_str = Char_To_Str(F_nch,F_nch_count);
F_mod_str_pre= F_mod_str;
Nch_Bx
= Char_To_Str(Bx_Nch,Bx_Nch_count);
if(Nch_Bx == "M1")
Out_mod_str = "AFOUT";
if(Nch_Bx == "M2")
Out_mod_str = "EXT3";
if(Nch_Bx == "M3")
Out_mod_str = "EXT4";
if(Nch_Bx == "M1" || Nch_Bx == "M2" || Nch_Bx == "M3")
Out_mod_str_pre = Out_mod_str;
}
}
if(kommanda[8] == 'A')
//в режиме АМ
CM_AM = "ЧМ";
if(kommanda[8] == 'F')
//в режиме ЧМ
CM_AM = "АМ";
}
//подпрограмма извлечения установок из команды возвращает ее размер
short __fastcall TForm1::Command_iz_paket(char *paket_in,char *paket_out)
{ command_count = 0;
char byte1[1];
for(short i=0;i<10;i++)
{ byte1[0] = paket_in[ukaz_paket];
if(byte1[0] != ',' && byte1[0] != '*')
paket_out[command_count++]=paket_in[ukaz_paket++];
else
{ i=10; ukaz_paket++; }
}
return command_count;
}
//подпрограмма перевода тип char в тип String
String __fastcall TForm1::Char_To_Str(char *paket_in,short count_char)
{ String Byte="";
for(int i=0;i<count_char;i++)
Byte = Byte+(char)paket_in[i];
return Byte;
}
Download