Linux 虚拟串口及 Qt 串口通信实例
Linux 虚拟串口及 Qt 串口通信实例
2011-06-22 17:49 佚名 互联网 字号:T | T

Linux 虚拟串口及 Qt 串口通信实例是本文所要介绍的内容,在实现过程中,打开了两个伪终端,然后读两个口子的数据,如果是从1号口来的,就往2号口写入数据,从2号口来的就写到1号口。
AD:【线下活动】三大新锐HTML 5企业汇聚51CTO—大话移动前端技术
Linux下的虚拟终端
由于手上没有可以测试的串口设备,因此发了点时间找了一个Linux下的虚拟串口工具:http://fayaa.com/code/view/8500/ ,这个工具打开了两个伪终端,然后读两个口子的数据,如果是从1号口来的,就往2号口写入数据,从2号口来的就写到1号口。
经过我的修改后变成了这个样子:
- #! /usr/bin/env python
- #coding=utf-8
- import pty
- import os
- import select
- def mkpty():
- #
- 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, wl, el = select.select([master1,master2], [], [], 1)
- for master in rl:
- data = os.read(master, 128)
- if master==master1:
- print "read %d data:" % len(data)
- print data
- #os.write(master2, data)
- else:
- print "to write %d data:" % len(data)
- print data.strip()
- os.write(master1, data.strip())
改变后 我们让1号口为读入口(串口设备读入数据的口子),2号口为写出口(串口向外面写数据),将其保存为com.py
- #python com.py
- slave device names: /dev/pts/1 /dev/pts/2
意思是pts/1为1号口 pts/2为2号口
另建一个终端 #cd /dev/pts/
- #echo 456 > 2
就会向2号口写数据,如果我们没有其他程序读串口的数据的话,那么就会出现4行数:
- to write 5 data:
- 456
- read 3 data:
- 456
那么我们只要用程序读/dev/pts/1就可以模拟串口通信了
Qt下的串口通讯
Qt没有自带串口模块,只有第三方库 http://wenku.baidu.com/view/55849f4ffe4733687e21aa99.html,这篇文章介绍了简单的Qt串口通信
学着他的例子也做了一个程序,核心代码:
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- com = new QextSerialPort("/dev/pts/1", QextSerialPort::Polling);
- com->open(QextSerialPort::ReadWrite);
- com->setBaudRate(BAUD9600);
- com->setDataBits(DATA_8);
- com->setParity(PAR_NONE);
- com->setStopBits(STOP_1);
- com->setFlowControl(FLOW_OFF);
- com->setTimeout(10);
- QTimer *timer = new QTimer(this);
- connect(timer, SIGNAL(timeout()), this, SLOT(readCOM()));
- timer->start(20);
- }
- void MainWindow::readCOM()
- {
- if (com->bytesAvailable() > 1)
- ui->showText->insertPlainText(com->readAll());
- }
- void MainWindow::on_btnSend_clicked()
- {
- com->write(ui->edit->text().toAscii().data());
- }
运行结果:Qt向串口写数据
收到数据:

串口向Qt写数据(下面那个终端控制)

注意:1号口和2号口的方向问题很难分清楚,暂时这样理解了没必要深究 windows下的虚拟串口工具为VSPM,是Telnet管理的,建议先研究这个。
小结:Linux 虚拟串口及 Qt 串口通信实例的内容介绍完了,希望本文对你 有所帮助
Linux 虚拟串口及 Qt 串口通信实例的更多相关文章
- PIC18F45K80串口1和串口2异步收发通信实例
PIC18F45K80串口1和串口2异步收发通信实例 一:配置串口1初始化函数 首先打开技术手册,查看异步串口的操作流程以及配置. 需要将串口对应引脚的方向寄存器设置为输入
- qt tcp 通信实例
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QHostAddress> ...
- linux下的qt串口通信
1.linux下的qt串口通信跟windows唯一的差别就是端口号的名字,windows下面是COM,而linux是ttyUSB0的路径 2.一般情况下linux插上USB转串口线就可以在/dev/目 ...
- VM中linux和windows主机进行串口通信
最近在做关于AIS的内容.为了对AIS电文进行解码,串口收发. 数据有PC机模拟发送,为了调试方便,不用次次将程序放到开发板上运行,所以利用pc主机和虚拟机进行串口通信模拟该过程. 首先需要用到一个软 ...
- Qt串口通信
1. Qt串口通信类QSerialPort 在Qt5的的更新中,新增了串口通信的相关接口类QSerialPort,这使得在开发者在使用Qt进行UI开发时,可以更加简单有效地实现串口通信的相关功能. 开 ...
- linux虚拟串口及远程访问
1. 虚拟终端概念 linux中有很多终端,如下简单介绍下各种终端或串口的概念. 1.1 tty:终端设备的统称 tty是Teletype或TeletypeWriter的缩写,中文翻译为电传打字机.电 ...
- QT串口通信编程
QT串口编程 文件夹目录结构如下图所示 设计的示例界面如下图所示 首先在项目文件里面添加一句 QT += serialport SerialPortDemo.pro文件如下: #----------- ...
- Qt 串口通信之使用16进制发送数据的转换方式
Qt 串口通信之使用16进制发送数据的转换方式 一 概述 有时候在做上位机串口通讯时,经常需要将字符串转成16进制的形式作为发送,借此分析记录一下. 二 需求分析 //假设需要转换的字符:如下 QSt ...
- QT5入门之23 -QT串口编程(转)
QT5入门之23 -QT串口编程 QT5有专门的串口类: QSerialPort:提供访问串口的功能 QSerialPortInfo:提供系统中存在的串口的信息 具体使用方法: 1.在pro文件中 ...
随机推荐
- NetBpm 配置篇(2)
转载注明出处:http://www.cnblogs.com/anbylau2130/p/3877353.html 上一篇中介绍了Netbpm在IIS和CassiniWebServer服务器的安装 通过 ...
- mysql触发器的使用 想让b字段在更新的时候把旧数据保存到a字段中
使用mysql希望数据库自动触发一些规则,进行更新数据的时候,就需要用触发器了,比如 将旧数据保存到额外字段中,如何做呢? 在abc表中 name更新的时候 我希望把name的老数据保存到 old_n ...
- 【RF库Collections测试】Remove From List
Name:Remove From ListSource:Collections <test library>Arguments:[ list_ | index ]Removes and r ...
- Python中常见的字符串小笔试题
1.获取实现两个字符串中最大的公共子串 思路: 1.比较两个字符串的长度 2.获取较短字符串的所有子串 3.使用__contains__函数进行比较 4.把子串当做键,子串长度作为值,存入字典, ...
- Windows下mysql重设密码
Windows下的实际操作如下 .关闭正在运行的MySQL,即关闭服务. .打开DOS窗口,转到mysql\bin目录. .输入 mysqld --skip-grant-tables 回车.如果没有出 ...
- audio_policy.conf说明(翻译)
自己记着当笔记,水平有限,仅供参考 # # Audio policy configuration for generic device builds (goldfish audio HAL - emu ...
- Thinkphp 去除bom头 解决模版空输出问题
<?php if (isset($_GET['dir'])){ //config the basedir $basedir=$_GET['dir']; }else{ $basedir = '.' ...
- VC++进行窗口枚举
https://blog.csdn.net/u012372584/article/details/53735242 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
- #import同@class之间的区别
转自:http://blog.sina.com.cn/s/blog_a843a8850101b6a7.html 下面来说一下#import同class之间的区别 在ios中我们经常会在.h和.m中引入 ...
- Telnet IMAP Commands Note
http://busylog.net/telnet-imap-commands-note/ Telnet IMAP Commands Note https://www.cnblogs.com/qiu ...