QT串口编程.doc

上传人:asd****56 文档编号:70344066 上传时间:2023-01-19 格式:DOC 页数:7 大小:32KB
返回 下载 相关 举报
QT串口编程.doc_第1页
第1页 / 共7页
QT串口编程.doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述

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

1、QT串口编程.txt都是一个山的狐狸,你跟我讲什么聊斋,站在离你最近的地方,眺望你对别人的微笑,即使心是百般的疼痛只为把你的一举一动尽收眼底刺眼的白色,让我明白什么是纯粹的伤害。QT串口编程serial.cpp#include #include #include mainwindow.hint 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 #de

2、fine MAIN_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 slo

3、ts: void serialOperate(); void loadJPEGFile(); 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 #incl

4、ude #include #include #include mainwindow.h #include serialthread.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 f

5、ailed); return; setMsgText(Load success!); update(); void MainWindow:setCounter(int 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

6、 = new QVBox(this); vbox-resize(300,150); /msg = new QLabel(SERIAL PROGRAMMING,vbox); msg = new QLineEdit(SERIAL PROGRAMMING,vbox); msg-resize(300,50); pix = new QPixmap(); btn = new QPushButton(vbox); btn-setText(GO!); QApplication:connect(btn,SIGNAL(clicked(),this,SLOT(serialOperate(); btn2LoadImg

7、 = new QPushButton(vbox); btn2LoadImg-setText(LOAD); lab = new QLabel(before load jpeg,vbox); QApplication:connect(btn2LoadImg,SIGNAL(clicked(),this,SLOT(loadJPEGFile(); /btn-resize(100,75); /vbox-show(); ; void MainWindow:setMsgText(char* txt) QString msgs(txt); QString count = QString:number(count

8、er,10); msgs.append(count); const char *re = msgs.ascii (); /strcat(msgs,); msg-setText(re); ; my_define.h#define BAUDRATE B115200 #define BLOCK_SIZE 200 #define DEVICE /dev/ttyS0 #define WAIT_TIME 5 #define CHANGE_LINE 0x0a #define ACK_NUM 3 #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define

9、FALSE -1 #endif serialthread.h#ifndef SERIAL_THREAD_H #define SERIAL_THREAD_H #include class MainWindow; class SerialThread: public QThread public: SerialThread(MainWindow *parent); virtual void run(); private: MainWindow *parent; ; #endifserialthread.cpp#include #include #include #include #include

10、#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 current port settings */ bzero(&options, sizeof(options); options.c_cflag |= BAUDRATE | CS8 | CLOCAL | CR

11、EAD; 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, TCIFLUSH); tcsetattr(fd,TCSANOW,&options); return(TRUE); int set_c_mode(int

12、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|CREAD); options.c_cflag &= CRTSCTS; options.c_cfla

13、g &= 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 | ISIG); options

14、.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(

15、int i) int 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(

16、opend device fd:); if (fd setMsgText(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,fi

17、le_name); else printf(The received file name is error.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

18、 to nc moden); res=read(fd,buf,4); printf(res=%dn,res); printf(Received 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 淘文阁