用python虚拟串口
在linux下调试串口程序,无奈下面的硬件还没到位,所以,想着自己模拟一个串口用用。试了下下面这段代码:
#!/usr/bin/env python
#coding=utf-8 import pty
import os
import select def mkpty():
#Open a new tty
master1, slave = pty.openpty()
slaveName1 = os.ttyname(slave)
master2, slave = pty.openpty()
slaveName2 = os.ttyname(slave) print '\nslave device names:', slaveName1, slaveName2
return master1, master2 if __name__ == "__main__": master1, master2 = mkpty()
while True:
# rl=read list, wait until ready to reading
# wl=write list, wait until ready to writing
# el=exception list, wait for an "exceptional condition"
# timeout = 1s
rl, wl, el = select.select([master1, master2], [], [], 1)
for device in rl:
data = os.read(device, 128)
print "read %d data."%len(data)
if device == master1:
os.write(master2, data)
else:
os.write(master1, data)
pty是假串口的意思,但是支持硬件串口的所有操作。so。。。
另外一个,模拟同事通过串口发来的数据。所有写到master的数据,都被自动的发往slave。所以,我们在slave这边就可以收到想要的数据。
#!/usr/bin/env python
#coding=utf-8 import pty
import os
import time
import array
import random def mkpty():
#make pair of pseudo tty
master, slave = pty.openpty()
slaveName = os.ttyname(slave) print '\nslave device names:', slaveName
return master if __name__ == "__main__":
master = mkpty()
buf = array.array('B', [0] * 7)
buf[0] = 0x00
buf[1] = 0x02
buf[2] = 0x8a
buf[3] = 0x2d
buf[4] = 0xc5
buf[5] = 0x3f
buf[6] = 0x00 while True:
if buf[1] < 40:
buf[1] = buf[1] + 1
else:
buf[1] = 1
buf[0] = buf[0] + 1 if buf[0] == 255:
buf[0] = 0 # buf[5] = random.randint(40,50)
buf[2] = random.randint(0,250)
buf[6] = ( buf[0]+buf[1]+buf[2]+buf[3]+buf[4]+buf[5]) %256
os.write(master, buf)
# print buf
time.sleep(0.02)
用python虚拟串口的更多相关文章
- Linux 虚拟串口及 Qt 串口通信实例
Linux 虚拟串口及 Qt 串口通信实例 2011-06-22 17:49 佚名 互联网 字号:T | T Linux 虚拟串口及 Qt 串口通信实例是本文所要介绍的内容,在实现过程中,打开了两个伪 ...
- Ubuntu 下使用虚拟串口进行开发测试
1. python 工具 #coding = utf-8 import pty import os import select def mkpty(): master1, slave = pty.op ...
- linux虚拟串口及远程访问
1. 虚拟终端概念 linux中有很多终端,如下简单介绍下各种终端或串口的概念. 1.1 tty:终端设备的统称 tty是Teletype或TeletypeWriter的缩写,中文翻译为电传打字机.电 ...
- python实现串口通讯小程序(GUI界面)
python实现串口通讯小程序(GUI界面) 使用python实现串口通讯需要使用python的pyserial库来实现,这个库在安装python的时候没有自动进行安装,需要自己进行安装. 1.安装p ...
- Windows驱动——虚拟机 虚拟串口 双机调试
=================================版权声明================================= 版权声明:原创文章 谢绝转载 请通过右侧公告中的“联系邮 ...
- Python虚拟开发环境
最近,一直在不同版本的Python之间来回折腾,发现了几个Python虚拟开发环境工具,具体如下: 1. Virtualenv,可以指定开发环境的Python版本.继承已有开发环境配置,virtual ...
- 上位机用USB做虚拟串口,总算抓到一个纯代码的总结了,没有坑的完美解决。
用libUSB来实现自己的驱动+下位机理论速度.=1M字节每秒. 达到极限速度 WINDOWS已经自带虚拟串口驱动,只不过还需要一个Inf文件 方法1:直接下载一个串口inf,来修改文件. 方 ...
- VSPM虚拟串口使用
(1)打开虚拟串口工具,当你设置好你程序中的串口信息后,打开程序中的串口,然后虚拟串口中所显示的就是程序的所提供的串口信息 (2)选中其中一个串口,修改管理信息,点击”重新连接“ , 直接在管理那里, ...
- STM32 USB虚拟串口(转)
源:STM32 USB虚拟串口 串口调试在项目中被使用越来越多,串口资源的紧缺也变的尤为突出.很多本本人群,更是深有体会,不准备一个USB转串口工具就没办法进行开发.本章节来简单概述STM32低端芯片 ...
随机推荐
- 柯里化/偏函数/Curring用法
把接受多个参数的函数变成一个单一参数的函数,并且返回接受余下的参数而有返回结果的新函数的技术 下面我们以实例说明: var toString = {}.toString; var isString = ...
- python2.1-原理之琐碎技巧
本系列依据<python学习手册第四版>而写,也算是个学习笔记吧,选择本书的原因在于它不同于第三版,它强调介绍python3.0 ,而会在不同的地方给出2.6版本的区别,:本书侧重介绍原理 ...
- 常用hadoop web
http://localhost:50070 Hadoop服务 http://localhost:8088/ 集群中的所有应用程序 http://localhost:16010 hbase
- 深入理解计算机系统(2.8)---浮点数的舍入,Java中的舍入例子以及浮点数运算(重要)
前言 上一章我们简单介绍了IEEE浮点标准,本次我们主要讲解一下浮点运算舍入的问题,以及简单的介绍浮点数的运算. 之前我们已经提到过,有很多小数是二进制浮点数无法准确表示的,因此就难免会遇到舍入的问题 ...
- sql server 事务处理
事物处理 事务是SQL Server中的单个逻辑单元,一个事务内的所有SQL语句作为一个整体执行,要么全部执行,要么都不执行. 事务有4个属性,称为ACID(原子性.一致性.隔离性和持久性) ...
- [转]mysql免安装版配置
现在mysql有一个installer,相当于安装包管理器.包含mysql的各个组件,比如workbench,各个语言的connector.十分方便,不用就可惜了.实在没有必要下载zip版,自己配置. ...
- ssh配置文件ssh_config和sshd_config区别
问题描述:在一次配置ssh端口和秘钥登录过程中,修改几次都没有成功.最后发现修改的是ssh.config,原因是习惯tab一下,实在是眼拙! ssh_config和sshd_config配置文件区别: ...
- php学习手记
在学习常量的时候,一直觉得奇怪 为啥常量的时候总是有个“.”在常量的后面,经过学习现在得知该点是 相当于Java当中的“+”用于连接字符 <?php header("Content-t ...
- linux基础学习2
http://www.chengzhier.com <a href="http://www.chengzhier.com">橙汁儿网</a> 1. date ...
- iOS不得姐项目--pop框架的初次使用
一.pop和Core Animation的区别 1.Core Animation的动画只能添加到layer上 2.pop的动画能添加到任何对象 3.pop的底层并非基于Core Animation,是 ...