Index: dialin/dg/load_cells.py =================================================================== diff -u -r812bbf1e5b3b2f1c4f5cfbef1264787e18afb5c3 -rc8e3d47e1c55e29eb03eb86207d2c99c2ddcf56d --- dialin/dg/load_cells.py (.../load_cells.py) (revision 812bbf1e5b3b2f1c4f5cfbef1264787e18afb5c3) +++ dialin/dg/load_cells.py (.../load_cells.py) (revision c8e3d47e1c55e29eb03eb86207d2c99c2ddcf56d) @@ -50,11 +50,17 @@ msg_id = MsgIds.MSG_ID_LOAD_CELL_READINGS.value self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_load_cells_sync) + # test code + msg_id = 0x998 + self.can_interface.register_receiving_publication_function(channel_id, msg_id, + self._handler_load_cells_raw_sync) self.load_cell_A1 = 0.0 self.load_cell_A2 = 0.0 self.load_cell_B1 = 0.0 self.load_cell_B2 = 0.0 + # test code + self.rawA1 = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0] def get_load_cells(self): """ @@ -64,6 +70,40 @@ """ return [self.load_cell_A1, self.load_cell_A2, self.load_cell_B1, self.load_cell_B2] + # test code + @_publish(["rawA1"]) + def _handler_load_cells_raw_sync(self, message): + r1 = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1])) + r2 = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])) + r3 = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3])) + r4 = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4])) + r5 = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5])) + r6 = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6])) + r7 = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7])) + r8 = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8])) + r9 = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9])) + r10 = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10])) + self.rawA1[0] = r1[0] + self.rawA1[1] = r2[0] + self.rawA1[2] = r3[0] + self.rawA1[3] = r4[0] + self.rawA1[4] = r5[0] + self.rawA1[5] = r6[0] + self.rawA1[6] = r7[0] + self.rawA1[7] = r8[0] + self.rawA1[8] = r9[0] + self.rawA1[9] = r10[0] + @_publish(["load_cell_A1", "load_cell_A2", "load_cell_B1", "load_cell_B2"]) def _handler_load_cells_sync(self, message): """ Index: dialin/hd/syringe_pump.py =================================================================== diff -u -r3b8ec241845f0bfbeebc3f6e14160b9e7148fc3b -rc8e3d47e1c55e29eb03eb86207d2c99c2ddcf56d --- dialin/hd/syringe_pump.py (.../syringe_pump.py) (revision 3b8ec241845f0bfbeebc3f6e14160b9e7148fc3b) +++ dialin/hd/syringe_pump.py (.../syringe_pump.py) (revision c8e3d47e1c55e29eb03eb86207d2c99c2ddcf56d) @@ -209,7 +209,7 @@ payload = op + rat + vol message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, - message_id=MsgIds.MSG_ID_DG_AIR_TRAP_LEVEL_SENSOR_OVERRIDE.value, + message_id=MsgIds.MSG_ID_HD_SYRINGE_PUMP_OPERATION_REQUEST.value, payload=payload) self.logger.debug("requesting syringe pump operation " + str(operation) + Index: tests/test_lc.py =================================================================== diff -u --- tests/test_lc.py (revision 0) +++ tests/test_lc.py (revision c8e3d47e1c55e29eb03eb86207d2c99c2ddcf56d) @@ -0,0 +1,65 @@ +########################################################################### +# +# Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +# +# THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +# WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +# +# @file test_lc.py +# +# @author (last) Peter Lucia +# @date (last) 02-Oct-2020 +# @author (original) Peter Lucia +# @date (original) 14-Jul-2020 +# +############################################################################ + +import sys +sys.path.append("..") +#from dialin.hd.hemodialysis_device import HD +from dialin.dg.dialysate_generator import DG +from time import sleep + +if __name__ == "__main__": + # create an HD object called hd +# hd = HD(log_level="DEBUG") + # create a DG object called dg + dg = DG() + sleep(2) + + # log in to HD and DG as tester +# if hd.cmd_log_in_to_hd() == 0: +# exit(1) +# if dg.cmd_log_in_to_dg() == 0: +# exit(1) +# sleep(1) + + # create log file + with open("LC_test.log", "w") as f: + + # collect load cell related data from DG + while True: + sleep(0.1) + loadCells = "FILTERED:, A1, " + '{:8.2f}'.format(dg.load_cells.load_cell_A1) + \ + ", B1, " + '{:8.2f}'.format(dg.load_cells.load_cell_B1) + \ + ", A2, " + '{:8.2f}'.format(dg.load_cells.load_cell_A2) + \ + ", B2, " + '{:8.2f}'.format(dg.load_cells.load_cell_B2) + "\n" + rawLC = "1," + '{:8.2f}'.format(dg.load_cells.rawA1[0]) + "\n" + \ + "2," + '{:8.2f}'.format(dg.load_cells.rawA1[1]) + "\n" + \ + "3," + '{:8.2f}'.format(dg.load_cells.rawA1[2]) + "\n" + \ + "4," + '{:8.2f}'.format(dg.load_cells.rawA1[3]) + "\n" + \ + "5," + '{:8.2f}'.format(dg.load_cells.rawA1[4]) + "\n" + \ + "6," + '{:8.2f}'.format(dg.load_cells.rawA1[5]) + "\n" + \ + "7," + '{:8.2f}'.format(dg.load_cells.rawA1[6]) + "\n" + \ + "8," + '{:8.2f}'.format(dg.load_cells.rawA1[7]) + "\n" + \ + "9," + '{:8.2f}'.format(dg.load_cells.rawA1[8]) + "\n" + \ + "10," + '{:8.2f}'.format(dg.load_cells.rawA1[9]) + "\n" + + # log data + f.write(loadCells) + f.write(rawLC) + f.write("\n") + + # print to console + print(" Load Cells: "+loadCells) + Index: tests/test_syringe.py =================================================================== diff -u --- tests/test_syringe.py (revision 0) +++ tests/test_syringe.py (revision c8e3d47e1c55e29eb03eb86207d2c99c2ddcf56d) @@ -0,0 +1,44 @@ +########################################################################### +# +# Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +# +# THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +# WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +# +# @file test_syringe.py +# +# @author (last) Peter Lucia +# @date (last) 02-Oct-2020 +# @author (original) Peter Lucia +# @date (original) 14-Jul-2020 +# +############################################################################ + +import sys +sys.path.append("..") +from dialin.hd.hemodialysis_device import HD +#from dialin.dg.dialysate_generator import DG +from time import sleep + +if __name__ == "__main__": + # create an HD object called hd + hd = HD() + # create a DG object called dg +# dg = DG() + sleep(2) + + # log in to HD and DG as tester + if hd.cmd_log_in_to_hd() == 0: + exit(1) +# if dg.cmd_log_in_to_dg() == 0: +# exit(1) + sleep(1) + +# hd.syringe_pump.cmd_syringe_pump_operation(0,0.0,0.0) # stop +# hd.syringe_pump.cmd_syringe_pump_operation(1,0.0,0.0) # retract +# sleep(10) +# hd.syringe_pump.cmd_syringe_pump_operation(2,0.0,0.0) # seek/prime +# sleep(5) + hd.syringe_pump.cmd_syringe_pump_operation(3,0.0,2.0) # bolus +# hd.syringe_pump.cmd_syringe_pump_operation(4,1.0,0.0) # continuous +