QT串口编程.pdf

上传人:索**** 文档编号:76243330 上传时间:2023-03-08 格式:PDF 页数:7 大小:9.49KB
返回 下载 相关 举报
QT串口编程.pdf_第1页
第1页 / 共7页
QT串口编程.pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《QT串口编程.pdf》由会员分享,可在线阅读,更多相关《QT串口编程.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、QT串口编程.txt都是一个山的狐狸,你跟我讲什么聊斋,站在离你最近的地方,眺望你对别人的微笑,即使心是百般的疼痛只为把你的一举一动尽收眼底刺眼的白色,让我明白什么是纯粹的伤害。QT串口编程serial.cpp#include#include#include mainwindow.h int main(int argc,char*argv)QApplication a(argc,argv);MainWindow m;a.setMainWidget(&m);m.show();return a.exec();mainwindow.h#ifndef MAIN_WINDOW_H#define MAIN

2、_WINDOW_H#include class QLabel;class QPushButton;class QLineEdit;class QPixmap;class SerialThread;class MainWindow:public QMainWindow Q_OBJECT public:MainWindow(QWidget*parent=0,const char*name=0);MainWindow();void setCounter(int no);void setMsgText(char*txt);public slots:void serialOperate();void l

3、oadJPEGFile();protected:void paintEvent(QPaintEvent*);private:QLineEdit*msg;QPushButton*btn;QPushButton*btn2LoadImg;QPixmap*pix;QLabel*lab;SerialThread*a;int counter;#endif mainwindow.cpp#include#include#include#include#include#include#include#include#include#include mainwindow.h#include serialthrea

4、d.h void MainWindow:paintEvent(QPaintEvent*)QPainter paint(this);paint.drawLine(0,0,500,500);/draw line paint.drawPixmap(0,0,*pix);void MainWindow:loadJPEGFile()if(!pix-load(testjpeg)/if(!pix-load(circle)setMsgText(Load failed);return;setMsgText(Load success!);update();void MainWindow:setCounter(int

5、 no)counter=no;void MainWindow:serialOperate()a=new SerialThread(this);a-start();a-wait();MainWindow:MainWindow(QWidget*parent,const char*name):QMainWindow(parent,name)counter=0;QVBox*vbox;vbox=new QVBox(this);vbox-resize(300,150);/msg=new QLabel(SERIAL PROGRAMMING,vbox);msg=new QLineEdit(SERIAL PRO

6、GRAMMING,vbox);msg-resize(300,50);pix=new QPixmap();btn=new QPushButton(vbox);btn-setText(GO!);QApplication:connect(btn,SIGNAL(clicked(),this,SLOT(serialOperate();btn2LoadImg=new QPushButton(vbox);btn2LoadImg-setText(LOAD);lab=new QLabel(before load jpeg,vbox);QApplication:connect(btn2LoadImg,SIGNAL

7、(clicked(),this,SLOT(loadJPEGFile();/btn-resize(100,75);/vbox-show();void MainWindow:setMsgText(char*txt)QString msgs(txt);QString count=QString:number(counter,10);msgs.append(count);const char*re=msgs.ascii();/strcat(msgs,);msg-setText(re);my_define.h#define BAUDRATE B115200#define BLOCK_SIZE 200#d

8、efine DEVICE /dev/ttyS0#define WAIT_TIME 5#define CHANGE_LINE 0 x0a#define ACK_NUM 3#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE-1#endif serialthread.h#ifndef SERIAL_THREAD_H#define SERIAL_THREAD_H#include class MainWindow;class SerialThread:public QThread public:SerialThread(MainWindo

9、w*parent);virtual void run();private:MainWindow*parent;#endif serialthread.cpp#include#include#include#include#include#include my_define.h#include serialthread.h#include mainwindow.h int set_nc_mode(int fd)struct termios options;if (tcgetattr(fd,&options)!=0)perror(SetupSerial 1);return(FALSE);/*get

10、 current port settings*/bzero(&options,sizeof(options);options.c_cflag|=BAUDRATE|CS8|CLOCAL|CREAD;options.c_cflag&=CRTSCTS;options.c_iflag=IGNPAR;options.c_oflag&=OPOST;/options.c_lflag=0;options.c_ccVTIME=WAIT_TIME;options.c_ccVMIN=BLOCK_SIZE;/*blocking read until 5 chars received*/tcflush(fd,TCIFL

11、USH);tcsetattr(fd,TCSANOW,&options);return(TRUE);int set_c_mode(int fd)struct termios options;if (tcgetattr(fd,&options)!=0)perror(SetupSerial 1);return(FALSE);bzero(&options,sizeof(options);tcflush(fd,TCIOFLUSH);cfsetispeed(&options,BAUDRATE);cfsetospeed(&options,BAUDRATE);options.c_cflag|=(CLOCAL|

12、CREAD);options.c_cflag&=CRTSCTS;options.c_cflag&=CSIZE;options.c_cflag|=CS8;options.c_cflag&=PARENB;/*Clear parity enable,clear control mode flag*/options.c_iflag&=INPCK;/*Disable parity checking,*/options.c_cflag&=CSTOPB;options.c_iflag|=IGNBRK;options.c_lflag|=ICANON;options.c_lflag&=(ECHO|ECHOE|I

13、SIG);options.c_oflag&=(OPOST);tcflush(fd,TCIOFLUSH);if(tcsetattr(fd,TCSANOW,&options)!=0)perror(SetupSerial 3);return(FALSE);return(TRUE);void send_ack(int fd)char buf=A,C,K,CHANGE_LINE;write(fd,buf,sizeof(buf);void resend(int fd)char buf=R,S,D,CHANGE_LINE;write(fd,buf,sizeof(buf);void delay(int i)i

14、nt j;for(;i0;i-)for(j=0;jparent=parent;void SerialThread:run()int fd,c,res;int block_num,last_block;int i;char bufBLOCK_SIZE;char file_name32;FILE*fp;struct termios oldtio;block_num=last_block=0;fd=open(DEVICE,O_RDWR|O_NOCTTY);parent-setCounter(fd);parent-setMsgText(opend device fd:);if(fd setMsgTex

15、t(open device failed);/exit(-1);tcgetattr(fd,&oldtio);set_nc_mode(fd);printf(Changed to nc moden);/*res=read(fd,(char*)file_name,32);parent-setCounter(res);parent-setMsgText(res is:);*/*if(res0)file_nameres-1=0;printf(Received the file name:%sn,file_name);else printf(The received file name is error.

16、n);fp=fopen(file_name,wb);if(fp=NULL)printf(Can not creat file%s!n,file_name);return;/exit(-1);else send_ack(fd);printf(The file%s is created.nWaitting for the block num and last block sizen,file_name);/set_nc_mode(fd);/printf(Changed to nc moden);res=read(fd,buf,4);printf(res=%dn,res);printf(Receiv

17、ed the block num n);for(i=0,block_num=0;i0)send_ack(fd);res=read(fd,buf,last_block);printf(res=%dn,res);if(res!=last_block)printf(Request resend the last blockn);tcflush(fd,TCIOFLUSH);resend(fd);else fwrite(buf,1,last_block,fp);send_ack(fd);printf(The file transports endn);fclose(fp);printf(close the filen);tcsetattr(fd,TCSANOW,&oldtio);close(fd);printf(close the serial portn);*/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 实施方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁