




已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
QT串口編程.txt都是一個(gè)山的狐貍,你跟我講什么聊齋,站在離你最近的地方,眺望你對(duì)別人的微笑,即使心是百般的疼痛只為把你的一舉一動(dòng)盡收眼底刺眼的白色,讓我明白什么是純粹的傷害。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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年 忻州市高級(jí)技工學(xué)校招聘考試筆試試題附答案
- 2025年輕鋼龍骨項(xiàng)目評(píng)估報(bào)告
- 地?zé)岚l(fā)電成套設(shè)備生產(chǎn)建設(shè)項(xiàng)目節(jié)能評(píng)估報(bào)告(節(jié)能專(zhuān))
- 2025年 崇左龍州縣公安局招聘輔警考試試題附答案
- 2025年中國(guó)速凍米面食品行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略研究報(bào)告
- 稅務(wù)師網(wǎng)盤(pán)課件2021
- 2025-2030年中國(guó)碳化硅砂布卷項(xiàng)目投資可行性研究分析報(bào)告
- 2025年中國(guó)磁療胃墊行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 中國(guó)浙江省天然氣市場(chǎng)前景預(yù)測(cè)及未來(lái)發(fā)展趨勢(shì)報(bào)告
- 2025年中國(guó)江西省水泥行業(yè)市場(chǎng)調(diào)查研究及投資戰(zhàn)略研究報(bào)告
- 民用爆炸物品概述
- 求職心理調(diào)適專(zhuān)家講座
- GB/T 6344-2008軟質(zhì)泡沫聚合材料拉伸強(qiáng)度和斷裂伸長(zhǎng)率的測(cè)定
- GB/T 3532-1995日用瓷器
- 學(xué)術(shù)論文寫(xiě)作規(guī)范與技巧課件
- 生物高中-基于大數(shù)據(jù)分析的精準(zhǔn)教學(xué)課件
- 工程結(jié)算審計(jì)實(shí)施方案(共8篇)
- 樂(lè)東221氣田投產(chǎn)專(zhuān)家驗(yàn)收匯報(bào)
- 信任五環(huán)(用友營(yíng)銷(xiāo)技巧)課件
- 2022年廣東省深圳市中考化學(xué)真題試卷
- 危險(xiǎn)貨物道路運(yùn)輸安全生產(chǎn)管理制度
評(píng)論
0/150
提交評(píng)論