在序列号上指挥arduino只在尾随时有效

2024-06-01 08:13:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下arduino代码:

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

char rfSetting[6]  = "01111";

String command;
void setup() {
  Serial.begin(9600);
  // Transmitter is connected to Arduino Pin #10  
  mySwitch.enableTransmit(10);
}

void loop() {
  if (Serial.available() > 0) {
    // get incoming byte:
    command = Serial.readString();
    command.trim();
    if( command.length() == 2 && 
        command[0] > 64 && command[0] < 69 &&
       (command[1] == '0' | command[1] == '1')){
          char rfCommand[6] = "00000";
          rfCommand[command[0]-65] = '1';
          Serial.println(rfCommand);
          if(command[1] == '0') {
            mySwitch.switchOff(rfSetting, rfCommand);
          } else {
            mySwitch.switchOn(rfSetting, rfCommand);
          }
          delay(1000);
    } else {
      Serial.println("Invalid Input");
    }
  }
}

为了命令arduino,我使用以下python脚本:

import serial
import sys
import time

ser = serial.Serial("/dev/ttyACM0",9600)
time.sleep(2)
ser.write(sys.argv[1])
ser.close()

现在,当我使用以下命令执行python脚本时:

python test.py A0

什么都没发生。如果我运行这个

tail -f /dev/ttyACM0

同时,它也起作用

我正试图在不跟踪港口的情况下向arduino号发送命令。 我做错什么了

主持人:拉斯平

PS:我已经试着用这个来解决了:

stty -F /dev/ttyACM0 9600 cs8 cread clocal

但这没用


Tags: devimport命令ifserialcommandarduinoser
1条回答
网友
1楼 · 发布于 2024-06-01 08:13:18

使用

import serial
import sys
import time

ser = serial.Serial("/dev/ttyACM0",9600)
time.sleep(2)
ser.write(sys.argv[1]) 
ser.flush()   # THIS here should put the data through, 
              # might block until your os decides to put the data through 
ser.close() 

你也可以把这个答案https://stackoverflow.com/a/40438103/7505395的提示变成联合关系

相关问题 更多 >