端口号:COM5
使用语言:Python
使用串口通信库:python的serial库
测试环境:Windows-Jeston nano
使用硬件:笔记本电脑windows系统、USB转ttl、Jeston nano(做数据接受)
这里配置思路和之前发的博文使用Jeston nano配置串口通信的思路一致,均调用python的serial库实现相应的功能,只是这里的端口号不像linux下ttyUSB这种形式,而是类似于COM5这种,这与第一步使用的驱动软件有关。
浏览器搜索ch340:
选择安装即可:
你可以直接用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 .