From 60a5c90c88f90ed064ec75cd61c4edaa711c443b Mon Sep 17 00:00:00 2001 From: Theodor Chikin Date: Thu, 2 Oct 2025 13:36:35 +0300 Subject: [PATCH] implemented -- it runs C program and passes log filename to the plotter --- BF_companion | Bin 62272 -> 62280 bytes do | 2 ++ main.c | 3 ++- plotter.py | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 48 insertions(+), 3 deletions(-) create mode 100755 do diff --git a/BF_companion b/BF_companion index e1211590132da7461844e69195a12efc03f6d78a..2d24aaa357a51be4fe3a08cc0cacf11b933d933d 100755 GIT binary patch delta 1045 zcmY*YT}%{L6ux)HYj;3ku>&}Rf^7H^5?QLzr4m6xj7w7E#sbl#i6zz+`AI>HSyLLu zv>J&L#S;(~~x>f#Se6XOdlupxwEP&a8x1HMRTbNkJ%Kj}^8`@VB>?m6Gw zI}>`Lj=WIMuHz#;h0|Jh35%_6O66W{c11jzwX3<8r}`V?;X9@-Dr%X?!UTVJZOGr9v!nkD^JsHmtt%HbzdmHl{w!dn-1vM`LT6rkLfjT(=g0D+ ziN&eqJX0+@jiejT#E(*jzzu^^M!`Wa?@Ad2 z4?d8x4;*vuE&%P|^mEaHBeZ_MCs(wYi* zkUnb4Fj{|>(n7)8wHm^4J4E$O+58qA15VKZ@Bj?~SJ4d6Al{tK>nI0UO_jiDst0bR zW5BC4(43vo2@AdywA!BRKA}`4Emw(HjMN&^Ui#+vIf;^j};WdS&S8kw70QdCKxLe zuAP~T>027I!jmq9UgTn>F={)eA?+ z_Ah75Cvx_`$!<)oMU?Y7CVa}OU+y<%o=yYvKK?I7<}3Il84DHs8SP!D TP*{Ze7s}Bgf>bpbuL}MHOJF@3 delta 1010 zcmYLIX-HI26u$R8uln3ZYt-gx+Q>L+l+$KPkxOM}6pj_q4{4#z(FvsuqsaH8O$y2m zlqf+3LH?^AZCX05=8r&V(Wo#3Q;Cf1PaE96Hkr$35EHsPX8nS;{>;uCQu6oM38DzSz%X-+blnYc9__e@KZKOd1@z+&O5T zR96@B4QBt6NR6+cPb)oKH$4d40N=v=*O1Z8Yk{lN83> zBK}`&Unm&M6yd9q@KOt)AWOuYLaoC-3m<5ILI0lp)(3%GiA2-10X&CvrS}FPX7i>S)&M7mF0D-J$!pRI)OW7M$Cgz}Om* z9$c>1*6e1L!X2!#2e8pEGV-nM0#GB|+o06`0}5+J`p#%eZpviF_KIw)BX}J8_N}{F zhe&>fQhm=p)+t;E;AZ#gMM!Mi=wtUqd>Lx(LwF1LyPy}E>ewSO^*CIyALWmQ%knk# zumQr+A^C~f)KV71ZRT+6@2C)=ge^tM&Z-8+*)w(JqBgrq-{y{3i{3 eEx>f=SOM>+&0_`1_ddEbmX8SoNEMOuTgD&7;w^sw diff --git a/do b/do new file mode 100755 index 0000000..d12f1b1 --- /dev/null +++ b/do @@ -0,0 +1,2 @@ +#!/usr/bin/bash +./plotter.py "$(./BF_companion 2>&1 1>/dev/tty)" diff --git a/main.c b/main.c index 1677383..a8ef4c7 100644 --- a/main.c +++ b/main.c @@ -154,7 +154,7 @@ static uint32_t f_channels[ADC_LCH_CNT] = {0, 0, 1, 0}; // режимы измерения для каналов // static uint32_t f_ch_modes[ADC_LCH_CNT] = {X502_LCH_MODE_COMM, X502_LCH_MODE_COMM,X502_LCH_MODE_COMM,X502_LCH_MODE_COMM}; // диапазоны измерения для каналов // -static uint32_t f_ch_ranges[ADC_LCH_CNT] = {X502_ADC_RANGE_1, X502_ADC_RANGE_1,X502_ADC_RANGE_1,X502_ADC_RANGE_1}; +static uint32_t f_ch_ranges[ADC_LCH_CNT] = {X502_ADC_RANGE_5, X502_ADC_RANGE_5,X502_ADC_RANGE_5,X502_ADC_RANGE_5}; @@ -1303,6 +1303,7 @@ int main(int argc, char** argv) { printf("\n\nreceive done. Exiting...\n\n\n"); //logfile_ptr = fopen(logfilename, "w"); printf("dumped to file: %s\n", logfilename); + fprintf(stderr, "%s\n", logfilename); X502_Close(hnd); // освобождаем описатель diff --git a/plotter.py b/plotter.py index 9e1feb8..3576cad 100755 --- a/plotter.py +++ b/plotter.py @@ -4,6 +4,15 @@ from decimal import * from sys import argv +t_x502_sync_mode = ["INTERNAL", "EXTERNAL_MASTER", "SYN1_RISE", "SYN1_FALL", "SYN2_RISE", "SYN2_FALL", "???"] +t_x502_lch_mode = ["COMM", "DIFF", "ZERO", "???"] +t_x502_adc_range = ["+-10V", "+-5V", "+-2V", "+-1V", "+-0.5V", "+-0.2V", "???"] + + + +ADC_settings = {"sync_frec_source":"???", "sync_start_source": "???", "chans":{}} + + def main(): chart = go.Figure() chart.add_trace(go.Scatter(x=[1,2,3], y=[1,2,3])) @@ -11,6 +20,8 @@ def main(): if __name__ == "__main__": + print("parsing") + print("=======================") if len(argv) == 1: main() else: @@ -33,9 +44,33 @@ if __name__ == "__main__": data[header] = [] data[header + "_N"] = [] data[header + "_hex"] = [] - data[header].append(int(value,16)) + value_unsigned = int(value, 16) + if (value_unsigned > 0x7FFFFF): + value_signed = (value_unsigned) - 0xFFFFFF + else: + value_signed = value_unsigned + data[header].append(value_signed) data[header + "_hex"].append(value) data[header + "_N"].append(values_N) + else: + line_splt = line.split() + print(line_splt) + if line_splt[0] == "sync_frec_source:": + val = int(line_splt[1]) + ADC_settings["sync_frec_source"] = t_x502_sync_mode[val] + elif line_splt[0] == "sync_start_source:": + val = int(line_splt[1]) + ADC_settings["sync_start_source"] = t_x502_sync_mode[val] + elif line_splt[0] == "chan:": + chan_N = int(line_splt[1][:-1]) + chan_mode = int(line_splt[3][:-1]) + chan_range = int(line_splt[5]) + ADC_settings["chans"][chan_N] = {"mode":t_x502_lch_mode[chan_mode], "range":t_x502_adc_range[chan_range]} + else: + print("strange line:") + print(line) + + except ValueError: pass except IndexError: @@ -45,12 +80,19 @@ if __name__ == "__main__": pass f.close() print("data samples:", values_N) + print(ADC_settings) + ADC_settings_str = "" + ADC_settings_str += "sync_frec_source: " + ADC_settings["sync_frec_source"] + "
" + ADC_settings_str += "sync_start_source: " + ADC_settings["sync_start_source"] + "
" + for key, val in ADC_settings["chans"].items(): + ADC_settings_str += " chan" + str(key) + ": " + str(val)+ "
" + print(ADC_settings_str) chart = go.Figure() + chart.update_layout(title=argv[1] + "
" + ADC_settings_str) for key, val in data.items(): if (key.count("_N") + key.count("_hex")) == 0: #print(key+"_hex :", data[key+"_hex"]) chart.add_trace(go.Scattergl(x=data[key+"_N"], y=data[key], name=key, mode="lines", text=data[key+"_hex"])) # chart.add_trace(go.Scattergl(x=data[key+"_N"], y=data[key], name=key, mode="lines+markers", text=data[key+"_hex"])) - chart.update_layout(title=argv[1]) chart.show()