微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python与串口设备通信

如何解决Python与串口设备通信

设备对外通讯是通过异步串口(TTL电平),N,8,1,115200b/s,无需校验。

一般命令帧有19个字节,包括帧头、地址、命令长度、命令字、数据交换段、帧号和校验。 (如表1所示)

例如选择我们遵循表#2的设备模式:

Table#1 and #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 条件,因为您是编程新手。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。