Skip to content
Snippets Groups Projects
Commit 23586c2c authored by Köllőd Csaba's avatar Köllőd Csaba
Browse files

Dev: packet handling

parent b04535a4
No related branches found
No related tags found
No related merge requests found
...@@ -5,6 +5,39 @@ from struct import unpack ...@@ -5,6 +5,39 @@ from struct import unpack
import numpy as np import numpy as np
def _read_block_data(file, shape, format_, format_size):
sh = np.prod(shape)
data = unpack(format_ * sh, file.read(format_size * sh))
data = np.array(data)
data = data.reshape(shape)
return data
class FlowPacket:
def __init__(self, date_, flow, hr, spo2, vbat_eeg, vbat_arm,
eeg, eeg_giro, eeg_acc,
emg, emg_giro, emg_acc,
sound, gsr):
self.date = date_
self.flow = flow
self.hr = hr
self.spo2 = spo2
self.vbat_eeg = vbat_eeg
self.vbat_arm = vbat_arm
self.eeg = eeg
self.eeg_giro = eeg_giro
self.eeg_acc = eeg_acc
self.emg = emg
self.emg_giro = emg_giro
self.emg_acc = emg_acc
self.sound = sound
self.gsr = gsr
def __add__(self, other):
pass
def process_packet(file): def process_packet(file):
# header # header
date_, time_, flow, hr, spo2, vbat_eeg, vbat_arm = unpack('>II10sBHHH', file.read(25)) date_, time_, flow, hr, spo2, vbat_eeg, vbat_arm = unpack('>II10sBHHH', file.read(25))
...@@ -16,11 +49,23 @@ def process_packet(file): ...@@ -16,11 +49,23 @@ def process_packet(file):
print(date_, flow, hr, spo2, vbat_eeg, vbat_arm) print(date_, flow, hr, spo2, vbat_eeg, vbat_arm)
# eeg # eeg
eeg = unpack('i' * 4 * 250, file.read(4 * 4 * 250)) eeg = _read_block_data(file, (250, 4), 'i', 4).T
eeg = np.array(eeg) eeg_giro = _read_block_data(file, (50, 3), 'h', 2).T
eeg = eeg.reshape((250, 4)).T eeg_acc = _read_block_data(file, (50, 3), 'h', 2).T
print(eeg, eeg.shape) print(eeg.shape, eeg_giro.shape, eeg_acc.shape)
eeg_giro = unpack('h' * 3 * 50, file.read(2 * 3 * 50))
# emg
emg = _read_block_data(file, (250, 6), 'i', 4).T
emg_giro = _read_block_data(file, (50, 3), 'h', 2).T
emg_acc = _read_block_data(file, (50, 3), 'h', 2).T
print(emg.shape, emg_giro.shape, emg_acc.shape)
# extra
sound = _read_block_data(file, (6000, 1), 'h', 2).T
gsr = _read_block_data(file, (10, 1), 'h', 2).T
print(sound.shape, gsr.shape)
return date_, flow, hr, spo2, vbat_eeg, vbat_arm, eeg, eeg_giro, eeg_acc, emg, emg_giro
def read_dat_file(file): def read_dat_file(file):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment