Python和Arduino之间的通信,通过pyserial控制步进器

问题描述 投票:0回答:1

使用下面的代码,我试图通过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时,什么也没发生。代码有什么问题?

非常感谢!

python arduino pyserial
1个回答
0
投票
当您在不指定编码的情况下在字符串上调用encode()时,将获得UTF-8编码,该编码将不会与char相同。我相信,如果仅将'ascii'参数添加到您的encode()调用中,您将获得与使用chars相同的结果。
© www.soinside.com 2019 - 2024. All rights reserved.