Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Arduino使用最后一个串行命令输入,直到收到下一个串行命令输入_Python_User Interface_Input_Arduino - Fatal编程技术网

Python Arduino使用最后一个串行命令输入,直到收到下一个串行命令输入

Python Arduino使用最后一个串行命令输入,直到收到下一个串行命令输入,python,user-interface,input,arduino,Python,User Interface,Input,Arduino,我已经建立了一个Python Arduino系统,通过串行通信。Python脚本每2秒向Arduino发送一条指令(作为字符串)。python在发送下一个命令之前有第二个延迟。问题是Arduino在这1秒延迟中停止工作,因为它不记得最后一个给定的命令。我想存储最后收到的字符串并使用它,直到另一个字符串出现 谢谢大家! char datafromUser=0; int VCC_控制=2; int pompa_bacuri=30; int stop_pompa_bacuri=31; int pom

我已经建立了一个Python Arduino系统,通过串行通信。Python脚本每2秒向Arduino发送一条指令(作为字符串)。python在发送下一个命令之前有第二个延迟。问题是Arduino在这1秒延迟中停止工作,因为它不记得最后一个给定的命令。我想存储最后收到的字符串并使用它,直到另一个字符串出现

谢谢大家!


char datafromUser=0;
int VCC_控制=2;
int pompa_bacuri=30;
int stop_pompa_bacuri=31;
int pompa_avans=32;
int stop_pompa_avans=33;
int pompa_unghi=32;
int stop_pompa_unghi=33;
无效设置(){
//将安装代码放在此处,以便运行一次,
pinMode(VCC_控制,输出);
序列号开始(115200);
pinMode(蓬帕·巴库里,输出);
pinMode(停止pompa_bacuri,输出);
pinMode(pompa_avans,输出);
pinMode(停止pompa_avans,输出);
pinMode(蓬帕乌昂吉,输出);
pinMode(停止、输出);
digitalWrite(pompa_bacuri,高中);
digitalWrite(pompa_avans,高中);
数字写入(stop_pompa_bacuri,高);
digitalWrite(stop_pompa_avans,高);
pinMode(蓬帕昂吉,高);
pinMode(停止pompa_unghi,高);
}
void循环(){
如果(Serial.available()>0)
{
datafromUser=Serial.read();
Serial.println((char)datafromUser);
}
String sync=Serial.readString();
while(Serial.available())
{
sync+=Serial.read();
}
//打印调试
//分裂
char cut=sync.substring(0,1)[0];
char presa_R1=同步子串(1,2)[0];
char presa_R2=sync.substring(2,3)[0];
char bacuri_R1=sync.substring(3,4)[0];
char bacuri_R2=sync.substring(4,5)[0];
char unghi_R1=同步子串(5,6)[0];
char unghi_R2=同步子串(6,7)[0];
char viteza=sync.substring(7)[0];
//打印调试
连载打印(“Presa_releu_avans:”);
序列号println(presa_R1);
串行打印(“Presa_releu_retragere:”);
序列号println(presa_R2);
连载打印(“Bacuri_releu_avans:”);
序列号println(bacuri_R1);
串行打印(“Bacuri_releu_retragere:”);
序列号println(bacuri_R2);
连载打印(“Bacuri_releu_avans:”);
序列号println(unghi_R1);
串行打印(“Bacuri_releu_retragere:”);
序列号println(unghi_R2);
连载印刷品(“Viteza_de_avans_presa:”);
连载println(viteza);
/////////////#控制释放压力#/////////////
//皮斯托阿内尔酒店
如果(presa_R1=='0'){
连载:println(“蓬巴巴库里色情”);
digitalWrite(stop_pompa_avans,高);
延误(5);
digitalWrite(pompa_avans,低位);
}
如果(presa_R1=='1'){
连载:println(“蓬巴巴库里色情”);
数字写入(stop_pompa_bacuri,低位);
延误(5);
digitalWrite(pompa_bacuri,高中);
}
如果(presa_R2=='0'){
连载:println(“蓬巴巴库里色情”);
digitalWrite(stop_pompa_avans,高);
延误(5);
digitalWrite(pompa_avans,低位);
}
如果(presa_R2=='1'){
连载:println(“蓬巴巴库里色情”);
数字写入(stop_pompa_bacuri,低位);
延误(5);
digitalWrite(pompa_bacuri,高中);
}
/////////////#控制释放压力#/////////////
/////////////#控制释放压力#/////////////
//皮斯托阿内尔酒店
如果(bacuri_R1=='0'){
连载:println(“蓬巴巴库里色情”);
数字写入(stop_pompa_bacuri,高);
延误(5);
digitalWrite(pompa_bacuri,低位);
}
如果(bacuri_R1=='1'){
连载:println(“蓬巴巴库里色情”);
数字写入(stop_pompa_bacuri,低位);
延误(5);
digitalWrite(pompa_bacuri,高中);
}
如果(bacuri_R2=='0'){
连载:println(“蓬巴巴库里色情”);
数字写入(stop_pompa_bacuri,高);
延误(5);
digitalWrite(pompa_bacuri,低位);
}
如果(bacuri_R2=='1'){
连载:println(“蓬巴巴库里色情”);
数字写入(stop_pompa_bacuri,低位);
延误(5);
digitalWrite(pompa_bacuri,高中);
}
/////////////#控制释放压力#/////////////
/////////////#控制释放压力#/////////////
//皮斯托阿内尔酒店
如果(unghi_R1=='0'){
连载:println(“蓬巴巴库里色情”);
数字写入(停止pompa_unghi,高);
延误(5);
digitalWrite(pompa_unghi,低位);
}
如果(unghi_R1=='1'){
连载:println(“蓬巴巴库里色情”);
数字写入(stop_pompa_unghi,低位);
延误(5);
digitalWrite(pompa_unghi,高中);
}
如果(unghi_R2=='0'){
连载:println(“蓬巴巴库里色情”);
数字写入(停止pompa_unghi,高);
延误(5);
digitalWrite(pompa_unghi,低位);
}
如果(unghi_R2=='1'){
连载:println(“蓬巴巴库里色情”);
数字写入(stop_pompa_unghi,低位);
延误(5);
digitalWrite(pompa_unghi,高中);
}
/////////////#控制释放压力#/////////////
如果(viteza=='a'){
对于(int i=0;i


String sync=Serial.readString();
谢谢您的回答。我运行了代码,但它告诉我sync未在此范围内声明。如果我运行If函数中的所有代码,以便同步运行没有问题,则void one()和void two()在设置函数上方声明字符串Sync;,然后在If Serial.Available()条件下使用Sync=Serial.ReadString();
char datafromUser=0;
int VCC_Control = 2;

int pompa_bacuri = 30;
int stop_pompa_bacuri = 31;

int pompa_avans = 32;
int stop_pompa_avans = 33;

int pompa_unghi = 32;
int stop_pompa_unghi = 33;

void setup() {
  // put your setup code here, to run once,
  pinMode( VCC_Control , OUTPUT );
  Serial.begin(115200);

  pinMode(pompa_bacuri, OUTPUT);
  pinMode(stop_pompa_bacuri, OUTPUT);
  pinMode(pompa_avans, OUTPUT);
  pinMode(stop_pompa_avans, OUTPUT);
  pinMode(pompa_unghi, OUTPUT);
  pinMode(stop_pompa_unghi, OUTPUT);

  digitalWrite(pompa_bacuri, HIGH);
  digitalWrite(pompa_avans, HIGH);
  digitalWrite(stop_pompa_bacuri, HIGH);
  digitalWrite(stop_pompa_avans, HIGH);
  pinMode(pompa_unghi, HIGH);
  pinMode(stop_pompa_unghi, HIGH);
}

void loop() {
  
  
  
  if(Serial.available() > 0)
  {
    datafromUser=Serial.read();
    Serial.println((char) datafromUser);

  }

    String sync = Serial.readString();

    while (Serial.available())
    {
        sync += Serial.read();
    }
    
    // Print debug
        
    // Split
    char  cut = sync.substring(0, 1)[0];   
    char  presa_R1= sync.substring(1, 2)[0];    
    char  presa_R2 = sync.substring(2, 3)[0];    
    char  bacuri_R1 = sync.substring(3, 4)[0];    
    char  bacuri_R2 = sync.substring(4, 5)[0];       
    char  unghi_R1 = sync.substring(5, 6)[0];
    char  unghi_R2 = sync.substring(6, 7)[0];
    char  viteza = sync.substring(7)[0];
    
    // Print debug
    Serial.print("Presa_releu_avans: ");
    Serial.println(presa_R1);
    Serial.print("Presa_releu_retragere: ");
    Serial.println(presa_R2);
    Serial.print("Bacuri_releu_avans: ");
    Serial.println(bacuri_R1);
    Serial.print("Bacuri_releu_retragere: ");
    Serial.println(bacuri_R2);
    Serial.print("Bacuri_releu_avans: ");
    Serial.println(unghi_R1);
    Serial.print("Bacuri_releu_retragere: ");
    Serial.println(unghi_R2);
    Serial.print("Viteza_de_avans_presa: ");
    Serial.println(viteza);
 
/////////////# CONTROL RELEE PRESA #/////////////

  //de vazut live cum se duc pistoanele 
  
  if(presa_R1 == '0') {
      Serial.println("POMPA BACURI PORNITA");
      digitalWrite(stop_pompa_avans, HIGH);
      delay(5);
      digitalWrite(pompa_avans, LOW);
    }

   if(presa_R1 == '1') {
      Serial.println("POMPA BACURI PORNITA");
      digitalWrite(stop_pompa_bacuri, LOW);
      delay(5);
      digitalWrite(pompa_bacuri, HIGH);
    }


  if(presa_R2 == '0') {
      Serial.println("POMPA BACURI PORNITA");
      digitalWrite(stop_pompa_avans, HIGH);
      delay(5);
      digitalWrite(pompa_avans, LOW);
    }

   if(presa_R2 == '1') {
      Serial.println("POMPA BACURI PORNITA");
      digitalWrite(stop_pompa_bacuri, LOW);
      delay(5);
      digitalWrite(pompa_bacuri, HIGH);
    }

/////////////# CONTROL RELEE PRESA #/////////////


/////////////# CONTROL RELEE PRESA #/////////////

  //de vazut live cum se duc pistoanele 
  
  if(bacuri_R1 == '0') {
      Serial.println("POMPA BACURI PORNITA");
      digitalWrite(stop_pompa_bacuri, HIGH);
      delay(5);
      digitalWrite(pompa_bacuri, LOW);
    }

   if(bacuri_R1 == '1') {
      Serial.println("POMPA BACURI PORNITA");
      digitalWrite(stop_pompa_bacuri, LOW);
      delay(5);
      digitalWrite(pompa_bacuri, HIGH);
    }


  if(bacuri_R2 == '0') {
      Serial.println("POMPA BACURI PORNITA");
      digitalWrite(stop_pompa_bacuri, HIGH);
      delay(5);
      digitalWrite(pompa_bacuri, LOW);
    }

   if(bacuri_R2 == '1') {
      Serial.println("POMPA BACURI PORNITA");
      digitalWrite(stop_pompa_bacuri, LOW);
      delay(5);
      digitalWrite(pompa_bacuri, HIGH);
    }

/////////////# CONTROL RELEE PRESA #/////////////



/////////////# CONTROL RELEE PRESA #/////////////

  //de vazut live cum se duc pistoanele 
  
  if(unghi_R1 == '0') {
      Serial.println("POMPA BACURI PORNITA");
      digitalWrite(stop_pompa_unghi, HIGH);
      delay(5);
      digitalWrite(pompa_unghi, LOW);
    }

   if(unghi_R1 == '1') {
      Serial.println("POMPA BACURI PORNITA");
      digitalWrite(stop_pompa_unghi, LOW);
      delay(5);
      digitalWrite(pompa_unghi, HIGH);
    }


  if(unghi_R2 == '0') {
      Serial.println("POMPA BACURI PORNITA");
      digitalWrite(stop_pompa_unghi, HIGH);
      delay(5);
      digitalWrite(pompa_unghi, LOW);
    }

   if(unghi_R2 == '1') {
      Serial.println("POMPA BACURI PORNITA");
      digitalWrite(stop_pompa_unghi, LOW);
      delay(5);
      digitalWrite(pompa_unghi, HIGH);
    }

/////////////# CONTROL RELEE PRESA #/////////////



  
          if(viteza == 'a'){
              for (int i = 0; i<200000; i++){
                one();
              }
          }
        
           if(viteza == 'b'){
              for (int i = 0; i<200000; i++){
                two();
              }
          }
  
}


void one() {
    digitalWrite(VCC_Control, HIGH);
    delay(200);
    digitalWrite(VCC_Control, LOW);
    delay(800);
    Serial.write((char) datafromUser);
}


void two() {
    digitalWrite(VCC_Control, HIGH);
    delay(800);
    digitalWrite(VCC_Control, LOW);
    delay(200);
    Serial.write((char) datafromUser);
}