Linux 虚拟串口及 Qt 串口通信实例是本文所要介绍的内容,在实现过程中,打开了两个伪终端,然后读两个口子的数据,如果是从1号口来的,就往2号口写入数据,从2号口来的就写到1号口。
Linux下的虚拟终端
由于手上没有可以测试的串口设备,因此发了点时间找了一个Linux下的虚拟串口工具:http://fayaa.com/code/view/8500/,这个工具打开了两个伪终端,然后读两个口子的数据,如果是从1号口来的,就往2号口写入数据,从2号口来的就写到1号口。
经过我的修改后变成了这个样子:
- #!/usr/bin/envpython
- #coding=utf-8
- importpty
- importos
- importselect
- defmkpty():
- #
- master1,slave=pty.openpty()
- slaveName1=os.ttyname(slave)
- master2,slave=pty.openpty()
- slaveName2=os.ttyname(slave)
- print'\nslavedevicenames:',slaveName1,slaveName2
- returnmaster1,master2
- if__name__=="__main__":
- master1,master2=mkpty()
- whileTrue:
- rl,wl,el=select.select([master1,master2],[],[],1)
- formasterinrl:
- data=os.read(master,128)
- ifmaster==master1:
- print"read%ddata:"%len(data)
- printdata
- #os.write(master2,data)
- else:
- print"towrite%ddata:"%len(data)
- printdata.strip()
- os.write(master1,data.strip())
改变后 我们让1号口为读入口(串口设备读入数据的口子),2号口为写出口(串口向外面写数据),将其保存为com.py
- #pythoncom.py
- slavedevicenames:/dev/pts/1/dev/pts/2
意思是pts/1为1号口 pts/2为2号口
另建一个终端 #cd /dev/pts/
- #echo456>2
就会向2号口写数据,如果我们没有其他程序读串口的数据的话,那么就会出现4行数:
- towrite5data:
- 456
- read3data:
- 456
那么我们只要用程序读/dev/pts/1就可以模拟串口通信了
Qt下的串口通讯
Qt没有自带串口模块,只有第三方库 http://wenku.baidu.com/view/55849f4ffe4733687e21aa99.html,这篇文章介绍了简单的Qt串口通信
学着他的例子也做了一个程序,核心代码:
- MainWindow::MainWindow(QWidget*parent):
- QMainWindow(parent),
- ui(newUi::MainWindow)
- {
- ui->setupUi(this);
- com=newQextSerialPort("/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=newQTimer(this);
- connect(timer,SIGNAL(timeout()),this,SLOT(readCOM()));
- timer->start(20);
- }
- voidMainWindow::readCOM()
- {
- if(com->bytesAvailable()>1)
- ui->showText->insertPlainText(com->readAll());
- }
- voidMainWindow::on_btnSend_clicked()
- {
- com->write(ui->edit->text().toAscii().data());
- }
运行结果:Qt向串口写数据
收到数据:
串口向Qt写数据(下面那个终端控制)
注意:1号口和2号口的方向问题很难分清楚,暂时这样理解了没必要深究 windows下的虚拟串口工具为VSPM,是Telnet管理的,建议先研究这个。
小结:Linux 虚拟串口及 Qt 串口通信实例的内容介绍完了,希望本文对你 有所帮助!
转载请说明出处
知优网 » Linux 虚拟串口及 Qt 串口通信实例(linux qt 串口编程)
知优网 » Linux 虚拟串口及 Qt 串口通信实例(linux qt 串口编程)