已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 #define 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 slots: 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 #include #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 failed); 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 = 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 = 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(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 #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 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 #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 | 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, TCIFLUSH); 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|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 | ISIG); 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) 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(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,file_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 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_b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024房屋买卖全款购房合同范本模板
- 2024年度劳动合同员工岗位及工资待遇
- 2024公立医院与医疗设备供应商之间的采购合同
- 2024丙丁双方就服务器租赁及维护合同
- 2024年度医药产品研发与生产承包合同
- 2024年度船舶租赁合同
- 2024年度股权投资投资人与目标公司股权转让合同
- 2024年修订版:知识产权许可使用合同标的规范
- 2024年度KTV装修设计服务合同
- 赛船音乐课件教学课件
- 隧道围岩分级(表)
- 国家开放大学《液压与气压传动》形考任务1-2参考答案
- 食道超声在心脏外科手术中的应用课件
- 血流动力学不稳定骨盆骨折急诊处理
- 小学医学知识(课堂)课件
- 三年级下册科学活动手册
- 山西省安装预算定额说明及计算规则
- 咳嗽与咳痰的护理培训课件
- 脑梗死病人护理查房ppt
- 新外研版八年级下册英语 Module 6 Unit 1 教案(教学设计)
- 公共管理硕士(MPA)在读证明
评论
0/150
提交评论