Bonjour,
Mon arduino mega doit communiquer avec 2 dispositif, une carte Anet8 via RX1 TX1 et un resistance meter (via python) via port USB.
La carte Anet8 envoie un signal à l'arduino afin qu'il puisse executer une partie du code appelé MeasGo, et par conséquence lancer une partie du code sur python (via Serial.print(A8flag)) cette partie lance des mesures sur le resistance meter. Pendant que les mesures sont faites, une partie du code python renvoie un signal à l'arduino qui doit le lire grâce à Serial.readstring et par conséquence executer une fonction nommé "MuxRelayChoice"
Mon problème est que la partie qui permet de lire le Serial.readstring après le "If Serial.available()>0" ne marche pas, le debug_pin1 n'est pas mis à 1 et donc ma fonction "MuxRelayChoice" ne s'execute pas.
#include "pins.h"
#include <SoftwareSerial.h>
String flag, A8flag, sys;
int i;
int POW_RELAY_PIN=12;
int debug_pin = 38;
int debug_pin1 = 39;
void setup() {
// set the digital pin as output:
pinMode(10, INPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(debug_pin, OUTPUT);
pinMode(debug_pin1, OUTPUT);
Set_Pins(); //to activate mux pins
// Open serial communications and wait for port to open:
Serial.begin(9600);
// Serial.setTimeout(500);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial1.begin(9600);
// Serial1.setTimeout(500);
while (Serial1) {
; // wait for serial port to connect. Needed for native USB port only
}
}
void loop() {
if (Serial1.available()>0)
{
delay(50);
String A8flag ="";
A8flag=Serial1.readString();
delay(50);
if(A8flag.equals("MeasGO\n")){
Serial.print(A8flag);
delay(100);
Serial.flush();
digitalWrite(debug_pin, HIGH);
if (Serial.available()>0)
{
String sys ="";
sys=Serial.readString();
delay(50);
digitalWrite(debug_pin1, HIGH);
MuxRelayChoice(sys);
}
}
Voici une partie du code sur python, j'envoie le signal à l'arduino avec la commande ser.write()
if flag=="MeasGO":
for n in range(4):
ser.write(("sys"+str(n)+"\n").encode()) #Writing to the Serial port of Arduino
time.sleep(1)
data=mybk.query('FETCh?')
time.sleep(1)
t.append(time.time()-t0)
print("sys"+str(n)+ '\n')
res[n]=float(data[:13])*1000
print(str(res[n])+'\t mOhm')
with open(path+'csvfile.csv','a') as f:
f.write(str(time.time()-t0)[:7]+'\t'+str(res[0])+'\t'+str(res[1])+'\t'+str(res[2])+'\t'+str(res[3])+'\n') #Give your csv text here.
time.sleep(0.5)
ser.write("MeasOK\n".encode())
Je vous remercie d'avance pour votre aide !