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 目录( ...
随机推荐
- 杂项-权限管理:Spring Secutity
ylbtech-杂项-权限管理:Spring Secutity Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在S ...
- IDEA常用快捷键整理
快速定位文件: Ctrl+E,最近的文件 Ctrl+Shift+E,最近更改的文件 Alt+Shift+C,最近打开的文件 Ctrl+N,快速打开类 Ctrl+Shift+N,快速打开文件 当 ...
- Java探索之旅(15)——包装类和字符类
1.包装类 ❶出于对性能的考虑,并不把基本数据类型作为对象使用,因为适用对象需要额外的系统花销.但是某些Java方法,需要对象作为参数,例如数组线性表ArrayList.add(Object).Jav ...
- ubuntu安装wget
ubuntu安装wget apt-get update apt-get install wget wget --version
- pig入门教程(2)
本文可以让刚接触pig的人对一些基础概念有个初步的了解. 本文的大量实例都是作者Darran Zhang(website: codelast.com)在工作.学习中总结的经验或解决的问题,并且添加了较 ...
- Entity Framework Code-First(9.9):DataAnnotations - ForeignKey Attribute
DataAnnotations - ForeignKey Attribute: ForeignKey attribute can be applied to properties of a class ...
- 23. Bypass ngx_lua_waf SQL注入防御(多姿势)
0x00 前言 ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+(f ...
- 谈谈asp.net中的<% %>,<%= %>,<%# %><%$ %>的使用-转
首先我们来看一下<% %>的使用 在aspx的页面中只能使用服务器控件和一般的控件,有些时候你想在该页面写入c#代码,必须使用<% %>,然后在里面写入c#的代码,下面我们来看 ...
- cinder介绍及使用lvm本地存储
1.cinder简介 Cinder提供持久的块存储,目前仅供给虚拟机挂载使用.它并没有实现对块设备的管理和实际服务,而是为后端不同的存储结构提供了统一的接口,不同的块设备服务厂商在 Cinder 中实 ...
- 用python实现杨辉三角
def yanghui(lines): currentlst,lastlst,n=[],[],1 if lines<1: return while n<=lines: lastlst=cu ...