1515from pandas .core .interchange import dataframe
1616import struct
1717from .sciopy_dataclasses import EitMeasurementSetup
18+ from .com_util import bytesarray_to_float , byteintarray_to_float , two_byte_to_int
1819
1920TWOPOWER24 = 16777216
2021TWOPOWER16 = 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
270280class EITFrame :
271281 """
@@ -299,7 +309,13 @@ def __hex__(self):
299309 return hex (self .ppcData )
300310
301311
312+
313+
314+
315+ # -------------------------------------------------------------------------------------------------------------------- #
316+ # -------------------------------------------------------------------------------------------------------------------- #
302317def 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