Bonjour,
Tout est dans le titre...
J'envoie des données avec un code python par câble USB à ma carte de programmation (en utilisant le port USB de programmation de ma carte). J'ai vérifié avec Wireshark et mes données sont biens envoyées.
Par contre dès que je compile mon code python pour envoyer les données cela fait reset mon code qui tourne dans ma carte de programmation (je le vois car ce code gère un écran).
Est ce que c'est normal ? Y'a-t-il une méthode permettant l'envoi de données par USB sans reset le programme de sa carte de programmation ?
Voici mon code python :
Code:#Python imports: import struct import socket import numpy as np import time import sys import math from serial import Serial BAUD_RATE = int(115200) ################################################################################ # SendData Class # ################################################################################ class SendData: def __init__(self, mode, address): """Initialize the SendData""" self.is_usb = (mode == 'USB') self.connect(address) print('Initialized at address {}'.format(address)) def __del__(self): try: self.close() except Exception as err: pass ############################################################################ # Communication protocol # ############################################################################ def connect(self, address): self.serial_address = address self.open_serial_connection(self.serial_address, BAUD_RATE) def open_serial_connection(self, port, baud_rate): """Open the serial connection to the 2DMOT. Args: port (str): COM port used by the arduino baud_rate (int): baud rate for the serial communication """ try : self.serial = Serial(port,baud_rate) self.serial.timeout = 2. self.serial.writeTimeout = 2. self.serial.readline() # remove setup bytes # self.serial.flushInput() # self.serial.flushOutput() print('Connected to port',port) except IOError as e: print(e) def close(self): self.serial.close() def send_Coils(self, msg): if(int(msg) >= 32768): print("Valeur a envoyer trop grande (coil)") else: """Send a message to the 2DMOT through the USB.""" message = int(msg) + 32768 self.send_serial_message(str(message).encode()) def send_Wire(self, msg): if(int(msg) >= 32768): print("Valeur a envoyer trop grande (wire)") else: """Send a message to the 2DMOT through the USB.""" self.send_serial_message(msg.encode()) def send_serial_message(self, msg): """Send a message to the arduino through va serial communication. Args: msg (bytes): message to send to the arduino """ # print("Send serial message") try: if self.serial : # self.serial.flushInput() # print(msg) self.serial.write(msg) flag = self.serial.read(4) self.serial.flushOutput() self.serial.flushInput() print('flag: ', flag) if flag == b'': print('The 2DMOT encountered some issue while treating ' ' flag ', msg[0]) except Exception as err: print(err) ########################################### # Constants # ########################################### MODE = 'USB' BOX_SERIAL_ADDRESS = 'COM7' ################################################################################ # Initialize # ################################################################################ CTRL_SendData = CTRL_SendData.SendData(MODE, BOX_SERIAL_ADDRESS) ################################################################################ # Send values # ################################################################################ if __name__ == '__main__': CTRL_SendData.send_Coils('400'); CTRL_SendData.send_Wire('450');
-----