фикс некорректного ограничения центральной частоты
This commit is contained in:
parent
4d1b29b015
commit
f9b919facf
@ -22,7 +22,7 @@
|
|||||||
"values": [{"label": "Нормальный", "value": "false"}, {"label": "Тест (CW)", "value": "true"}]
|
"values": [{"label": "Нормальный", "value": "false"}, {"label": "Тест (CW)", "value": "true"}]
|
||||||
},
|
},
|
||||||
{"widget": "number", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 900000, "step": 0.01, "v_show": "paramRxtx.txModulatorIsTest"},
|
{"widget": "number", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 900000, "step": 0.01, "v_show": "paramRxtx.txModulatorIsTest"},
|
||||||
{"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "min": 0, "step": 1}
|
{"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "max": 0, "min": -40, "step": 1}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -154,7 +154,7 @@
|
|||||||
"values": [{"label": "Ethernet", "value": "false"}, {"label": "Тест", "value": "true"}]
|
"values": [{"label": "Ethernet", "value": "false"}, {"label": "Тест", "value": "true"}]
|
||||||
},
|
},
|
||||||
{"widget": "h3", "label": "Параметры передачи"},
|
{"widget": "h3", "label": "Параметры передачи"},
|
||||||
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 950000, "max": 6000000},
|
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 950000, "max": 6000000, "step": 0.01},
|
||||||
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 200000, "max": 54000000},
|
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 200000, "max": 54000000},
|
||||||
{
|
{
|
||||||
"widget": "select", "label": "Roll-off", "name": "txRolloff",
|
"widget": "select", "label": "Roll-off", "name": "txRolloff",
|
||||||
@ -164,7 +164,7 @@
|
|||||||
"widget": "select", "label": "Номер последовательности Голда", "name": "txGoldan",
|
"widget": "select", "label": "Номер последовательности Голда", "name": "txGoldan",
|
||||||
"values": [{"label": "0", "value": "0"}, {"label": "1", "value": "1"}]
|
"values": [{"label": "0", "value": "0"}, {"label": "1", "value": "1"}]
|
||||||
},
|
},
|
||||||
{"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "min": 0, "step": 1}
|
{"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "max": 0, "min": -40, "step": 0.25}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -198,8 +198,8 @@
|
|||||||
"childs": [
|
"childs": [
|
||||||
{"widget": "h3", "label": "Авто-регулировка мощности"},
|
{"widget": "h3", "label": "Авто-регулировка мощности"},
|
||||||
{"widget": "checkbox", "label": "Авто-регулировка мощности", "name": "aupcEn"},
|
{"widget": "checkbox", "label": "Авто-регулировка мощности", "name": "aupcEn"},
|
||||||
{"widget": "number", "label": "Минимальное ослабление, дБ", "name": "aupcMinAttenuation", "min": 0, "step": 0.01, "max": 10},
|
{"widget": "number", "label": "Минимальное ослабление, дБ", "name": "aupcMinAttenuation", "min": 0, "step": 0.1, "max": 10},
|
||||||
{"widget": "number", "label": "Максимальное ослабление, дБ", "name": "aupcMaxAttenuation", "min": 0, "step": 0.01, "max": 10},
|
{"widget": "number", "label": "Максимальное ослабление, дБ", "name": "aupcMaxAttenuation", "min": 0, "step": 0.1, "max": 10},
|
||||||
{"widget": "number", "label": "Требуемое ОСШ", "name": "aupcRequiredSnr", "min": 0, "step": 0.01, "max": 10}
|
{"widget": "number", "label": "Требуемое ОСШ", "name": "aupcRequiredSnr", "min": 0, "step": 0.01, "max": 10}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -214,7 +214,7 @@
|
|||||||
{"widget": "number", "label": "Усиление, дБ", "name": "rxManualGain", "min": -40, "step": 0.01, "max": 40, "v_show": "paramRxtx.rxAgcEn === false"},
|
{"widget": "number", "label": "Усиление, дБ", "name": "rxManualGain", "min": -40, "step": 0.01, "max": 40, "v_show": "paramRxtx.rxAgcEn === false"},
|
||||||
{"widget": "watch-expr", "label": "Текущее усиление", "expr": "paramRxtx.rxManualGain", "v_show": "paramRxtx.rxAgcEn === true"},
|
{"widget": "watch-expr", "label": "Текущее усиление", "expr": "paramRxtx.rxManualGain", "v_show": "paramRxtx.rxAgcEn === true"},
|
||||||
{"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"},
|
{"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"},
|
||||||
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 950000, "max": 6000000},
|
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 950000, "max": 6000000, "step": 0.01},
|
||||||
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 200000, "max": 54000000},
|
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 200000, "max": 54000000},
|
||||||
{
|
{
|
||||||
"widget": "select", "label": "Roll-off", "name": "rxRolloff",
|
"widget": "select", "label": "Roll-off", "name": "rxRolloff",
|
||||||
|
@ -22,6 +22,8 @@ def extract_param_names(mc):
|
|||||||
copy_fields['min'] = widget['min']
|
copy_fields['min'] = widget['min']
|
||||||
if 'max' in widget:
|
if 'max' in widget:
|
||||||
copy_fields['max'] = widget['max']
|
copy_fields['max'] = widget['max']
|
||||||
|
if 'step' in widget:
|
||||||
|
copy_fields['step'] = widget['step']
|
||||||
|
|
||||||
match widget['widget']:
|
match widget['widget']:
|
||||||
case 'select': return [{"initValue": widget['values'][0]['value']} | copy_fields]
|
case 'select': return [{"initValue": widget['values'][0]['value']} | copy_fields]
|
||||||
|
@ -6,11 +6,11 @@
|
|||||||
{# https://ru.stackoverflow.com/questions/1241064 #}
|
{# https://ru.stackoverflow.com/questions/1241064 #}
|
||||||
{% macro build_widget_number(param_group, widget) %}<label{% if widget.v_show %} v-show="{{ widget.v_show }}"{% endif %}><span>{{ widget.label }}</span><input type="number" v-model="param{{ param_group | title }}.{{ widget.name }}"{% if widget['min'] %} min="{{ widget['min'] }}"{% endif %}{% if widget['max'] %} max="{{ widget['max'] }}"{% endif %}{% if widget['step'] %} step="{{ widget['step'] }}"{% endif %}/></label>{% endmacro %}
|
{% macro build_widget_number(param_group, widget) %}<label{% if widget.v_show %} v-show="{{ widget.v_show }}"{% endif %}><span>{{ widget.label }}</span><input type="number" v-model="param{{ param_group | title }}.{{ widget.name }}"{% if widget['min'] %} min="{{ widget['min'] }}"{% endif %}{% if widget['max'] %} max="{{ widget['max'] }}"{% endif %}{% if widget['step'] %} step="{{ widget['step'] }}"{% endif %}/></label>{% endmacro %}
|
||||||
|
|
||||||
{% macro js_build_number_int_validator(widget) %}{{ '{' }}{% if widget['min'] %}min:{{ widget['min'] }},{% endif %}{% if widget['max'] %}max:{{ widget['max'] }}{% endif %}{{ '}' }}{% endmacro %}
|
{% macro js_build_number_number_validator(widget) %}{{ '{' }}{% if widget['min'] %}min:{{ widget['min'] }},{% endif %}{% if widget['max'] %}max:{{ widget['max'] }},{% endif %}{% if widget['step'] %}step:{{ widget['step'] }}{% endif %}{{ '}' }}{% endmacro %}
|
||||||
|
|
||||||
{% macro build_widget_number_int(param_group, widget) %}<label{% if widget.v_show %} v-show="{{ widget.v_show }}"{% endif %}>
|
{% macro build_widget_number_int(param_group, widget) %}<label{% if widget.v_show %} v-show="{{ widget.v_show }}"{% endif %}>
|
||||||
<span>{{ widget.label }}</span>
|
<span>{{ widget.label }}</span>
|
||||||
<input type="text" v-model.lazy="param{{ param_group | title }}.{{ widget.name }}" @change="e => {{ build_setter(param_group, widget, "inputFormatInt(e.target.value, " ~ js_build_number_int_validator(widget) ~ ")") }}"/>
|
<input type="text" v-model.lazy="param{{ param_group | title }}.{{ widget.name }}" @change="e => {{ build_setter(param_group, widget, "inputFormatNumber(e.target.value, " ~ js_build_number_number_validator(widget) ~ ")") }}"/>
|
||||||
</label>{% endmacro %}
|
</label>{% endmacro %}
|
||||||
|
|
||||||
|
|
||||||
@ -79,15 +79,15 @@
|
|||||||
|
|
||||||
{% macro build_getter_js(param_group, widget) %}{% if widget.widget in ['flex-container', 'settings-container', 'h2', 'h3', 'submit', 'watch', 'watch-expr'] %}null{%
|
{% macro build_getter_js(param_group, widget) %}{% if widget.widget in ['flex-container', 'settings-container', 'h2', 'h3', 'submit', 'watch', 'watch-expr'] %}null{%
|
||||||
elif widget.widget in ['checkbox', 'number', 'select', 'ip-address', 'modulation-modcod', 'modulation-speed'] %}this.param{{ param_group | title }}.{{ widget.name }}{%
|
elif widget.widget in ['checkbox', 'number', 'select', 'ip-address', 'modulation-modcod', 'modulation-speed'] %}this.param{{ param_group | title }}.{{ widget.name }}{%
|
||||||
elif widget.widget == 'number-int' %}parseInt(this.param{{ param_group | title }}.{{ widget.name }}.replace(/[^0-9]/g, '')){%
|
elif widget.widget == 'number-int' %}parseFloat(this.param{{ param_group | title }}.{{ widget.name }}.replace(/[^0-9,.]/g, '').replace(',', '.')){%
|
||||||
else %}<p>Widget '{{ widget.widget }}' not defined!</p><p>{{ widget }}</p>{% endif %}{% endmacro %}
|
else %}<p>Widget '{{ widget.widget }}' not defined!</p><p>{{ widget }}</p>{% endif %}{% endmacro %}
|
||||||
|
|
||||||
{% macro build_setter_js(param_group, widget, expr) %}{% if widget.widget in ['flex-container', 'settings-container', 'h2', 'h3', 'submit', 'watch', 'watch-expr'] %}null{%
|
{% macro build_setter_js(param_group, widget, expr) %}{% if widget.widget in ['flex-container', 'settings-container', 'h2', 'h3', 'submit', 'watch', 'watch-expr'] %}null{%
|
||||||
elif widget.widget in ['checkbox', 'number', 'select', 'ip-address', 'modulation-modcod', 'modulation-speed'] %}this.param{{ param_group | title }}.{{ widget.name }} = {{ expr }}{%
|
elif widget.widget in ['checkbox', 'number', 'select', 'ip-address', 'modulation-modcod', 'modulation-speed'] %}this.param{{ param_group | title }}.{{ widget.name }} = {{ expr }}{%
|
||||||
elif widget.widget == 'number-int' %}this.param{{ param_group | title }}.{{ widget.name }} = this.inputFormatInt({{ expr }}, {{ js_build_number_int_validator(widget) }}){%
|
elif widget.widget == 'number-int' %}this.param{{ param_group | title }}.{{ widget.name }} = this.inputFormatNumber({{ expr }}, {{ js_build_number_number_validator(widget) }}){%
|
||||||
else %}<p>Widget '{{ widget.widget }}' not defined!</p><p>{{ widget }}</p>{% endif %}{% endmacro %}
|
else %}<p>Widget '{{ widget.widget }}' not defined!</p><p>{{ widget }}</p>{% endif %}{% endmacro %}
|
||||||
|
|
||||||
{% macro build_setter(param_group, widget, expr) %}{% if widget.widget in ['flex-container', 'settings-container', 'h2', 'h3', 'submit', 'watch', 'watch-expr'] %}null{%
|
{% macro build_setter(param_group, widget, expr) %}{% if widget.widget in ['flex-container', 'settings-container', 'h2', 'h3', 'submit', 'watch', 'watch-expr'] %}null{%
|
||||||
elif widget.widget in ['checkbox', 'number', 'select', 'ip-address', 'modulation-modcod', 'modulation-speed'] %}param{{ param_group | title }}.{{ widget.name }} = {{ expr }}{%
|
elif widget.widget in ['checkbox', 'number', 'select', 'ip-address', 'modulation-modcod', 'modulation-speed'] %}param{{ param_group | title }}.{{ widget.name }} = {{ expr }}{%
|
||||||
elif widget.widget == 'number-int' %}param{{ param_group | title }}.{{ widget.name }} = ({{ expr }}).toString(){%
|
elif widget.widget == 'number-int' %}param{{ param_group | title }}.{{ widget.name }} = inputFormatNumber({{ expr }}, {{ js_build_number_number_validator(widget) }}){%
|
||||||
else %}<p>Widget '{{ widget.widget }}' not defined!</p><p>{{ widget }}</p>{% endif %}{% endmacro %}
|
else %}<p>Widget '{{ widget.widget }}' not defined!</p><p>{{ widget }}</p>{% endif %}{% endmacro %}
|
||||||
|
@ -153,10 +153,12 @@
|
|||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
inputFormatInt(src, validation) {
|
inputFormatNumber(src, validation) {
|
||||||
if (validation === null || validation === undefined) { validation = {} }
|
if (validation === null || validation === undefined) { validation = {} }
|
||||||
const rawVal = src.toString().replace(/[^0-9]/g, '')
|
const rawVal = src.toString().replace(/[^0-9.,]/g, '').replace(',', '.')
|
||||||
let result = rawVal === '' ? 0 : parseInt(rawVal)
|
let result = rawVal === '' ? 0 : parseFloat(rawVal)
|
||||||
|
const step = 'step' in validation ? validation['step']: 1.0
|
||||||
|
result = Math.round(result / step) * step
|
||||||
if ('min' in validation) { if (result <= validation['min']) { result = validation['min'] } }
|
if ('min' in validation) { if (result <= validation['min']) { result = validation['min'] } }
|
||||||
if ('max' in validation) { if (result >= validation['max']) { result = validation['max'] } }
|
if ('max' in validation) { if (result >= validation['max']) { result = validation['max'] } }
|
||||||
return result.toLocaleString()
|
return result.toLocaleString()
|
||||||
|
@ -160,11 +160,11 @@
|
|||||||
<h3>Параметры передачи</h3>
|
<h3>Параметры передачи</h3>
|
||||||
<label>
|
<label>
|
||||||
<span>Центральная частота, КГц</span>
|
<span>Центральная частота, КГц</span>
|
||||||
<input type="text" v-model.lazy="paramRxtx.txCentralFreq" @change="e => paramRxtx.txCentralFreq = (inputFormatInt(e.target.value, {min:950000,max:6000000})).toString()"/>
|
<input type="text" v-model.lazy="paramRxtx.txCentralFreq" @change="e => paramRxtx.txCentralFreq = inputFormatNumber(inputFormatNumber(e.target.value, {min:950000,max:6000000,step:0.01}), {min:950000,max:6000000,step:0.01})"/>
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<span>Символьная скорость, Бод</span>
|
<span>Символьная скорость, Бод</span>
|
||||||
<input type="text" v-model.lazy="paramRxtx.txBaudrate" @change="e => paramRxtx.txBaudrate = (inputFormatInt(e.target.value, {min:200000,max:54000000})).toString()"/>
|
<input type="text" v-model.lazy="paramRxtx.txBaudrate" @change="e => paramRxtx.txBaudrate = inputFormatNumber(inputFormatNumber(e.target.value, {min:200000,max:54000000,}), {min:200000,max:54000000,})"/>
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<span>Roll-off</span>
|
<span>Roll-off</span>
|
||||||
@ -184,7 +184,7 @@
|
|||||||
<option :value="1">1</option>
|
<option :value="1">1</option>
|
||||||
</select>
|
</select>
|
||||||
</label>
|
</label>
|
||||||
<label><span>Ослабление, дБ</span><input type="number" v-model="paramRxtx.txAttenuation" step="1"/></label>
|
<label><span>Ослабление, дБ</span><input type="number" v-model="paramRxtx.txAttenuation" min="-40" step="0.25"/></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-set-container">
|
<div class="settings-set-container">
|
||||||
<h3>Режим работы DVB-S2</h3>
|
<h3>Режим работы DVB-S2</h3>
|
||||||
@ -268,8 +268,8 @@
|
|||||||
<span>Авто-регулировка мощности</span>
|
<span>Авто-регулировка мощности</span>
|
||||||
<span class="toggle-input"><input type="checkbox" v-model="paramRxtx.aupcEn" /><span class="slider"></span></span>
|
<span class="toggle-input"><input type="checkbox" v-model="paramRxtx.aupcEn" /><span class="slider"></span></span>
|
||||||
</label>
|
</label>
|
||||||
<label><span>Минимальное ослабление, дБ</span><input type="number" v-model="paramRxtx.aupcMinAttenuation" max="10" step="0.01"/></label>
|
<label><span>Минимальное ослабление, дБ</span><input type="number" v-model="paramRxtx.aupcMinAttenuation" max="10" step="0.1"/></label>
|
||||||
<label><span>Максимальное ослабление, дБ</span><input type="number" v-model="paramRxtx.aupcMaxAttenuation" max="10" step="0.01"/></label>
|
<label><span>Максимальное ослабление, дБ</span><input type="number" v-model="paramRxtx.aupcMaxAttenuation" max="10" step="0.1"/></label>
|
||||||
<label><span>Требуемое ОСШ</span><input type="number" v-model="paramRxtx.aupcRequiredSnr" max="10" step="0.01"/></label>
|
<label><span>Требуемое ОСШ</span><input type="number" v-model="paramRxtx.aupcRequiredSnr" max="10" step="0.01"/></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-set-container">
|
<div class="settings-set-container">
|
||||||
@ -291,11 +291,11 @@
|
|||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<span>Центральная частота, КГц</span>
|
<span>Центральная частота, КГц</span>
|
||||||
<input type="text" v-model.lazy="paramRxtx.rxCentralFreq" @change="e => paramRxtx.rxCentralFreq = (inputFormatInt(e.target.value, {min:950000,max:6000000})).toString()"/>
|
<input type="text" v-model.lazy="paramRxtx.rxCentralFreq" @change="e => paramRxtx.rxCentralFreq = inputFormatNumber(inputFormatNumber(e.target.value, {min:950000,max:6000000,step:0.01}), {min:950000,max:6000000,step:0.01})"/>
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<span>Символьная скорость, Бод</span>
|
<span>Символьная скорость, Бод</span>
|
||||||
<input type="text" v-model.lazy="paramRxtx.rxBaudrate" @change="e => paramRxtx.rxBaudrate = (inputFormatInt(e.target.value, {min:200000,max:54000000})).toString()"/>
|
<input type="text" v-model.lazy="paramRxtx.rxBaudrate" @change="e => paramRxtx.rxBaudrate = inputFormatNumber(inputFormatNumber(e.target.value, {min:200000,max:54000000,}), {min:200000,max:54000000,})"/>
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<span>Roll-off</span>
|
<span>Roll-off</span>
|
||||||
@ -590,7 +590,7 @@
|
|||||||
txBaudrate: 0,
|
txBaudrate: 0,
|
||||||
txRolloff: 2,
|
txRolloff: 2,
|
||||||
txGoldan: 0,
|
txGoldan: 0,
|
||||||
txAttenuation: 0,
|
txAttenuation: -40,
|
||||||
dvbServicePacketPeriod: 0,
|
dvbServicePacketPeriod: 0,
|
||||||
dvbIsAcm: false,
|
dvbIsAcm: false,
|
||||||
txFrameSizeNormal: true,
|
txFrameSizeNormal: true,
|
||||||
@ -755,10 +755,12 @@
|
|||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
inputFormatInt(src, validation) {
|
inputFormatNumber(src, validation) {
|
||||||
if (validation === null || validation === undefined) { validation = {} }
|
if (validation === null || validation === undefined) { validation = {} }
|
||||||
const rawVal = src.toString().replace(/[^0-9]/g, '')
|
const rawVal = src.toString().replace(/[^0-9.,]/g, '').replace(',', '.')
|
||||||
let result = rawVal === '' ? 0 : parseInt(rawVal)
|
let result = rawVal === '' ? 0 : parseFloat(rawVal)
|
||||||
|
const step = 'step' in validation ? validation['step']: 1.0
|
||||||
|
result = Math.round(result / step) * step
|
||||||
if ('min' in validation) { if (result <= validation['min']) { result = validation['min'] } }
|
if ('min' in validation) { if (result <= validation['min']) { result = validation['min'] } }
|
||||||
if ('max' in validation) { if (result >= validation['max']) { result = validation['max'] } }
|
if ('max' in validation) { if (result >= validation['max']) { result = validation['max'] } }
|
||||||
return result.toLocaleString()
|
return result.toLocaleString()
|
||||||
@ -774,8 +776,8 @@
|
|||||||
"txAutoStart": this.paramRxtx.txAutoStart,
|
"txAutoStart": this.paramRxtx.txAutoStart,
|
||||||
"txModulatorIsTest": this.paramRxtx.txModulatorIsTest,
|
"txModulatorIsTest": this.paramRxtx.txModulatorIsTest,
|
||||||
"txIsTestInput": this.paramRxtx.txIsTestInput,
|
"txIsTestInput": this.paramRxtx.txIsTestInput,
|
||||||
"txCentralFreq": parseInt(this.paramRxtx.txCentralFreq.replace(/[^0-9]/g, '')),
|
"txCentralFreq": parseFloat(this.paramRxtx.txCentralFreq.replace(/[^0-9,.]/g, '').replace(',', '.')),
|
||||||
"txBaudrate": parseInt(this.paramRxtx.txBaudrate.replace(/[^0-9]/g, '')),
|
"txBaudrate": parseFloat(this.paramRxtx.txBaudrate.replace(/[^0-9,.]/g, '').replace(',', '.')),
|
||||||
"txRolloff": this.paramRxtx.txRolloff,
|
"txRolloff": this.paramRxtx.txRolloff,
|
||||||
"txGoldan": this.paramRxtx.txGoldan,
|
"txGoldan": this.paramRxtx.txGoldan,
|
||||||
"txAttenuation": this.paramRxtx.txAttenuation,
|
"txAttenuation": this.paramRxtx.txAttenuation,
|
||||||
@ -796,8 +798,8 @@
|
|||||||
"rxAgcEn": this.paramRxtx.rxAgcEn,
|
"rxAgcEn": this.paramRxtx.rxAgcEn,
|
||||||
"rxManualGain": this.paramRxtx.rxManualGain,
|
"rxManualGain": this.paramRxtx.rxManualGain,
|
||||||
"rxSpectrumInversion": this.paramRxtx.rxSpectrumInversion,
|
"rxSpectrumInversion": this.paramRxtx.rxSpectrumInversion,
|
||||||
"rxCentralFreq": parseInt(this.paramRxtx.rxCentralFreq.replace(/[^0-9]/g, '')),
|
"rxCentralFreq": parseFloat(this.paramRxtx.rxCentralFreq.replace(/[^0-9,.]/g, '').replace(',', '.')),
|
||||||
"rxBaudrate": parseInt(this.paramRxtx.rxBaudrate.replace(/[^0-9]/g, '')),
|
"rxBaudrate": parseFloat(this.paramRxtx.rxBaudrate.replace(/[^0-9,.]/g, '').replace(',', '.')),
|
||||||
"rxRolloff": this.paramRxtx.rxRolloff,
|
"rxRolloff": this.paramRxtx.rxRolloff,
|
||||||
"rxGoldan": this.paramRxtx.rxGoldan,
|
"rxGoldan": this.paramRxtx.rxGoldan,
|
||||||
}
|
}
|
||||||
@ -885,8 +887,8 @@
|
|||||||
this.paramRxtx.txAutoStart = vals["settings"]["txAutoStart"]
|
this.paramRxtx.txAutoStart = vals["settings"]["txAutoStart"]
|
||||||
this.paramRxtx.txModulatorIsTest = vals["settings"]["txModulatorIsTest"]
|
this.paramRxtx.txModulatorIsTest = vals["settings"]["txModulatorIsTest"]
|
||||||
this.paramRxtx.txIsTestInput = vals["settings"]["txIsTestInput"]
|
this.paramRxtx.txIsTestInput = vals["settings"]["txIsTestInput"]
|
||||||
this.paramRxtx.txCentralFreq = this.inputFormatInt(vals["settings"]["txCentralFreq"], {min:950000,max:6000000})
|
this.paramRxtx.txCentralFreq = this.inputFormatNumber(vals["settings"]["txCentralFreq"], {min:950000,max:6000000,step:0.01})
|
||||||
this.paramRxtx.txBaudrate = this.inputFormatInt(vals["settings"]["txBaudrate"], {min:200000,max:54000000})
|
this.paramRxtx.txBaudrate = this.inputFormatNumber(vals["settings"]["txBaudrate"], {min:200000,max:54000000,})
|
||||||
this.paramRxtx.txRolloff = vals["settings"]["txRolloff"]
|
this.paramRxtx.txRolloff = vals["settings"]["txRolloff"]
|
||||||
this.paramRxtx.txGoldan = vals["settings"]["txGoldan"]
|
this.paramRxtx.txGoldan = vals["settings"]["txGoldan"]
|
||||||
this.paramRxtx.txAttenuation = vals["settings"]["txAttenuation"]
|
this.paramRxtx.txAttenuation = vals["settings"]["txAttenuation"]
|
||||||
@ -907,8 +909,8 @@
|
|||||||
this.paramRxtx.rxAgcEn = vals["settings"]["rxAgcEn"]
|
this.paramRxtx.rxAgcEn = vals["settings"]["rxAgcEn"]
|
||||||
this.paramRxtx.rxManualGain = vals["settings"]["rxManualGain"]
|
this.paramRxtx.rxManualGain = vals["settings"]["rxManualGain"]
|
||||||
this.paramRxtx.rxSpectrumInversion = vals["settings"]["rxSpectrumInversion"]
|
this.paramRxtx.rxSpectrumInversion = vals["settings"]["rxSpectrumInversion"]
|
||||||
this.paramRxtx.rxCentralFreq = this.inputFormatInt(vals["settings"]["rxCentralFreq"], {min:950000,max:6000000})
|
this.paramRxtx.rxCentralFreq = this.inputFormatNumber(vals["settings"]["rxCentralFreq"], {min:950000,max:6000000,step:0.01})
|
||||||
this.paramRxtx.rxBaudrate = this.inputFormatInt(vals["settings"]["rxBaudrate"], {min:200000,max:54000000})
|
this.paramRxtx.rxBaudrate = this.inputFormatNumber(vals["settings"]["rxBaudrate"], {min:200000,max:54000000,})
|
||||||
this.paramRxtx.rxRolloff = vals["settings"]["rxRolloff"]
|
this.paramRxtx.rxRolloff = vals["settings"]["rxRolloff"]
|
||||||
this.paramRxtx.rxGoldan = vals["settings"]["rxGoldan"]
|
this.paramRxtx.rxGoldan = vals["settings"]["rxGoldan"]
|
||||||
},
|
},
|
||||||
|
@ -124,7 +124,7 @@
|
|||||||
</select>
|
</select>
|
||||||
</label>
|
</label>
|
||||||
<label v-show="paramRxtx.txModulatorIsTest"><span>Центральная частота, КГц</span><input type="number" v-model="paramRxtx.txCentralFreq" min="900000" step="0.01"/></label>
|
<label v-show="paramRxtx.txModulatorIsTest"><span>Центральная частота, КГц</span><input type="number" v-model="paramRxtx.txCentralFreq" min="900000" step="0.01"/></label>
|
||||||
<label><span>Ослабление, дБ</span><input type="number" v-model="paramRxtx.txAttenuation" step="1"/></label>
|
<label><span>Ослабление, дБ</span><input type="number" v-model="paramRxtx.txAttenuation" min="-40" step="1"/></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-set-container">
|
<div class="settings-set-container">
|
||||||
<h3>Настройки приемника</h3>
|
<h3>Настройки приемника</h3>
|
||||||
@ -289,7 +289,7 @@
|
|||||||
txEn: false,
|
txEn: false,
|
||||||
txModulatorIsTest: false,
|
txModulatorIsTest: false,
|
||||||
txCentralFreq: 900000,
|
txCentralFreq: 900000,
|
||||||
txAttenuation: 0,
|
txAttenuation: -40,
|
||||||
rxAgcEn: true,
|
rxAgcEn: true,
|
||||||
rxManualGain: -40,
|
rxManualGain: -40,
|
||||||
rxSpectrumInversion: false,
|
rxSpectrumInversion: false,
|
||||||
@ -409,10 +409,12 @@
|
|||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
inputFormatInt(src, validation) {
|
inputFormatNumber(src, validation) {
|
||||||
if (validation === null || validation === undefined) { validation = {} }
|
if (validation === null || validation === undefined) { validation = {} }
|
||||||
const rawVal = src.toString().replace(/[^0-9]/g, '')
|
const rawVal = src.toString().replace(/[^0-9.,]/g, '').replace(',', '.')
|
||||||
let result = rawVal === '' ? 0 : parseInt(rawVal)
|
let result = rawVal === '' ? 0 : parseFloat(rawVal)
|
||||||
|
const step = 'step' in validation ? validation['step']: 1.0
|
||||||
|
result = Math.round(result / step) * step
|
||||||
if ('min' in validation) { if (result <= validation['min']) { result = validation['min'] } }
|
if ('min' in validation) { if (result <= validation['min']) { result = validation['min'] } }
|
||||||
if ('max' in validation) { if (result >= validation['max']) { result = validation['max'] } }
|
if ('max' in validation) { if (result >= validation['max']) { result = validation['max'] } }
|
||||||
return result.toLocaleString()
|
return result.toLocaleString()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user