使用下面的代码,我试图通过pyserial将步进器[[axis移steps个步骤:
Python代码:
import serial
usbport = 'COM7'
arduinoData = serial.Serial(usbport, 9600, timeout=1)
def move(axis, steps):
data = str(axis) + str(steps)
arduinoData.write(str(data).encode())
Arduino代码:
#include "AccelStepper.h"
//pins
#define X_STEP_PIN 54
#define X_DIR_PIN 55
#define X_ENABLE_PIN 38
String serialData;
AccelStepper stepperX(1, X_STEP_PIN, X_DIR_PIN); // 1 = Driver
int speed_x = 4000;
int axis;
int steps;
void setup() {
//setup stepperX
stepperX.setMaxSpeed(4000);
stepperX.setSpeed(speed_x);
stepperX.setEnablePin(X_ENABLE_PIN);
stepperX.setPinsInverted(false, false, true); //invert logic of enable pin
stepperX.enableOutputs();
Serial.begin(9600);
}
void loop() {
if( Serial.available() > 0) {
serialData = Serial.read();
axis = atoi(serialData[0]);
//steps = serialData.toInt();// - axis * pow(10, strlen(serialData)-1);
steps = atoi(serialData[1, serialData.length()]); //.toInt();
}
if (axis == 1) {
stepperX.moveTo(2000);
stepperX.runSpeedToPosition();
stepperX.setSpeed(speed_x);
}
}
不幸的是,当我将char作为serialData发送时,arduino会收到它并按预期工作,但是当我发送String时,什么也没发生。代码有什么问题?非常感谢!