Python编程实现USB转RS485串口通信
---作者疆,未经允许,严禁转载,违权必究---
---欢迎指正,需要源码和文件可站内私信联系---
-----------点击此处链接至博客园原文-----------
功能说明:Python编程实现USB转RS485串口通信(发送数据、接收数据均为16进制格式)
运行环境:Windows7&Python3.7与Ubuntu14.04&Python2.7,宇泰UT-890A USB转RS-485/422串口连接线
文件下载:源码点击下载 vsl7
一、Windows7&Python3.7下Python编程实现USB转RS485串口通信
参考链接:USB转串口连接线与串口调试助手的使用、用Python采集RS485温湿度传感器信息
(1)驱动下载
解压驱动压缩包,选取..\390-11000880 V01\Driver\win xp server2003 2008 2012 Vista 7 8 8.1 10 32-64bit\中Autoinstaller_WHQL_CDM2.12.24_Win 2K, XP, Vista, 7, 8, 8.1, 10, 32_64bit.exe傻瓜式安装,可见USB转串口连接线与串口调试助手的使用。
(2)环境搭建
安装serial库,cmd中执行命令 pip3 install pyserial
(3)源码实现
# -*- coding:utf-8 -*-
# Author: WUJiang
# 运行环境为Windows7&Python3.7 import serial
import time ser = serial.Serial("com3", 9600) # 选择串口,并设置波特率
if ser.is_open:
print("port open success")
# hex(16进制)转换为bytes(2进制),应注意Python3.7与Python2.7此处转换的不同
send_data = bytes.fromhex('ff 01 00 55 00 00 56') # 发送数据转换为b'\xff\x01\x00U\x00\x00V'
ser.write(send_data) # 发送命令
time.sleep(0.1) # 延时,否则len_return_data将返回0,此处易忽视!!!
len_return_data = ser.inWaiting() # 获取缓冲数据(接收数据)长度
if len_return_data:
return_data = ser.read(len_return_data) # 读取缓冲数据
# bytes(2进制)转换为hex(16进制),应注意Python3.7与Python2.7此处转换的不同,并转为字符串后截取所需数据字段,再转为10进制
str_return_data = str(return_data.hex())
feedback_data = int(str_return_data[-6:-2], 16)
print(feedback_data)
else:
print("port open failed")
二、Ubuntu14.04&Python2.7下Python编程实现USB转RS485串口通信
参考链接:‘serial’ object has no attribute 'is_open'报错解决方法、
(1)驱动下载

按linux对应驱动安装包中readme说明直接make报错,解决不了寻求宇泰科技官方技术支持,建议我更新系统内核(我拒绝!),后来提供了一个说明文件(FTDI.txt),经验证本机ubuntu14.04的4.4.0内核集成了该USB驱动,免去了安装麻烦。


(2)环境搭建
ubuntu14.04中预装了python-serial,其版本为2.6,需要卸载重新安装高版本的pyserial,否则会有相关接口错误,如‘serial’ object has no attribute 'is_open',执行以下命令,卸载原有python-serial,pip安装pyserial。
sudo apt-get remove python-serial
sudo apt-get install python-pip
sudo pip install pyserial
(3)源码实现
# -*- coding:utf-8 -*-
# Author: WUJiang
# 运行环境为Ubuntu14.04&Python2.7 import serial
import time ser = serial.Serial("/dev/ttyUSB0", 9600) # 选择串口,并设置波特率
if ser.is_open:
print("port open success")
# hex(16进制)转换为bytes(2进制),应注意Python2.7与Python3.7此处转换的不同
send_data = 'ff010055000056'
send_data = send_data.decode('hex') # 发送数据转换为b'\xff\x01\x00U\x00\x00V'
ser.write(send_data) # 发送命令
time.sleep(0.1) # 延时,否则len_return_data将返回0,此处易忽视!!!
len_return_data = ser.inWaiting() # 获取缓冲数据(接收数据)长度
if len_return_data:
return_data = ser.read(len_return_data) # 读取缓冲数据
# bytes(2进制)转换为hex(16进制),应注意Python2.7与Python3.7此处转换的不同,并转为字符串后截取所需数据字段,再转为10进制
str_return_data = str(return_data.encode('hex'))
feedback_data = int(str_return_data[-6:-2], 16)
print(feedback_data)
else:
print("port open failed")
注意:Python2、Python3中bytes(2进制)与hex(16进制)相互转换有区别,以下摘自Python-bytes和hex字符串之间的相互转换。



Python编程实现USB转RS485串口通信的更多相关文章
- Java实现RS485串口通信
前言 前段时间赶项目的过程中,遇到一个调用RS485串口通信的需求,赶完项目因为楼主处理私事,没来得及完成文章的更新,现在终于可以整理一下当时的demo,记录下来. 首先说一下大概需求:这个项目是机器 ...
- Java实现RS485串口通信,发送和接收数据进行解析
最近项目有一个空气检测仪,需要得到空气检测仪的实时数据,保存到数据库当中.根据了解得到,硬件是通过rs485进行串口通讯的,需要发送16进制命令给仪器,然后通过轮询来得到数据. 需要先要下载RXTX的 ...
- C#串口通信SeriPort 电表DLT645 RS234/RS485
难受,三个多月前有一个电表电量监控的项目.做完了就没再管了.今天有需求需要改一些地方,但是....我想不起来干了啥,怎么干的啦.真的完全忘了.....项目名称叫啥都忘了.找了半天 不知道有没有和我一样 ...
- Python的扩展接口[1] -> 串口通信
串口通信 / Serial Communication 1 串口简介 / Serial Introduction 串行接口(Serial Interface)简称串口,通常为COM接口,数据发送方式为 ...
- 树莓派和STM32通过USB和串口通信记录
不管怎样,为了简便开发,通信选择串口通信. 推荐文章:https://blog.csdn.net/magnetoooo/article/details/53564797 推荐测试工具:https:// ...
- win10上使用php与python实现与arduino串口通信
注意: php 需要php7,安装及开启php_dio.dll com口按照实际的进行设置,如果不知道可以打开arduino编辑器进行查看 可以与用户实现命令行交互,但是效率过慢,不清楚如何优化,使用 ...
- [python] 3 、基于串口通信的嵌入式设备上位机自动测试程序框架(简陋框架)
星期一, 20. 八月 2018 01:53上午 - beautifulzzzz 1.前言 做类似zigbee.ble mesh...无线网络节点性能测试的时候,手动操作然后看表象往往很难找出真正的原 ...
- Python的串口通信(pyserial)
串口通信是指外设和计算机间,通过数据信号线 .地线.控制线等,按位进行传输数据的一种通讯方式.这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低.串口是计算机上一种非 ...
- Raspberry pi 使用python+pySerial实现串口通信(转)
Raspberry pi 使用python+pySerial实现串口通信 转:http://blog.csdn.net/homeway999/article/details/8642353 目录( ...
随机推荐
- C语言学习笔记--const 和 volatile关键字
1.const关键字 (1)const 修饰的变量是只读的,它不是真正的常量,本质还是变量,只是告诉编译器不能出现在赋值号左边! (2)const 修饰的局部变量在栈上分配空间 (3)const 修饰 ...
- 【转】GitHub使用
1.设置Git全局用户配置 git config --global user.name "xxx" git config --global user.email xxx@gmail ...
- viewstate的基本用法
转自:http://www.cnblogs.com/ooip/p/4743536.html 在web窗体将控件属性设置为runat=server时,这个控件会被添加一个隐藏属性_ViewState,_ ...
- Frequent Pattern 挖掘之二(FP Growth算法)
Frequent Pattern 挖掘之二(FP Growth算法) FP树构造 FP Growth算法利用了巧妙的数据结构,大大降低了Aproir挖掘算法的代价,他不需要不断得生成候选项目队列和不断 ...
- 《精通Spring4.X企业应用开发实战》读后感第六章(容器事件)
- storm操作zookeeper源码分析-cluster.clj
storm操作zookeeper的主要函数都定义在命名空间backtype.storm.cluster中(即cluster.clj文件中).backtype.storm.cluster定义了两个重要p ...
- vivado中如何调用chipscope或者impact
vivado中并没有集成chipscope和impact,所以需要安装ISE,安装完ISE后进行以下操作: 1) 选择环境变量中的系统变量,新建以下变量 XILINX ...
- 洛谷P3193 [HNOI2008]GT考试(KMP,矩阵)
传送门 大佬讲的真吼->这里 首先考虑dp,设$f[i][j]$表示长串匹配到第$i$位,短串最多匹配到$j$位时的方案数 那么答案就是$\sum_{i=0}^{m-1}f[n][i]$ 然后考 ...
- 使用mount命令挂载CDROM
Linux显示所有的目录都在一个目录树下,而于他们位于哪一个驱动器/硬件无关.在Linux下的磁盘内容作为子目录形式出现的.可移动介质的内容不会自动出现在这些自目录的,我们必须通过挂载驱动器来实现. ...
- CPU使用情况检测
改编自:https://blog.csdn.net/Yan_Chou/article/details/80456995 检测命令整理: dd iotop df top psiostatvmstatne ...