基于QT/Embedded的可變情報板應用程序開發(fā)
3.3 Socket編程技術
在本應用程序中,控制器一般被設置為服務器端,其具體的過程如下:
◇創(chuàng)建套接字:int socket(int domain,inttype,int protocol。
◇綁定socket到特定端口:int bind (intsockfd,struct sockaddr*my_addr,int addrlen)。
◇監(jiān)聽套接字端口:int listen(int sockfd,int backlog)。
◇接受客戶端連接請求:int accept (intsockfd,void*addr,int*addrlen);
◇發(fā)送數(shù)據(jù)(面向TCP連接):int send (intsockfd,const void*msg,int len,int flags)。
◇接收數(shù)據(jù)(面向TCP連接):int rear(intsockfd,void*buf,int len,unsigned int flags)。
◇關閉套接口:close(socket)。
3.4 進程間的通信技術
進程間的通信手段主要有管道、消息隊列、信號、共享內(nèi)存、信號量、套接口等等,本文采用的是內(nèi)存共享和信號機制。
(1)內(nèi)存共享
在該方式中,多個進程可以訪問同一塊內(nèi)存空間,它是最快的可用IPC形式,往往使用信號量機制來達到進程同步一互斥。mmap()系統(tǒng)調(diào)用使得進程之間可以通過映射同一個普通文件來實現(xiàn)內(nèi)存共享。當普通文件被映射到進程地址空間后,進程可以向訪問普通內(nèi)存一樣來對文件進行訪問,而不必再調(diào)用read()和write()等操作。
(2)信號機制
該方式可用于通知接受進程有某種事件發(fā)生,是進程間唯一的異步通信機制。該方式的信號安裝代碼為:
int sigaction(int signum,const struct sigaction*act,struct sigaction*oldact)。
而發(fā)送信號的代碼為:
int sigqueue(pid_t pid,int sig,const unionsigval val)。
4 運行步驟
將編譯好的可執(zhí)行文件移植到目標板上,需要以下幾個步驟:
(1)打開電腦的超級終端程序,將計算機串口與目標板相連;
(2)在ARM板加電初始化完畢后,cd到開發(fā)板的tmp文件夾底下,再用超級終端上的上載文件功能,將可執(zhí)行程序下載到板子上。
(3)在命令行敲人chmod 777 xxx,改變可執(zhí)行文件的執(zhí)行權限。
(4)在命令行敲人./xxx,并執(zhí)行。此后程序開始運行。
5 結束語
本文以可變情報板圖形系統(tǒng)的開發(fā)為例,闡述了基于QT的應用軟件開發(fā)方法,其友好的人機交互界面以及反應快速靈敏的特點,使得該系統(tǒng)具有良好的執(zhí)行效果。目前,該系統(tǒng)已經(jīng)成功交付使用并具有良好的穩(wěn)定性。隨著嵌入式技術的繼續(xù)飛速發(fā)展和用戶需求的不斷增加,相信在未來不久,LED可變情報板系統(tǒng)將會發(fā)揮越來越多的作用。
評論