Windows下使用Python实现串口通信

基本信息

端口号:COM5

使用语言:Python

使用串口通信库:python的serial库

测试环境:Windows-Jeston nano

使用硬件:笔记本电脑windows系统、USB转ttl、Jeston nano(做数据接受)

配置过程

配置思路

这里配置思路和之前发的博文使用Jeston nano配置串口通信的思路一致,均调用python的serial库实现相应的功能,只是这里的端口号不像linux下ttyUSB这种形式,而是类似于COM5这种,这与第一步使用的驱动软件有关。


详细配置过程

安装USB装TTL驱动

浏览器搜索ch340:

在这里插入图片描述

选择安装即可:

在这里插入图片描述

配置serial库

你可以直接用pip下载serial库

pip install pyserial

但是可能因为你换源的关系找不到这个库,当然你也可以直接从github下载:

github地址:https://github.com/pyserial/pyserial

配置过程:直接下载上述链接 zip 文件,将其中serial文件夹复制到您 使用的python工程目录下的 Lib/site-packages下即可

在这里插入图片描述

我这里是在anaconda环境下;

当然你也可以直接在pycharm编辑器上下载(如果能搜得到的话);

测试:import serial 无报错即可。

获取设备端口号

COM5 为例

这里可以在设备管理器中直接查看ch340的端口号:右击 此电脑-属性-设备管理器-端口

在这里插入图片描述

也可以使用代码查看:

在这里插入图片描述

代码如下:

import serial
import serial.tools.list_ports

plist = list(serial.tools.list_ports.comports())

if len(plist) <= 0:
    print("The Serial port can't find!")
else:
    plist_0 = list(plist[0])
    serialName = plist_0[0]
    serialFd = serial.Serial(serialName, 9600, timeout=60)
    print("check which port was really used >", serialFd.name)

配置串口通信

配置说明

说明

因为手里没有两个USB转ttl,不能做到在windows下同时发送和接受数据,所以借助手边的jeston nano来完成数据传输测试;对于你,如果有两个USB转ttl,你可以开一个串口调试软件测试;当然,你可以用单片机通信,如51、32、arduino;

测试平台

​ Windows-pycharm-python-serial

​ Jeston nano-CuteCom

(CuteCom为一linux下的串口调试sudo apt-get install cutecom软件,你可以通过:sudo apt-get install cutecom 安装,通过:sudo CuteCom 使用)

测试效果:代码实现双方发送接受数据,并将数据打印出来;这里因为我还不会用python实现多线程,所以只能用两个代码分别实现发送和接受。

测试过程

测试效果:

​ windows端:

在这里插入图片描述

​ Jeston nano端:

​ 配置;这里可以直接看见Jeston nano3个串口

在这里插入图片描述

发送接收:

在这里插入图片描述

windows端代码:

import time
import serial

print("UART Demonstration Program")
print("NVIDIA Jetson Nano Developer Kit")


serial_port = serial.Serial(
    port="COM5",                #记得替换此处端口号
    baudrate=115200,
    bytesize=serial.EIGHTBITS,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
)
# Wait a second to let the port initialize
time.sleep(1)

try:
    # Send a simple header
    serial_port.write("UART Demonstration Program\r\n".encode())
    serial_port.write("NVIDIA Jetson Nano Developer Kit\r\n".encode())
    while True:
        if serial_port.inWaiting() > 0:
            data = serial_port.read()
            print(data)
            serial_port.write(data)
            # if we get a carriage return, add a line feed too
            # \r is a carriage return; \n is a line feed
            # This is to help the tty program on the other end
            # Windows is \r\n for carriage return, line feed
            # Macintosh and Linux use \n
            if data == "\r".encode():
                # For Windows boxen on the other end
                serial_port.write("\n".encode())


except KeyboardInterrupt:
    print("Exiting Program")

except Exception as exception_error:
    print("Error occurred. Exiting Program")
    print("Error: " + str(exception_error))

finally:
    serial_port.close()
    pass

后续有时间可以试试python多线程或者windows下使用C++调用相应的库实现串口通信…

其他学习记录

python部分:

​ python环境的包都在Lib/site-packages下;

​ Communication.Print_Used_Com() :Communication类调用Print_Used_Com()函数;

​ Python有3种方法,静态方法(staticmethod),类方法(classmethod)和实例方法 代码:global Ret ,声明rect为全局变量

global Ret 声明rect为全局变量(在类中)

关于通信:

​ 如果要同时收发数据,要使用python多线程实现;

​ 可以直接用printf方法发送数据

​ serial.Serial(serialName, 9600, timeout=60) 这里赋值为 5、‘com5’、“com5”、‘COM5’、“COM5”都可以 不区分大小写

serial.printf("%c", a);

这里找一种电脑和Jeston nano传输文件的方式,要求:不使用外网、互联网连接。

参考资料

1、pyserial官方github仓库:https://github.com/pyserial/pyserial.

2、这篇博客稍微总结了一下serial库的常用参数: https://www.cnblogs.com/-wenli/p/11261109.html .

3、https://www.cnblogs.com/dongxiaodong/p/9992083.html .

  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要使用Python实现串口通信服务,需要使用PySerial库。以下是实现串口通信服务的基本步骤: 1. 安装PySerial库。可以使用pip命令进行安装:`pip install pyserial` 2. 导入PySerial库:`import serial` 3. 创建Serial对象并打开串口: ```python ser = serial.Serial() ser.port = 'COM1' # 指定串口号 ser.baudrate = 9600 # 设置波特率 ser.bytesize = serial.EIGHTBITS # 设置数据位数 ser.stopbits = serial.STOPBITS_ONE # 设置停止位数 ser.parity = serial.PARITY_NONE # 设置奇偶校验位 ser.open() # 打开串口 ``` 4. 通过write方法向串口写入数据: ```python ser.write(b'hello') # 向串口写入hello字符串 ``` 5. 使用read方法从串口读取数据: ```python data = ser.read(10) # 从串口读取10个字节的数据 ``` 6. 关闭串口: ```python ser.close() # 关闭串口 ``` 上述步骤可以帮助您实现基本的串口通信服务。您可以根据实际需求对代码进行进一步的修改和完善。 ### 回答2: 要使用Python实现串口通信服务,可以使用Python的`pySerial`库。以下是一个简单的示例代码: ```python import serial # 设置串口参数 ser = serial.Serial('COM1', 9600) # 串口名称和波特率 # 发送数据 ser.write(b'Hello, World!') # 发送字节数据 # 读取数据 data = ser.readline() # 读取一行数据 print(data.decode()) # 打印收到的数据 # 关闭串口 ser.close() ``` 首先,引入`serial`模块并创建一个`Serial`对象,通过指定串口名称和波特率来设置串口参数。然后,可以使用`write()`方法向串口发送字节数据。使用`readline()`方法读取串口接收到的数据,并使用`decode()`方法将字节数据转换为字符串进行打印。最后,使用`close()`方法关闭串口。 以上是一个简单的实现串口通信服务的例子,可以根据需求进一步扩展和优化。 ### 回答3: Python提供了多种方式实现串口通信服务。其中,最常用的是使用第三方库pySerial。 首先,我们需要先安装pySerial库。可以使用pip命令进行安装: pip install pySerial 下面是一个简单的Python代码实现串口通信服务的例子: ``` import serial # 初始化串口 ser = serial.Serial('COM1', 115200, timeout=0.5) # 发送数据 ser.write(b'Hello World') # 接收数据 data = ser.read(10) print(data) # 关闭串口 ser.close() ``` 上述代码中,我们首先使用serial.Serial函数初始化一个串口对象ser,参数依次为串口号(如'COM1')、波特率(如115200)和超时时间(单位为秒)。 然后,我们可以使用ser.write函数向串口发送数据。在例子中,我们发送了一个字符串'Hello World'。 接下来使用ser.read函数读取串口的数据。参数指定了需要读取的字节数。在例子中,我们读取了10个字节的数据,并将其存储在变量data中。 最后,使用ser.close函数关闭串口。 当然,除了上述基本的发送和接收操作,pySerial还提供了更多的功能,如设置串口参数、读取特定数量的字节、非阻塞读写等。你可以根据实际需求,使用pySerial库的其他函数来完成更多复杂的串口通信任务。 需要注意的是,以上代码是在Windows系统上运行的,串口号为'COM1',波特率为115200。如果是在其他操作系统上使用串口,需要根据实际情况修改串口号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GRF-Sunomikp31

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值