问题描述
设备对外通讯是通过异步串口(TTL电平),N,8,1,115200b/s,无需校验。
一般命令帧有19个字节,包括帧头、地址、命令长度、命令字、数据交换段、帧号和校验。 (如表1所示)
例如选择我们遵循表#2的设备模式:
到目前为止我想出的代码是这样的:
import serial # use the serial module
import time # delay functions
ser = serial.Serial(“COM10”,115200,timeout=1) #Change the COM PORT NUMBER to match your device
if ser.isopen(): # make sure port is open
print(ser.name + ‘ open…’) # tell the user we are starting
#Servo Modes Control
Mode = int(input("Select Servo Mode:"))
# Mode = OFF
if mode = 1:
import array
tmp = array.array('B',[0x01,0x69,0x00]).tostring()
ser.write(tmp.encode())
ser.close()
# Mode Manual
elif mode = 2:
import array
tmp = array.array('B',0x01]).tostring()
ser.write(tmp.encode())
ser.close()
# Mode Lock Mode
elif mode = 3:
import array
tmp = array.array('B',0x02]).tostring()
ser.write(tmp.encode())
ser.close()
#Mode Azimuth Scan
elif mode = 4:
import array
tmp = array.array('B',0x1B]).tostring()
ser.write(tmp.encode())
ser.close()
# Zero Mode
elif mode = 3:
import array
tmp = array.array('B',0x09]).tostring()
ser.write(tmp.encode())
ser.close()
# Freeze Mode
elif mode = 4:
import array
tmp = array.array('B',0x0B]).tostring()
ser.write(tmp.encode())
ser.close()
注意:我是初学者,目前这段代码不起作用!请建议我应该怎么做!!!
谢谢!!
解决方法
究竟是什么不起作用?您有几行检查端口是否打开 - 这些行为是否符合预期?
关于 if 语句: 我注意到的第一件事是您在 if 语句中使用了赋值运算符“=”。您需要使用比较运算符“==”来检查变量是否等于 if 语句中的特定内容。
我怀疑这可能有助于您进行初步故障排除。尝试只检查一个 if 条件,因为您是编程新手。