在 Python 中,我编写了一个脚本来读取游戏的指针,它通过 python 控制台读取和输出数据。现在我正在尝试将该数据发送到 Arduino 并移动类似于速度计的伺服电机。
我遇到的问题是伺服电机在从 python 接收数据时没有正确移动。有时卡住,有时没有反应。有点奇怪,因为我试图手动将伺服电机从 python 移动到 arduino 并且它响应,但延迟 0.5 秒,即使我尝试使用 LED,它也会立即响应。
这是Arduino的代码
#include <Servo.h>
int angulo = 0;
Servo miServo;
void setup() {
miServo.attach(3);
Serial.begin(9600);
}
void loop() {
if(Serial.available() > 0)
{
angulo=Serial.parseInt();
angulo=constrain(angulo,0,180);
}
miServo.write(angulo);
}
这是我从 python 执行的代码
# memreading it's from a module that i've created
import memreading, serial
# PLANTILLA
###################################################
proceso = 'or2006c2c.exe'
velocidad = 0x07806A4
# CODIGO COMUNICACION SERIAL
###################################################
ser = serial.Serial('COM3', 9600)
# CODIGO LECTURA DE MEMORIA
###################################################
mem = memreading.MemReading()
processHandle = mem.openProcess(mem.attachToProcess(proceso))
def lecturaMemoria():
data = mem.readMemory(processHandle, velocidad)
data = int(float(data)/1.59)
return str(data)
while True:
try:
ser.open()
dato = lecturaMemoria()
print dato
ser.write(dato)
except KeyboardInterrupt:
ser.close()
break
这是在内存中读取的代码https://gist.github.com/PPastene/f955a80abc55964733accc9d9133b488
我不会解释该代码,但数据会从 mem.readMemory() 函数以字符串形式返回。它被解析为整数,因为它需要计算然后再次解析为字符串(我不能将整数值放入循环中,python 给出错误,因为整数对象不可迭代)