diff --git a/README.md b/README.md index 8c4eedc..9df8011 100644 --- a/README.md +++ b/README.md @@ -15,11 +15,6 @@ To have a solution independent from OS and their implementation specificities ![Firmware logic](flowchart.png) -# Limitation - -When using the Panduza plateform, the State send by the Client (client.py) must be True. Otherwise (False or something else) the controle of the Pico crashes. - - # Build and run project This project has a github actions workflow that build the Pico firmware. The firmware can be download and copy on the Pico in bootsel mode. diff --git a/client.py b/client.py index 26d3f14..b8f6433 100644 --- a/client.py +++ b/client.py @@ -70,17 +70,13 @@ print("amps real is " + str(amps_real)) time.sleep(2) -var="n" -print("Do you want to set enable->value (unsafe) ? (y/n)") -var=input() -if(var != "y" ): - print("Skip setting enable->value") - exit() + # *** POWER ON/OFF *** + #Write state=True print("\nset state to " + str(state)) -my_psu.enable.value.set(True) +my_psu.enable.value.set(state) time.sleep(2) #Read print("Get state...") @@ -91,7 +87,7 @@ #Write state=False print("\nset state to " + str(state)) -my_psu.enable.value.set(False) +my_psu.enable.value.set(state) time.sleep(2) #Read print("Get state...") diff --git a/firmware.c b/firmware.c index 3b8234f..b58e9ef 100644 --- a/firmware.c +++ b/firmware.c @@ -67,6 +67,7 @@ int main() { ModbusErrorInfo error; stdio_init_all(); + stdio_set_translate_crlf(&stdio_usb, false); uart_init(UART_ID, BAUDRATE); gpio_init(LED_PIN); gpio_set_dir(LED_PIN, GPIO_OUT); @@ -76,7 +77,7 @@ int main() { initHanmtekValue(); blink(); - debug("begining of program..\r\n"); + debug("\n\rbeginning of program..\r\n"); error = modbusSlaveInit(&slave, registerCallback, exceptionCallback, modbusDefaultAllocator, modbusSlaveDefaultFunctions, modbusSlaveDefaultFunctionCount); @@ -283,7 +284,7 @@ ModbusError exceptionCallback(const ModbusSlave *slave, uint8_t function, Modbu void printErrorInfo(ModbusErrorInfo err) { if (modbusIsOk(err)){ - debug("FRAME IS SEND TO THE LIB \r\n"); + //debug("FRAME IS SEND TO THE LIB \r\n"); }else{ debug("THERE IS A PROBLEM WITH THE INIT OF\r\n"); diff --git a/tests/rsc/Client.py b/tests/rsc/Client.py index 0a6b349..b9e0b8a 100644 --- a/tests/rsc/Client.py +++ b/tests/rsc/Client.py @@ -4,14 +4,24 @@ import time import logging +import sys + +#DEBUG VERBOSE +FORMAT = ('%(message)-15s') +logging.basicConfig(format=FORMAT) +log = logging.getLogger() +log.setLevel(logging.DEBUG) +#END param DEBUG VERBOSE + class Client: def __init__(self): - self.master = ModbusSerialClient(framer=ModbusRtuFramer, port = '/dev/ttyACM0', stopbits=1, bytesize=8, parity='N', baudrate=115200) + self.master = ModbusSerialClient(framer=ModbusRtuFramer, port = '/dev/ttyACM0', stopbits=1, bytesize=8, parity='N', baudrate=9600) + # self.master = ModbusSerialClient(framer=ModbusRtuFramer, port = '/dev/ttyUSB1', stopbits=1, bytesize=8, parity='N', baudrate=9600) #self.master = ModbusSerialClient(framer=ModbusRtuFramer, port = '/dev/ttyUSB0', stopbits=1, bytesize=8, parity='N', baudrate=9600) connexion = self.master.connect() print(self.master) - self.writeDelay = 5 + self.writeDelay = 1 # --- GETS --- @@ -79,25 +89,30 @@ def read_resistor_load(self): def write_psu_model(self, value): """ Illegal action """ - sending = self.master.write_registers(0x03, int(value), 0x01) + sending = self.master.write_register(0x03, int(value), 0x01) + print(sending) time.sleep(self.writeDelay) def write_voltage_goal(self, voltage): - sending = self.master.write_registers(0x30, int(voltage), 0x01) + sending = self.master.write_register(0x30, int(voltage), 0x01) + print(sending) time.sleep(self.writeDelay) def write_voltage_real(self, voltage): """ Illegal action """ - sending = self.master.write_registers(0x10, int(voltage), 0x01) + sending = self.master.write_register(0x10, int(voltage), 0x01) + print(sending) time.sleep(self.writeDelay) def write_amps_goal(self, amps): - sending = self.master.write_registers(0x31, int(amps), 0x01) + sending = self.master.write_register(0x31, int(amps), 0x01) + print(sending) time.sleep(self.writeDelay) def write_enable(self, state): - sending = self.master.write_registers(0x1, int(state) , 0x01) + sending = self.master.write_register(0x1, int(state) , 0x01) + print(sending) time.sleep(self.writeDelay) def turn_on_power_supply(self): @@ -107,7 +122,8 @@ def turn_off_power_supply(self): self.write_enable(0) def write_resistor_load(self, value): - sending = self.master.write_registers(0x24, int(value) , 0x01) + sending = self.master.write_register(0x24, int(value) , 0x01) + print(sending) time.sleep(self.writeDelay)