Skip to content

Commit 2bbd047

Browse files
committed
Debugging
1 parent 760f591 commit 2bbd047

3 files changed

Lines changed: 56 additions & 46 deletions

File tree

sciopy/EIT_16_32_64_128.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ def StartStopMeasurementFast(self, return_as="pot_mat"):
583583

584584
#todo check
585585
def StartStopMeasurementNew(self, timeout:int=0, return_as="pot_mat", bSaveData:bool=False, bDeleteData:bool=False,
586-
sSavepath:str="C/"):
586+
sSavepath:str="C/", bResultsFolder=True):
587587
"""
588588
Starts and stops a measurement process using the configured serial protocol (HS or FS).
589589
Sends appropriate commands to the device to initiate and terminate measurement.
@@ -609,24 +609,27 @@ def StartStopMeasurementNew(self, timeout:int=0, return_as="pot_mat", bSaveData:
609609
"""
610610

611611
# Start measurement
612-
self.cMessageParser.ppcData=[]
612+
self.cMessageParser.clear_out_data()
613+
if bResultsFolder:
614+
self.cMessageParser.make_results_folder(bResultsFolder, bSaveData, sSavepath)
613615

614616
self.send_message(bytearray([0xB4, 0x01, 0x01, 0xB4]))
615617
self.cMessageParser.bPrintMessages = False
616618
if timeout != 0:
617619
self.cMessageParser.read_usb_for_seconds(timeout, bSaveData=bSaveData, bDeleteDataFrame=bDeleteData,
618-
sSavePath=sSavepath)
620+
sSavePath=sSavepath,bResultsFolder=False )
619621
else:
620622
if self.setup.burst_count ==0:
621623
print("Burst count for this setup needs to be >=1")
622624
return
623-
self.cMessageParser.read_usb_till_timeout(bSaveData=bSaveData, bDeleteDataFrame=bDeleteData,sSavePath=sSavepath)
625+
self.cMessageParser.read_usb_till_timeout(bSaveData=bSaveData, bDeleteDataFrame=bDeleteData,sSavePath=sSavepath, bResultsFolder=False)
624626

625627
# Stop measurement
626628
self.send_message(bytearray([0xB4, 0x01, 0x00, 0xB4]))
627-
# self.cMessageParser.ppcData=[]
629+
# All data is returned if wanted
628630
data = self.cMessageParser.read_usb_till_timeout(bSaveData=bSaveData, bDeleteDataFrame=bDeleteData,
629-
sSavePath=sSavepath)
631+
sSavePath=sSavepath, bResultsFolder=False)
632+
630633
if bDeleteData:
631634
return
632635
if return_as == "hex":

sciopy/datatype_conversion.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
"""
2+
Project :sciopy
3+
Directory: sciopy/sciopy
4+
File : datatype_conversion.py
5+
Author :Patricia Fuchs
6+
Date :03.12.2025 14:02
7+
"""
8+
9+
10+
11+
12+
TWOPOWER24 = 16777216
13+
TWOPOWER16 = 65536
14+
TWOPOWER8 = 256
15+
16+
# -------------------------------------------------------------------------------------------------------------------- #
17+
# -------------------------------------------------------------------------------------------------------------------- #

sciopy/usb_message_parser.py

Lines changed: 30 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from pandas.core.interchange import dataframe
1616
import struct
1717
from .sciopy_dataclasses import EitMeasurementSetup
18+
from .com_util import bytesarray_to_float, byteintarray_to_float, two_byte_to_int
1819

1920
TWOPOWER24 = 16777216
2021
TWOPOWER16 = 65536
@@ -70,13 +71,14 @@ class MessageParser:
7071
def __init__(self, device, eitsetup=None, devicetype="FS"):
7172
# General setup
7273

73-
self.bCreateResultsFolder = True
74+
7475
self.bPrintMessages = False
7576
self.iNPZSaveIndex = 1
7677
self.iSaveCounter = 0
7778
self.ppiMessages = [] # Unused
7879
self.ppcData = []
7980
self.iInjIndex = 0
81+
self.sCurrentPath=""
8082

8183
# Device setup
8284
self.cDevice = device
@@ -113,6 +115,9 @@ def set_measurement_setup(self, setup: EitMeasurementSetup):
113115
# ALL needed
114116
self.reset_new_data_frame()
115117

118+
def clear_out_data(self):
119+
self.ppcData = []
120+
116121

117122
def init_parser(self):
118123
self.Parser= byte_parser()
@@ -130,14 +135,17 @@ def read_hs(self):
130135
def send_hs(self, tosend):
131136
self.cDevice.write_data(tosend)
132137

133-
134-
def read_usb_for_seconds(self, fTime, bSaveData=False, bDeleteDataFrame=False, sSavePath="C/"):
135-
if self.bCreateResultsFolder and bSaveData:
138+
def make_new_folder(self, bCreateResultsFolder,bSaveData, sSavePath):
139+
if bSaveData and bCreateResultsFolder:
136140
timestr = time.strftime("%Y%m%d-%H%M%S_eit")
137141
path = os.path.join(sSavePath, timestr)
138142
os.mkdir(path)
139-
sSavePath = path + "/"
140-
messages = []
143+
self.sCurrentPath = path + "/"
144+
else:
145+
self.sCurrentPath = sSavePath
146+
147+
def read_usb_for_seconds(self, fTime, bSaveData=False, bDeleteDataFrame=False, sSavePath="C/", bResultsFolder=False):
148+
self.make_new_folder(bResultsFolder, bSaveData, sSavePath)
141149
iMessageCount= 0
142150
bMessageStarted = False
143151
timeout_count= 0
@@ -149,7 +157,7 @@ def read_usb_for_seconds(self, fTime, bSaveData=False, bDeleteDataFrame=False, s
149157

150158
if len(message) > 0:
151159
bMessageStarted = False
152-
self.interpret_message(message, bSaveData,bDeleteDataFrame,sSavePath)
160+
self.interpret_message(message, bSaveData,bDeleteDataFrame,self.sCurrentPath)
153161
iMessageCount += 1
154162
else:
155163
bMessageStarted = True
@@ -165,16 +173,16 @@ def read_usb_for_seconds(self, fTime, bSaveData=False, bDeleteDataFrame=False, s
165173
print(f"{iMessageCount} message(s) received.")
166174
return self.ppcData
167175

168-
def read_usb_till_timeout(self, bSaveData=False, bDeleteDataFrame=False, sSavePath="C/"):
169-
messages= []
176+
def read_usb_till_timeout(self, bSaveData=False, bDeleteDataFrame=False, sSavePath="C/", bResultsFolder=False):
177+
self.make_new_folder(bResultsFolder, bSaveData, sSavePath)
170178
iMessageCount = 0
171179
timeout_count = 0
172180
while True:
173181
buffer = self.device_read()
174182
if buffer:
175183
message= self.Parser.send(buffer)
176184
if len(message)>0:
177-
self.interpret_message(message, bSaveData,bDeleteDataFrame,sSavePath)
185+
self.interpret_message(message, bSaveData,bDeleteDataFrame,self.sCurrentPath)
178186
iMessageCount += 1
179187
timeout_count = 0
180188
continue
@@ -243,19 +251,19 @@ def interpret_data_input(self, message, bSave=False, bDeleteFrame=False, sSavePa
243251

244252
#TIMESTAMP
245253
if self.iSaveCounter == 0:
246-
self.CurrentFrame.timestamp1 = four_byte_to_int(message[7:11])
254+
self.CurrentFrame.timestamp1 = (message[7:11])
247255

248256
# Data Handling
249257
for i in range(11, 135, 8):
250258
data = complex(
251-
four_byte_to_int(message[i: i + 4]),
252-
four_byte_to_int(message[i + 4: i + 8]),
259+
byteintarray_to_float(message[i: i + 4]),
260+
byteintarray_to_float(message[i + 4: i + 8]),
253261
)
254262
self.CurrentFrame.ppcData[self.iSaveCounter] = data
255263
self.iSaveCounter += 1
256264
if self.iSaveCounter == self.iLenDataperFrame:
257265
# Frame Full
258-
self.CurrentFrame.timestamp2 = four_byte_to_int(message[7:11])
266+
self.CurrentFrame.timestamp2 = byteintarray_to_float(message[7:11])
259267
if bSave:
260268
self.save_data_frame(sSavePath, self.CurrentFrame)
261269
if bDeleteFrame:
@@ -266,6 +274,8 @@ def interpret_data_input(self, message, bSave=False, bDeleteFrame=False, sSavePa
266274
self.reset_new_data_frame()
267275
# extract
268276

277+
278+
# -------------------------------------------------------------------------------------------------------------------- #
269279
@dataclass
270280
class EITFrame:
271281
"""
@@ -299,7 +309,13 @@ def __hex__(self):
299309
return hex(self.ppcData)
300310

301311

312+
313+
314+
315+
# -------------------------------------------------------------------------------------------------------------------- #
316+
# -------------------------------------------------------------------------------------------------------------------- #
302317
def make_eitframes_hex(FrameList):
318+
#todo, so funktionierts nicht
303319
result= []
304320
for f in FrameList:
305321
result.append(hex(f.ppcData))
@@ -324,29 +340,3 @@ def load_eit_frames_into_nparray(path):
324340

325341

326342

327-
def four_byte_to_int(bytelist):
328-
return TWOPOWER24*bytelist[0] + TWOPOWER16* bytelist[1] +TWOPOWER8* bytelist[2] + bytelist[3]
329-
330-
def two_byte_to_int(bytelist):
331-
return TWOPOWER8* bytelist[0] + bytelist[1]
332-
333-
def bytelist_to_int(bytelist):
334-
r= bytelist[-1]
335-
for j in range(2,len(bytelist)):
336-
r+= bytelist[-j]* 2**((j-1)*8)
337-
return r
338-
339-
340-
def fourbytetst(bytes_array):
341-
bytes_array = [int(b, 16) for b in bytes_array]
342-
bytes_array = bytes(bytes_array)
343-
s= struct.unpack("!f", bytes(bytes_array))
344-
return struct.unpack("!f", bytes(bytes_array))[0]
345-
346-
def byteintlist_to_int(bytelist):
347-
#faster than four bytes to int at the moment
348-
bytes_array = bytes(bytelist)
349-
return int.from_bytes(bytes_array, byteorder='big')
350-
351-
352-

0 commit comments

Comments
 (0)