Compare commits

...

8 Commits

Author SHA1 Message Date
peterlu14 63c1ba8efb [update] update decorder mode in I4V4Z4T4 2022-05-18 16:16:17 +08:00
Roy 4a28348db4 [update] fix cp mode instruction and decoder 2022-05-18 11:06:23 +08:00
peterlu14 64dfe87d05 [update] remove decorder rebuild problem & add new parameter to control time duration 2022-05-18 10:19:08 +08:00
peterlu14 f7a5a867a4 [update] fix memory counter 2022-05-06 13:50:09 +08:00
peterlu14 1accaa9b9f [update] delete logger 2022-05-06 11:25:30 +08:00
peterlu14 b810e35fb2 Merge branch 'feature/get-running-project-flow' into rel/v1.6.1/cp_mode 2022-05-06 10:39:51 +08:00
peterlu14 82c9d2b0e3 [update] add clean logger script 2022-05-06 10:39:47 +08:00
peterlu14 e5a3f33b9f [update] add cp mode 2022-05-06 10:36:17 +08:00
5 changed files with 134 additions and 100 deletions
+18 -13
View File
@@ -881,12 +881,17 @@ class I4V4Z4T4DataDecoder(RecDataDecoder):
def decode(self, data: bytes) -> Optional[RecordingData]:
if len(data) < 18:
return None
voltage = 0
mem_cnt = data[1]
time_stamp: float = struct.unpack('<I', data[4:8])[0] # unit: ms 0x18030000
current = struct.unpack('<i', data[8:12])[0] # unit: nA
voltage = struct.unpack('<i', data[12:16])[0] # unit: uV
ch2 = struct.unpack('<i', data[12:16])[0] # unit: uV
impedance = struct.unpack('<i', data[16:20])[0] # unit: mOm
if self._mode == 16:
voltage = impedance - ch2
else:
voltage = ch2
cycle_number = struct.unpack('<H', data[20:22])[0]
finish_mode_falg = data[22]
battery = struct.unpack('<i', data[23:27])[0]
@@ -945,18 +950,18 @@ class I4V4Z4T4DataDecoder(RecDataDecoder):
ret.append_data(1, voltage)
ret.append_data(2, impedance)
ret.append_data(3, cycle_number)
ret.append_data(4, battery)
ret.append_data(5, elite_notify_times)
ret.append_data(6, mem_cnt)
# ret.append_data(4, battery)
# ret.append_data(5, elite_notify_times)
# ret.append_data(6, mem_cnt)
# memoryboard information
ret.append_data(7, ram_num)
ret.append_data(8, broken_flag)
try:
ret.append_data(9, mem_wrong_information)
# print('append_data success, mem_wrong_information:', mem_wrong_information, hex(mem_wrong_information))
except:
print('append_data fail, mem_wrong_information:', mem_wrong_information, hex(mem_wrong_information))
# # memoryboard information
# ret.append_data(7, ram_num)
# ret.append_data(8, broken_flag)
# try:
# ret.append_data(9, mem_wrong_information)
# # print('append_data success, mem_wrong_information:', mem_wrong_information, hex(mem_wrong_information))
# except:
# print('append_data fail, mem_wrong_information:', mem_wrong_information, hex(mem_wrong_information))
+21 -14
View File
@@ -105,6 +105,9 @@ class RecordingProcess(Process):
self._mem_tailer_len = 6
self._single_data_len = self._elite_data_len + self._mem_header_len + self._mem_tailer_len
self._decoder = self.data_format()
self._start_time = time()
def ensure_data_format(self) -> DataDecodeFormat:
if isinstance(self._data_format, (str, bytes)):
self._data_format = DataDecodeFormat.parse(self._data_format)
@@ -133,9 +136,9 @@ class RecordingProcess(Process):
decoder._prev_data = self._prev_data
decoder._prev_delta_time = self._prev_delta_time
decoder._prev_time_stamp = self._prev_time_stamp
# elif isinstance(decoder, I4V4Z4T4DataDecoder):
elif isinstance(decoder, I4V4Z4T4DataDecoder):
# get cycle_time from meta file
# decoder._mode = self._meta_file.configuration.MODE
decoder._mode = self._meta_file.configuration.get_parameter('MODE')
# decoder._cycle_start_time = self._cycle_start_time
elif isinstance(decoder, NeuliveThreeOneDataDecoder):
# get amp_gain from meta file
@@ -151,9 +154,8 @@ class RecordingProcess(Process):
decoder._prev_time_stamp = self._prev_time_stamp
elif isinstance(decoder, EISZeroOneDataDecoder):
# get amp_gain from meta file
decoder._ac_amp = self._meta_file.configuration.get_parameter('AC_AMP')
decoder._mode = self._meta_file.configuration.get_parameter('MODE')
decoder._ac_amp = self._meta_file.configuration.get_parameter('AC_AMP')
decoder._freq_start = self._meta_file.configuration.get_parameter('FREQ_START')
decoder._freq_stop = self._meta_file.configuration.get_parameter('FREQ_STOP')
@@ -200,14 +202,13 @@ class RecordingProcess(Process):
self._isTimeOut = True
self._timer = current_time
decoder = self.data_format()
# print('sync_data')
# print('data',data)
# print('server/data', self._prev_delta_time,self._prev_time_stamp, self._prev_data)
if data is None or len(data) == 0:
result = decoder.decode(b'')
result = self._decoder.decode(b'')
if result is not None:
ret = result
@@ -221,7 +222,7 @@ class RecordingProcess(Process):
for offset, section in self._foreach_data_section(data):
# for section in self._neu_foreach_data_section(data):
result = decoder.decode(section)
result = self._decoder.decode(section)
# if self._isTimeOut:
# try:
# print('result: ', result.data_size)
@@ -229,9 +230,15 @@ class RecordingProcess(Process):
# pass
try:
if isinstance(decoder, I4V4Z4T4DataDecoder) or isinstance(decoder, EISZeroOneDataDecoder):
if decoder.isFinishMode is not None and decoder.isFinishMode() == 1:
time_duration = self._meta_file.configuration.get_parameter('TIME_DURATION')
if time_duration and time_duration is not 0 and time() - self._start_time >= time_duration:
self._queue_msg.put(['ds', self._device, 'interrupt'])
return None
if isinstance(self._decoder, I4V4Z4T4DataDecoder) or isinstance(self._decoder, EISZeroOneDataDecoder):
if self._decoder.isFinishMode is not None and self._decoder.isFinishMode() == 1:
self._queue_msg.put(['ds', self._device, 'interrupt'])
return None
# content = {}
# content['header'] = 'device_instruction/0'
# content['device'] = result.device
@@ -297,8 +304,8 @@ class RecordingProcess(Process):
self._last_cnt[7] = head_counter - 1
last_data_cnt = self._last_cnt[7]
# dont save to section when head or id is wrong
if (head != 255 or device_id != device):
# dont save to section when head or id is wrong
if (head != 255 or device_id != device or head_counter > 255 or head_counter < 0):
save = False
last_data_cnt = last_data_cnt + 1
@@ -349,13 +356,13 @@ class RecordingProcess(Process):
if colum_total == 1:
print('this ram data < 3 records, colum_total = ', colum_total)
print('raw_data[0]', raw_data[0])
print('raw_data[0]', list(raw_data[0]))
return save
elif colum_total == 2:
print('this ram data < 3 records, colum_total = ', colum_total)
print('raw_data[0]', raw_data[0])
print('raw_data[1]', raw_data[1])
print('raw_data[0]', list(raw_data[0]))
print('raw_data[1]', list(raw_data[1]))
if (raw_data[col + 1][1] - raw_data[col][1] == 1) or (raw_data[col][1] == 255 and raw_data[col + 1][1] == 0):
save = True
+41 -29
View File
@@ -11,7 +11,8 @@
"constant": {
"FREQ_MAX": 4294967296,
"VOLT_MAX": 65536,
"BLE_WRITE_MAX": 255
"BLE_WRITE_MAX": 255,
"TIME_MAX": 100000
},
"parameters": {
"CHANNEL": {
@@ -48,9 +49,9 @@
"description": "working mode",
"record_meta": true,
"value": [
"EIS CURVE",
"Cyclic Voltammetry",
"Dev Mode"
"EIS CURVE",
"Cyclic Voltammetry",
"Dev Mode"
]
},
"FREQ_START": {
@@ -58,10 +59,10 @@
"record_meta": true,
"initial": 13422819,
"domain": [
"FREQ_MAX"
"FREQ_MAX"
],
"value": {
"expression": "VALUE"
"expression": "VALUE"
}
},
"FREQ_STOP": {
@@ -69,10 +70,10 @@
"record_meta": true,
"initial": 7,
"domain": [
"FREQ_MAX"
"FREQ_MAX"
],
"value": {
"expression": "VALUE"
"expression": "VALUE"
}
},
"DELAY": {
@@ -91,10 +92,10 @@
"record_meta": true,
"initial": 8,
"value": [
2,
4,
8,
16
2,
4,
8,
16
]
},
"DC_BIAS": {
@@ -102,10 +103,10 @@
"record_meta": true,
"initial": 15000,
"domain": [
35001
35001
],
"value": {
"expression": "VALUE"
"expression": "VALUE"
}
},
"AC_AMP": {
@@ -113,7 +114,7 @@
"record_meta": true,
"initial": 25,
"domain": [
2048
2048
]
},
"SCALE": {
@@ -121,8 +122,8 @@
"record_meta": true,
"initial": 0,
"value": [
0,
1
0,
1
]
},
"PPD": {
@@ -130,7 +131,7 @@
"record_meta": true,
"initial": 10,
"domain": [
11
11
]
},
"RTIA": {
@@ -138,11 +139,11 @@
"record_meta": true,
"initial": 4,
"value": [
0,
1,
2,
3,
4
0,
1,
2,
3,
4
]
},
"ADC_VALUE_I": {
@@ -154,10 +155,10 @@
"record_meta": true,
"initial": 10000,
"domain": [
100001
100001
],
"value": {
"expression": "VALUE"
"expression": "VALUE"
}
},
"CTRL_HIGH_Z_15": {
@@ -242,9 +243,9 @@
"BLE_WRITE": {
"description": "send msg to elite",
"domain": {
"list": [
"list": [
"BLE_WRITE_MAX"
]
]
},
"initial": "[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]",
"value": "VALUE"
@@ -254,12 +255,23 @@
"domain": "int"
}
},
"TIME_DURATION": {
"description": "Run duration",
"record_meta": true,
"initial": 0,
"domain": [
"TIME_MAX"
],
"value": {
"expression": "VALUE"
}
},
"instruction": {
"start": [
{
"expression": "MODE",
"when": {
"*": "start_data"
"*": "start_data"
}
}
],
@@ -430,4 +442,4 @@
"_cdr('20X>ADC_VALUE_I')"
]
}
}
}
+51 -44
View File
@@ -9,6 +9,7 @@
"minor_version_number": 6
},
"constant": {
"TIME_MAX": 100000,
"VOLT_MAX": 65536,
"Const_Current_Range": 1500001,
"BLE_WRITE_MAX": 255
@@ -17,7 +18,7 @@
"DPV_e_init": {
"description": "DPV initial voltage ",
"record_meta": true,
"initial":20000,
"initial": 20000,
"domain": [
50001
],
@@ -28,7 +29,7 @@
"DPV_e_final": {
"description": "DPV final voltage",
"record_meta": true,
"initial":30000,
"initial": 30000,
"domain": [
50001
],
@@ -39,7 +40,7 @@
"DPV_e_1": {
"description": "DPV voltage return 1",
"record_meta": true,
"initial":35000,
"initial": 35000,
"domain": [
50001
],
@@ -50,7 +51,7 @@
"DPV_e_2": {
"description": "DPV voltage return 2",
"record_meta": true,
"initial":15000,
"initial": 15000,
"domain": [
50001
],
@@ -61,7 +62,7 @@
"DPV_amp": {
"description": "DPV pulse amplitude",
"record_meta": true,
"initial":25125,
"initial": 25125,
"domain": [
50001
],
@@ -72,7 +73,7 @@
"DPV_pul_width": {
"description": "DPV pulse width",
"record_meta": true,
"initial":50,
"initial": 50,
"domain": [
1000001
],
@@ -83,7 +84,7 @@
"DPV_increment": {
"description": "DPV increment",
"record_meta": true,
"initial":25025,
"initial": 25025,
"domain": [
50001
],
@@ -94,7 +95,7 @@
"DPV_step_time": {
"description": "DPV step time = time of one period",
"record_meta": true,
"initial":500,
"initial": 500,
"domain": [
1000001
],
@@ -105,7 +106,7 @@
"DPV_notify_rate": {
"description": "DPV sample rate",
"record_meta": true,
"initial":1000,
"initial": 1000,
"domain": [
1001
],
@@ -116,7 +117,7 @@
"DPV_curr_rec_min": {
"description": "DPV current recording period start",
"record_meta": true,
"initial":25,
"initial": 25,
"domain": [
101
],
@@ -127,7 +128,7 @@
"DPV_curr_rec_max": {
"description": "DPV current recording period end",
"record_meta": true,
"initial":100,
"initial": 100,
"domain": [
101
],
@@ -166,7 +167,7 @@
"V_initial_0": {
"description": "Pulse Mode Segment Voltage 0",
"record_meta": true,
"initial":50000,
"initial": 50000,
"domain": [
50001
],
@@ -177,7 +178,7 @@
"V_initial_1": {
"description": "Pulse Mode Segment Voltage 1",
"record_meta": true,
"initial":25000,
"initial": 25000,
"domain": [
50001
],
@@ -188,7 +189,7 @@
"V_initial_2": {
"description": "Pulse Mode Segment Voltage 2",
"record_meta": true,
"initial":25000,
"initial": 25000,
"domain": [
50001
],
@@ -199,7 +200,7 @@
"V_initial_3": {
"description": "Pulse Mode Segment Voltage 3",
"record_meta": true,
"initial":25000,
"initial": 25000,
"domain": [
50001
],
@@ -210,7 +211,7 @@
"t_pulse_0": {
"description": "Pulse Mode Segment Duration 0",
"record_meta": true,
"initial":750,
"initial": 750,
"domain": [
1000001
],
@@ -221,7 +222,7 @@
"t_pulse_1": {
"description": "Pulse Mode Segment Duration 1",
"record_meta": true,
"initial":9250,
"initial": 9250,
"domain": [
1000001
],
@@ -232,7 +233,7 @@
"t_pulse_2": {
"description": "Pulse Mode Segment Duration 2",
"record_meta": true,
"initial":1000,
"initial": 1000,
"domain": [
1000001
],
@@ -243,7 +244,7 @@
"t_pulse_3": {
"description": "Pulse Mode Segment Duration 3",
"record_meta": true,
"initial":1000,
"initial": 1000,
"domain": [
1000001
],
@@ -254,7 +255,7 @@
"CURR_REC_START_0": {
"description": "Pulse Mode Current Recording Period Start",
"record_meta": true,
"initial":35,
"initial": 35,
"domain": [
100
],
@@ -265,7 +266,7 @@
"CURR_REC_START_1": {
"description": "Pulse Mode Current Recording Period Start",
"record_meta": true,
"initial":35,
"initial": 35,
"domain": [
100
],
@@ -276,7 +277,7 @@
"CURR_REC_START_2": {
"description": "Pulse Mode Current Recording Period Start",
"record_meta": true,
"initial":35,
"initial": 35,
"domain": [
100
],
@@ -287,7 +288,7 @@
"CURR_REC_START_3": {
"description": "Pulse Mode Current Recording Period Start",
"record_meta": true,
"initial":35,
"initial": 35,
"domain": [
100
],
@@ -298,7 +299,7 @@
"CURR_REC_END_0": {
"description": "Pulse Mode Current Recording Period End",
"record_meta": true,
"initial":90,
"initial": 90,
"domain": [
100
],
@@ -309,7 +310,7 @@
"CURR_REC_END_1": {
"description": "Pulse Mode Current Recording Period End",
"record_meta": true,
"initial":99,
"initial": 99,
"domain": [
100
],
@@ -320,7 +321,7 @@
"CURR_REC_END_2": {
"description": "Pulse Mode Current Recording Period End",
"record_meta": true,
"initial":95,
"initial": 95,
"domain": [
100
],
@@ -331,7 +332,7 @@
"CURR_REC_END_3": {
"description": "Pulse Mode Current Recording Period End",
"record_meta": true,
"initial":95,
"initial": 95,
"domain": [
100
],
@@ -478,13 +479,14 @@
"Constant Current",
"Cyclic Voltammetry",
"Linear Sweep Voltammetry",
"Chronoamperometric Graph",
"Chronoamperometric",
"Cali DAC - test",
"Cali ADC - test",
"Dev Mode",
"Open Circuit Potential",
"Pulse Sensing",
"Differential Pulse Voltammetry (DPV)"
"Differential Pulse Voltammetry (DPV)",
"Chronopotentiometry"
]
},
"VOLT_ORIGIN": {
@@ -644,7 +646,7 @@
},
"CURRNET_LIMIT_VALUE": {
"description": "Current value Setting",
"initial":1500000,
"initial": 1500000,
"domain": [
"Const_Current_Range"
],
@@ -762,6 +764,17 @@
"s",
"ms"
]
},
"TIME_DURATION": {
"description": "Run duration",
"record_meta": true,
"initial": 0,
"domain": [
"TIME_MAX"
],
"value": {
"expression": "VALUE"
}
}
},
"instruction": {
@@ -812,7 +825,8 @@
"7": "set_adc_gain_I",
"8": "set_adc_gain_I",
"9": "set_adc_gain_I",
"13": "set_adc_gain_I"
"13": "set_adc_gain_I",
"16": "set_adc_gain_I"
}
},
{
@@ -827,7 +841,8 @@
"7": "set_adc_gain_Vin",
"8": "set_adc_gain_Vin",
"9": "set_adc_gain_Vin",
"13": "set_adc_gain_Vin"
"13": "set_adc_gain_Vin",
"16": "set_adc_gain_Vin"
}
},
{
@@ -845,7 +860,8 @@
"9": "curve_const_vscan",
"13": "curve_ocp",
"14": "curve_pulse_sensing",
"15": "curve_dpv"
"15": "curve_dpv",
"16": "const_current"
}
},
{
@@ -1313,9 +1329,7 @@
"2B>va;4B>vb;1B>vc;1B>vd;1B>ve"
]
},
"curve_dpv":[
"curve_dpv": [
{
"expression": "DPV_mode",
"when": {
@@ -1388,9 +1402,6 @@
"4b>pc;4b>pd"
]
},
"dpv_advanced_mode": [
"dpv_advanced_mode_ins_1",
"dpv_advanced_mode_ins_2",
@@ -1484,8 +1495,6 @@
"dpv_engineering_mode_advanced": [
"dpv_advanced_mode"
],
"VIS_CC_ZERO": [
"_data_format('I4V4Z4T4')",
"_disable_cache(False)",
@@ -1526,6 +1535,4 @@
]
}
}
}
}
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
find /home/pi -maxdepth 1 -type f -iname '*.out' -mtime +30 -delete