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 目录( ...
随机推荐
- Python-requests取消SSL验证的警告InsecureRequestWarning解决办法
使用requests模块请求一个证书无效的网站的话会直接报错 可以设置verify参数为False解决这个问题 # -*- coding:utf-8 -*- __author__ = "Mu ...
- PHP7三元运算符 ?? 和 ?: 的区别
1. (expr1) ?? (expr2) 是 PHP7才有的功能,等同于: isset(expr1) ? expr1 : expr2 ; 2.(expr1) ?: (expr2) 是PHP5.3才 ...
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std 计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并处以其方差.得到的结果是,对于每个属 ...
- Shape和 layer-list
shape 基本使用 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android= ...
- [poj3250]单调栈 Bad Hair Day
解题关键:将每头牛看到的牛头数总和转化为每头牛被看到的次数,然后用单调栈求解,其实做这道题的目的只是熟悉下单调栈 此题为递减栈 #include<cstdio> #include<c ...
- #425[div2]
A 签到 #include<bits/stdc++.h> using namespace std; typedef long long ll; int main(){ ll n,k; ci ...
- socket消息发送
expressClient.html <html><head><meta http-equiv="Content-Type" content=&quo ...
- [原创]Devexpress XtraReports 系列索引
该系列已经完结...以后如果有高级功能,会再开一个新的系列,该系列是比较基础的报表应用..谢谢大家一直的支持. [原创]Devexpress XtraReports 系列 1 创建静态报表 Demo地 ...
- 【转】Subversion快速入门教程-动画演示
如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来,这里配 ...
- JavaScript 异常 Exceptions
JavaScript提供了一套异常处理机制. 异常是干扰程序的正常流程的不寻常(但并非完全是出乎意料的)的事故. 当发现这样的事故时,你的程序应该抛出一个异常. throw语句中断函数的执行. 它应该 ...