python编写串口通信上位机_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串口通信

(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串口通信

(1)驱动下载

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xMTk2Mjg3LzIwMTkwNS8xMTk2Mjg3LTIwMTkwNTA2MjAzNzQxNzEzLTg0NTM2OTYzNi5wbmc=.jpg

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

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xMTk2Mjg3LzIwMTkwNS8xMTk2Mjg3LTIwMTkwNTA2MjA0MDUyNjk4LTQxMjA4NzUwMi5wbmc=.jpg

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xMTk2Mjg3LzIwMTkwNS8xMTk2Mjg3LTIwMTkwNTA2MjA0OTU2MDM3LTIxNDAyMDI2MDQucG5n.jpg

(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字符串之间的相互转换。

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xMTk2Mjg3LzIwMTkwNS8xMTk2Mjg3LTIwMTkwNTA2MjA1MTUyMzM4LTg3ODAwNTk5LnBuZw==.jpg

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xMTk2Mjg3LzIwMTkwNS8xMTk2Mjg3LTIwMTkwNTA2MjA1MjEyOTc3LTE1NTUxNTU5NzkucG5n.jpg

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xMTk2Mjg3LzIwMTkwNS8xMTk2Mjg3LTIwMTkwNTA2MjA1MjMwMDY2LTEyODI5NzYwNjIucG5n.jpg

Java实现RS485串口通信,发送和接收数据进行解析

最近项目有一个空气检测仪,需要得到空气检测仪的实时数据,保存到数据库当中.根据了解得到,硬件是通过rs485进行串口通讯的,需要发送16进制命令给仪器,然后通过轮询来得到数据. 需要先要下载RXTX的 ...

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 串口通信 GUI 开发

在项目中遇到树莓派串口通信问题.由于本人一直从事.net 开发,希望将树莓派系统换成Win10 IOT版.但是在测试过程中出现无法找到串口的问题.最终也没有解决.最终按照领导要求,linux (了解不 ...

基于Arduino和python的串口通信和上位机控制

引言 经常的时候我们要实现两个代码之间的通信,比如说两个不同不同人写的代码要对接,例如将python指令控制Arduino控件的开关,此处使用串口通信是非常方便的,下面笔者将结合自己踩过的坑来讲述下自 ...

随机推荐

IE 浏览器各个版本 JavaScript 支持情况一览表

语言元素 语言元素 突发.IE6 标准.IE7 标准 IE8 标准 IE 9 标准 IE 10 标准 边缘 Windows 应用商店应用程序 __proto__ 属性 (Object) (JavaSc ...

MySQL MMM 双主在Failover时挂起

两台MySQL服务器,版本Percona 5.5.35,配置双主,装在Centos 6.4下 Master1  db1,172.21.120.160(真实IP),172.21.120.173(Writ ...

ASP.NET 导出Excel文档

System.IO.TextWriter writer = new System.IO.StreamWriter(Server.MapPath("/provprice.xls"), ...

新浪sae 项目之 git 配置

新浪sae 项目现在支持git 配置了,但是有好多人配置不成功.下面对这个问题进行一个总结. 1. 在新浪云上面新建项目(该步骤省略) 2. 一般新建完毕后,会让你选择代码的管理工具,如下 注意这里, ...

sql server 常见问题

自动生成的值 @@identity 存储过程参数应指定参数长度,且不大于数据库长度,自定义方法里如果有参数,也应指定长度,否则会报错,提取数据长度被断 connectionString 可以指定app ...

分布式服务框架 dubbo/dubbox 入门示例(转)

dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架. 官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm ...

C程序编程规范一

和身边一些学弟们接触发现他们的编程习惯不是太好,对一些基本的规范不重视,今天有时间写一些基本的规范给一些刚入门的新手们,高手可忽略. 首先做项目来说需要建立工程,一般需要几个到几百个上上千个C文件,这 ...

OneZero第三周第二次站立会议(2016.4.5)

1. 时间: 13:00--13:15  共计15分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值