2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  目錄</b></p><p><b>  1設(shè)計(jì)目的:1</b></p><p>  2設(shè)計(jì)任務(wù)及要求:1</p><p><b>  3設(shè)計(jì)思路2</b></p><p><b>  4設(shè)計(jì)實(shí)現(xiàn)2</b></p

2、><p>  4.1MiniGui運(yùn)行環(huán)境設(shè)置2</p><p>  4.2、Minigui交叉編譯環(huán)境的建立3</p><p>  4.3、MiniGui在S3C2440上的移植5</p><p><b>  5界面編程6</b></p><p>  5.1基本的編程概念6</p&g

3、t;<p><b>  5.2頭文件7</b></p><p>  5.3程序入口點(diǎn)7</p><p>  5.4進(jìn)入消息循環(huán)7</p><p>  5.5窗口過(guò)程函數(shù)7</p><p>  5.6程序的推出7</p><p>  5.7編譯、鏈接和運(yùn)行7</p&g

4、t;<p>  5.8對(duì)話框編程基礎(chǔ)8</p><p>  5.9對(duì)話框的回調(diào)函數(shù)8</p><p>  5.10控件編程基礎(chǔ)10</p><p>  5.11可以看到運(yùn)行的界面如下圖所示:16</p><p>  5.12打開(kāi)串口16</p><p>  5.13設(shè)置串口17</p&g

5、t;<p>  5.14串口讀寫(xiě)19</p><p>  5.15鍵盤(pán)處理程序23</p><p><b>  6調(diào)試23</b></p><p><b>  7設(shè)計(jì)總結(jié)24</b></p><p>  8設(shè)計(jì)參考文獻(xiàn)24</p><p><b&

6、gt;  1設(shè)計(jì)目的:</b></p><p>  1.進(jìn)一步鞏固嵌入式系統(tǒng)的基本知識(shí);</p><p>  2.掌握嵌入式應(yīng)用系統(tǒng)的基本結(jié)構(gòu);</p><p>  3.掌握嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境建立和使用;</p><p>  4.掌握嵌入式系統(tǒng)基本驅(qū)動(dòng)、應(yīng)用程序的設(shè)計(jì)調(diào)試和編譯移植方法;</p><p> 

7、 5.學(xué)會(huì)查閱有關(guān)專(zhuān)業(yè)資料及設(shè)計(jì)手冊(cè);</p><p>  6. MiniGUI界面編程。</p><p><b>  2設(shè)計(jì)任務(wù)及要求:</b></p><p>  1.掌握嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境建立和使用;</p><p>  2.掌握嵌入式系統(tǒng)基本驅(qū)動(dòng)、應(yīng)用程序的設(shè)計(jì)調(diào)試和編譯移植方法;</p><

8、;p>  3、MiniGUI在PC上的安裝、移植</p><p>  4、Linux串口編程與MiniGUI界面編程</p><p>  5、串口傳輸數(shù)據(jù)(位圖)并在TQ2440的LCD上顯示</p><p>  6.編寫(xiě)設(shè)計(jì)說(shuō)明書(shū)(方案的確定、設(shè)計(jì)環(huán)節(jié)的考慮及必要說(shuō)明等)及設(shè)備的使用說(shuō)明;</p><p><b>  7.繪

9、制有關(guān)圖紙.</b></p><p><b>  3設(shè)計(jì)思路</b></p><p>  基礎(chǔ)知識(shí)的回顧復(fù)習(xí),包括:虛擬機(jī)的安裝,F(xiàn)edora10的基本使用,嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境建立和使用,嵌入式系統(tǒng)基本驅(qū)動(dòng)、應(yīng)用程序的設(shè)計(jì)調(diào)試和編譯移植方法.。</p><p>  MiniGUI在pc機(jī)上的安裝。(可參照《minigui用戶(hù)手冊(cè)》)

10、</p><p>  參照《Minigui技術(shù)白皮書(shū)》和《Minigui編程指南》學(xué)習(xí)基于 MiniGUI的應(yīng)用界面編程方法。</p><p>  運(yùn)行minigui演示程序,設(shè)計(jì)界面,開(kāi)始界面編程。</p><p>  交叉編譯環(huán)境的建立,及MiniGui在TQ2440上的移植</p><p><b>  開(kāi)始綜合調(diào)

11、試</b></p><p><b>  4設(shè)計(jì)實(shí)現(xiàn)</b></p><p>  4.1MiniGui運(yùn)行環(huán)境設(shè)置</p><p><b>  1、安裝qvfb</b></p><p>  進(jìn)入到/opt/minigui目錄下:cd /opt/minigui</p><

12、p>  解壓:#tar zxvf /mnt/hgfs/linux/ qvfb-1.1.tar.gz</p><p>  #cd / qvfb-1.1</p><p>  #./configure //生成Makefile文件</p><p>  #make //編譯</p><p>  #make install //安裝</p

13、><p><b>  測(cè)試qvfb</b></p><p><b>  #qvfb &</b></p><p>  2、安裝運(yùn)行MiniGui</p><p>  在/opt下新建目錄/opt/minigui</p><p>  1)、先將下載的源碼包,包括libmini

14、gui-1.6.10.tar.gz minigui-res-1.6.10.tar.gz、mde-1.6.10.tar.gz放到共享目錄下。</p><p>  2)、資源文件的安裝</p><p>  進(jìn)入到/opt/minigui目錄下:cd /opt/minigui</p><p>  解壓:#tar zxvf /mnt/hgfs/linux/minigui-r

15、es-1.6.10.tar.gz</p><p>  安裝:#cd /minigui-res-1.6.10</p><p>  #make install</p><p>  3)、配置和編譯minigui</p><p>  進(jìn)入到/opt/minigui目錄下cd /opt/minigui</p><p>  解壓

16、:#tar zxvf /mnt/hgfs/linux/libminigui -1.6.10.tar.gz</p><p>  #cd / libminigui -1.6.10</p><p>  #./configure //生成Makefile文件</p><p>  #make //編譯</p><p>  #make install

17、//安裝</p><p>  在文件/etc/ld.so.conf添加/usr/local/lib</p><p>  3)編譯并運(yùn)行MiniGui的演示程序</p><p>  解壓:#tar zxvf /mnt/hgfs/linux/mg-samples-1.6.10.tar.gz</p><p>  #cd mg-samples-1.6

18、.10</p><p>  #./configure</p><p><b>  #make</b></p><p>  #qvfb & //出現(xiàn)如下圖所示</p><p>  為了匹配,修改配置如下圖:</p><p>  #cd /opt//minigui/mg-samples-1.6

19、.10/src</p><p>  #./helloworld </p><p>  執(zhí)行完后會(huì)啟動(dòng)字體演示程序,若能正常顯示,說(shuō)明 MiniGui環(huán)境成功建立。 </p><p>  4.2、Minigui交叉編譯環(huán)境的建立</p><p>  1、安裝交叉編譯器arm-linux-gcc</p><p>  2、在

20、/opt/minigui下新建目錄temp </p><p>  #cd /opt/minigui</p><p>  #mkdir temp</p><p>  3、建立交叉編譯的lib</p><p>  修改libminigui -1.6.10下的configure文件,在文件頭添加</p><p>  CC=

21、arm-linux-gcc</p><p>  CPP= arm-linux--cpp</p><p>  LD= arm-linux-ld</p><p>  AR= arm-linux-ar</p><p>  RANLIB= arm-linux-ranlib</p><p>  STRIP= arm-linux-

22、strip</p><p>  將libcross.sh拷到libminigui -1.6.10文件夾中</p><p>  libcross.sh文件內(nèi)容如下:</p><p><b>  #/bin/sh</b></p><p>  ./configure --prefix=/opt/minigui/temp/ --

23、host=arm-linux --target=arm-linux</p><p><b>  make</b></p><p>  make install</p><p>  運(yùn)行腳本#sh libcross.sh</p><p>  之后可以查看到/opt/minigui/temp下面生成了etc、lib、incl

24、ude三個(gè)目錄</p><p>  4、建立交叉編譯的res</p><p>  修改minigui-res-1.6.10下的config.linux文件的第11行TOPDIR=/home/nick/minigui/tmp</p><p>  將rescross.sh 拷到minigui-res-1.6.10文件夾中</p><p>  re

25、scross.sh文件內(nèi)容如下:</p><p><b>  #!/bin/sh</b></p><p>  make install</p><p>  運(yùn)行腳本#sh rescross.sh</p><p>  可以查看/opt/minigui/temp下面生成usr目錄</p><p>  

26、5、修改mg-samples-1.6.10下的configure文件,在文件頭添加</p><p>  CC= arm-linux-gcc</p><p>  CPP= arm-linux--cpp</p><p>  LD= arm-linux-ld</p><p>  AR= arm-linux-ar</p><p&g

27、t;  RANLIB= arm-linux-ranlib</p><p>  STRIP= arm-linux-strip</p><p>  將samplecorss.sh拷到mg-samples-1.6.10文件夾中</p><p>  samplecorss.sh文件內(nèi)容如下:</p><p><b>  #!/bin/sh&

28、lt;/b></p><p>  ./configure --host=arm-linux --target=arm-linux --prefix=/opt/minigui/temp/ LDFLAGS=-L/opt/minigui/temp/lib CPPFLAGS=-I/opt/minigui/temp/include CFLAGS=-I/opt/minigui/temp/include</p>

29、;<p><b>  Make</b></p><p>  運(yùn)行腳本#sh samplecorss.sh</p><p>  可以查看/opt/minigui/ mg-samples-1.6.10/src下生成了可執(zhí)行文件</p><p>  4.3、MiniGui在S3C2440上的移植</p><p>

30、  1、修改/opt/minigui/temp下的etc下的MINIGUI的配置文件</p><p><b>  [system] </b></p><p>  #GAL engine and default options </p><p>  gal_engine=fbcon </p><

31、;p>  defaultmode=800x480-16bpp </p><p>  # IAL engine </p><p>  ial_engine=console </p><p>  mdev=/dev/mice </p><p>  mtype=IMPS2 </p><p>

32、  [fbcon] </p><p>  defaultmode=800x480-16bpp </p><p>  [qvfb] </p><p>  defaultmode=800x480-16bpp </p><p><b>  display=0</b></p><p

33、>  gal_engine:指定使用的圖形引擎 </p><p>  defaultmode:指定圖形引擎的顯示模式,格式為:寬 x高-顯示位數(shù)(bpp) </p><p>  ial_engine:指定使用的輸入引擎 </p><p>  mdev:指定鼠標(biāo)設(shè)備文件 </p><p>  mtype:指定鼠標(biāo)協(xié)議類(lèi)型 </p&

34、gt;<p>  其中ial_engine輸入引擎中mdev的設(shè)備文件目錄路徑可通過(guò)在超級(jí)終端運(yùn)行:#ls /dev 來(lái)具體查看。</p><p><b>  2、建立超級(jí)終端</b></p><p>  1)pc機(jī)與開(kāi)發(fā)板串口相連</p><p>  2)開(kāi)始-附件-通信-超級(jí)終端(波特率115200,數(shù)據(jù)位8,奇偶校驗(yàn):無(wú),停

35、止位1,數(shù)據(jù)控制流:無(wú))</p><p><b>  3.NFS服務(wù)配置</b></p><p>  1)、#setup,選擇system services 將nfs選中</p><p>  點(diǎn)ok退出選擇Firewall configuration 進(jìn)入防火墻設(shè)置</p><p>  將enable前的*號(hào)去掉<

36、/p><p>  2)、將pc機(jī)與開(kāi)發(fā)板的網(wǎng)線相連</p><p>  執(zhí)行#ifconfig 查看pc機(jī) ip地址,或是修改pc機(jī)的ip地址</p><p>  #ifconfig eth1 192.168.1.10 </p><p>  在超級(jí)終端同樣執(zhí)行:#ifconfig查看開(kāi)發(fā)板的IP地址,實(shí)驗(yàn)中查得為192.168.1.6,然后執(zhí)行#

37、ping 192.168.1.10 若能ping得同,說(shuō)明網(wǎng)線正常連接</p><p>  #vim /etc/profile,修改/etc/profile中內(nèi)容如下:</p><p>  #service nfs reatart 啟動(dòng)nfs服務(wù),啟動(dòng)成功會(huì)有如下圖所示:</p><p>  3)在超級(jí)終端運(yùn)行:</p><p>  #mou

38、nt –o nolock,rsize=1024,wsize=1024 192.168.1.10:/ /mnt</p><p>  完成pc機(jī)根目錄下的內(nèi)容掛載至開(kāi)發(fā)板/mnt目錄下。</p><p><b>  #cd /mnt </b></p><p><b>  #ls</b></p><p>

39、  若能看到pc機(jī)的根目錄內(nèi)容,說(shuō)明掛載成功。</p><p><b>  4、移植</b></p><p>  1)將/opt/minigui/temp/etc下的Mingui.cfg文件拷到開(kāi)發(fā)板/etc目錄下。2)將/opt/minigui/temp /lib下的所有文件拷貝到開(kāi)發(fā)板/usr/lib目錄下</p><p>  3)將pc機(jī)

40、/opt/minigui/temp/usr/local/lib中所有內(nèi)容拷貝到開(kāi)發(fā)板的/usr/local/lib下</p><p>  12、把/opt/minigui/mg-samples-1.6.10/src中任意可執(zhí)行文件和資源文件拷貝到開(kāi)發(fā)板的/usr/minigui下面,沒(méi)有這個(gè)目錄自己建一個(gè),最后運(yùn)行科執(zhí)行程序,觀察開(kāi)發(fā)板上的lcd顯示情況,若能出現(xiàn)相應(yīng)串口,則證明移植成功。</p>

41、<p><b>  5界面編程</b></p><p>  5.1基本的編程概念</p><p>  MiniGUI是一個(gè)圖形用戶(hù)界面支持的系統(tǒng),通常的GUI編程概念均適用于MiniGUI編程,如窗口和事件驅(qū)動(dòng)編程等。</p><p><b>  5.2頭文件</b></p><p>  

42、Com.c的開(kāi)始所包括的四個(gè)頭文件分別是:</p><p>  <minigui/common.h> <minigui/minigui.h> <minigui/gdi.h> <minigui/window.h> </p><p>  他們是所有的MiniGUI應(yīng)用程序都必須包括的頭文件。</p><p><b&

43、gt;  5.3程序入口點(diǎn)</b></p><p>  一個(gè)C程序的入口點(diǎn)為main函數(shù),而一個(gè)MiniGUI程序的入口點(diǎn)為</p><p>  MiniGUIMain,該函數(shù)原型如下:</p><p>  int MiniGUIMain (int argc, const char* argv[])</p><p>  main函

44、數(shù)已經(jīng)在MiniGUI的函數(shù)庫(kù)中定義了,該函數(shù)在進(jìn)行一些MiniGUI的出始化工作之后調(diào)用MiniGUIMain函數(shù)。</p><p><b>  5.4進(jìn)入消息循環(huán)</b></p><p>  在函數(shù)DialogBoxIndirectParam (&DlgMyCom, HWND_DESKTOP, DialogBoxProc2, 0L);和函數(shù)static i

45、nt DialogBoxProc2 (HWND hDlg1, int message, WPARAM wParam, LPARAM lParam)的MSG_INITDIALOG進(jìn)行消息的循環(huán)。</p><p>  其中: 1、hwnd 消息發(fā)往的窗口的句柄。</p><p>  2、message 消息標(biāo)識(shí)符。</p><p>  3、wParam 一個(gè)32位的消息

46、參數(shù),其含義是根據(jù)消息的不同而不同。</p><p>  4、IParam 一個(gè)32位的消息參數(shù),去含義是取決于消息的類(lèi)型。</p><p><b>  5.5窗口過(guò)程函數(shù)</b></p><p>  窗口過(guò)程函數(shù)是MiniGUI程序的主體部分,應(yīng)用程序?qū)嶋H所做的工作大部分都發(fā)生在窗口的過(guò)程函數(shù)中,以為GUI程序的主要任務(wù)是接收和處理窗口收的

47、各種消息。</p><p><b>  5.6程序的推出</b></p><p>  用戶(hù)單擊窗口右上角的關(guān)閉按鈕時(shí)窗口過(guò)程函數(shù)將收到一個(gè)MSG_CLOSE消息。</p><p>  5.7編譯、鏈接和運(yùn)行</p><p>  編寫(xiě)自己的Makefile文件</p><p>  LFLAGS+=-

48、Llib/-lpthread -lminigui -lm -lpng -lpthread –ljpeg//庫(kù)的路徑</p><p>  com: com.o</p><p>  cc $(LFLAGS) -o com com.o</p><p>  com.o: com.c</p><p>  cc -c com.c</p>&

49、lt;p><b>  clean:</b></p><p>  rm *.o com</p><p>  把編好的Makefile文件和C程序放到一起。</p><p><b>  $make</b></p><p><b>  $./ com</b></p>

50、<p><b>  就可以運(yùn)行程序了。</b></p><p>  5.8對(duì)話框編程基礎(chǔ)</p><p>  在MiniGUI中,對(duì)話框是一類(lèi)特殊的主窗口,這中主窗口只關(guān)注與用戶(hù)的交互—向用戶(hù)提供輸出消息,但更多的是用于用戶(hù)輸入。對(duì)話框可以理解為子類(lèi)化之后的主窗口。它針對(duì)對(duì)話框的特殊性進(jìn)行了特殊設(shè)計(jì)。</p><p>  /***

51、************對(duì)話框定義****************************************/</p><p>  static DLGTEMPLATE DlgMyCom = </p><p><b>  { </b></p><p>  WS_BORDER | WS_CAPTION, </p><p&

52、gt;  WS_EX_NONE, </p><p>  0, 0, 800, 480, </p><p><b>  "MyCom", </b></p><p><b>  0, 0, </b></p><p>  28, NULL, </p><p>&

53、lt;b>  0 </b></p><p>  };這個(gè)函數(shù)就是對(duì)話框的一個(gè)基本定義了。其中28是包含的控件數(shù),如果包含的控件沒(méi)有填入正確的個(gè)數(shù),那么Qt不會(huì)正常顯示。</p><p>  5.9對(duì)話框的回調(diào)函數(shù)</p><p>  static int DialogBoxProc2 (HWND hDlg, int message, WPARAM

54、wParam, LPARAM lParam) </p><p><b>  { </b></p><p><b>  int i;</b></p><p>  switch (message) { </p><p>  case MSG_INITDIALOG:</p><p>

55、;  printf("init dialog\n"); </p><p><b>  { </b></p><p>  for (i = IDC_BUTTON_SEND; i <= IDC_BUTTON_9; i++) </p><p>  SetNotificationCallback (GetDlgItem (hD

56、lg, i), my_notif_proc);</p><p><b>  }</b></p><p><b>  /*端口選擇*/</b></p><p>  SendDlgItemMessage(hDlg, IDC_BOX_PORT, CB_ADDSTRING, 0, (LPARAM)"串口0");

57、</p><p>  SendDlgItemMessage(hDlg, IDC_BOX_PORT, CB_ADDSTRING, 0, (LPARAM)"串口1"); </p><p><b>  /*波特率設(shè)置*/</b></p><p>  SendDlgItemMessage(hDlg, IDC_BOX_BAUDRAT

58、E, CB_ADDSTRING, 0, (LPARAM) "115200");</p><p>  SendDlgItemMessage(hDlg, IDC_BOX_BAUDRATE, CB_ADDSTRING, 0, (LPARAM) "57600"); </p><p>  SendDlgItemMessage(hDlg, IDC_BOX_BA

59、UDRATE, CB_ADDSTRING, 0, (LPARAM) "38400");</p><p>  SendDlgItemMessage(hDlg, IDC_BOX_BAUDRATE, CB_ADDSTRING, 0, (LPARAM) "19200");</p><p>  SendDlgItemMessage(hDlg, IDC_BOX_

60、BAUDRATE, CB_ADDSTRING, 0, (LPARAM) "9600"); </p><p>  SendDlgItemMessage(hDlg, IDC_BOX_BAUDRATE, CB_ADDSTRING, 0, (LPARAM) "4800"); </p><p>  SendDlgItemMessage(hDlg, IDC_BO

61、X_BAUDRATE, CB_ADDSTRING, 0, (LPARAM) "2400"); </p><p>  SendDlgItemMessage(hDlg, IDC_BOX_BAUDRATE, CB_ADDSTRING, 0, (LPARAM) "300"); </p><p><b>  /*奇偶校驗(yàn)位*/</b>

62、</p><p>  SendDlgItemMessage(hDlg, IDC_BOX_PARITYBIT, CB_ADDSTRING, 0, (LPARAM)"None");</p><p>  SendDlgItemMessage(hDlg, IDC_BOX_PARITYBIT, CB_ADDSTRING, 0, (LPARAM)"Odd");&

63、lt;/p><p>  SendDlgItemMessage(hDlg, IDC_BOX_PARITYBIT, CB_ADDSTRING, 0, (LPARAM)"Even"); </p><p>  SendDlgItemMessage(hDlg, IDC_BOX_PARITYBIT, CB_ADDSTRING, 0, (LPARAM)"Space"

64、); </p><p>  /* 加入數(shù)據(jù)位 */</p><p>  SendDlgItemMessage(hDlg, IDC_BOX_DATABIT, CB_ADDSTRING, 0, (LPARAM)"8");</p><p>  SendDlgItemMessage(hDlg, IDC_BOX_DATABIT, CB_ADDSTRING

65、, 0, (LPARAM)"7");</p><p>  /* 加入停止位 */</p><p>  SendDlgItemMessage(hDlg, IDC_BOX_STOPBIT, CB_ADDSTRING, 0, (LPARAM)"0");</p><p>  SendDlgItemMessage(hDlg, IDC_B

66、OX_STOPBIT, CB_ADDSTRING, 0,(LPARAM) "1"); </p><p><b>  return 1;</b></p><p>  case MSG_COMMAND:</p><p>  switch (wParam) {</p><p>  case IDO

67、K: </p><p><b>  break;</b></p><p>  case IDCANCEL://窗口關(guān)閉消息時(shí),銷(xiāo)毀對(duì)話框,控件</p><p>  EndDialog (hDlg, wParam);//退出對(duì)話框</p><p><b>  break;</b></p&

68、gt;<p><b>  }</b></p><p><b>  break; </b></p><p><b>  }; </b></p><p>  return DefaultDialogProc (hDlg, message, wParam, lParam);//對(duì)話框缺省消息返

69、回。</p><p><b>  }</b></p><p>  在DialogBoxProc2中,需要定義對(duì)話框模板、對(duì)話框的托管主窗口句柄、對(duì)話框回調(diào)函數(shù)地址,以及要傳遞到對(duì)話框過(guò)程的參數(shù)值。EndDialog用來(lái)結(jié)束對(duì)話框過(guò)程。DestroyAllControls用來(lái)銷(xiāo)毀對(duì)話框中的所有子控件。</p><p>  5.10控件編程基礎(chǔ)&l

70、t;/p><p>  較為復(fù)雜的GUI系統(tǒng)中,都帶有預(yù)定義的控件集合,他們是人機(jī)交互的主要元素。而此次實(shí)驗(yàn)用到的控件分別是靜態(tài)框、按鈕、多行編輯框、旋鈕組合和框。</p><p>  他們的定義分別如下:</p><p>  static CTRLDATA CtrlMyTaste[] = </p><p><b>  { </b&

71、gt;</p><p>  /*****************定義端口選擇的復(fù)選框***************************************/</p><p><b>  { </b></p><p>  "static", </p><p>  WS_VISIBLE | SS_

72、LEFT | WS_GROUP, </p><p>  16, 60, 100, 80, </p><p>  IDC_PROMPT_PORT, </p><p><b>  "串口選擇", </b></p><p><b>  0 </b></p><p&g

73、t;<b>  }, </b></p><p><b>  {</b></p><p>  "combobox",</p><p>  WS_VISIBLE | CBS_DROPDOWNLIST | CBS_NOTIFY,</p><p>  100, 60, 100, 30,&

74、lt;/p><p>  IDC_BOX_PORT,</p><p><b>  "串口0",</b></p><p><b>  60</b></p><p><b>  },</b></p><p>  /***************

75、**定義波特率設(shè)置的復(fù)選框***************************************/</p><p><b>  { </b></p><p>  "static", </p><p>  WS_VISIBLE | SS_LEFT | WS_GROUP, </p><p>  1

76、6, 90, 100, 110, </p><p>  IDC_PROMPT_BAUDRATE, </p><p><b>  "波特率設(shè)置", </b></p><p><b>  0 </b></p><p><b>  }, </b></p>

77、;<p><b>  {</b></p><p>  "combobox",</p><p>  WS_VISIBLE | CBS_DROPDOWNLIST | CBS_NOTIFY,</p><p>  100, 90, 100, 30,</p><p>  IDC_BOX_BAUDR

78、ATE,</p><p><b>  "115200",</b></p><p><b>  60</b></p><p><b>  },</b></p><p>  /**************定義數(shù)據(jù)位的復(fù)選框********************

79、************/</p><p><b>  {</b></p><p><b>  "static",</b></p><p>  WS_VISIBLE | SS_LEFT | WS_GROUP,</p><p>  16, 120, 100, 30,</p&g

80、t;<p>  IDC_PROMPT_DATABIT,</p><p><b>  "數(shù)據(jù)位",</b></p><p><b>  0</b></p><p><b>  },</b></p><p><b>  {</b&g

81、t;</p><p>  "combobox",</p><p>  WS_VISIBLE | CBS_DROPDOWNLIST | CBS_NOTIFY,</p><p>  100, 120, 100, 30,</p><p>  IDC_BOX_DATABIT,</p><p><b&g

82、t;  "8",</b></p><p><b>  60</b></p><p><b>  },</b></p><p>  /**************定義停止位的復(fù)選框********************************/</p><p><

83、;b>  {</b></p><p><b>  "static",</b></p><p>  WS_VISIBLE | SS_LEFT | WS_GROUP,</p><p>  16, 150, 100, 30,</p><p>  IDC_PROMPT_STOPBIT,<

84、;/p><p><b>  "停止位",</b></p><p><b>  0</b></p><p><b>  },</b></p><p><b>  {</b></p><p>  "combob

85、ox",</p><p>  WS_VISIBLE | CBS_DROPDOWNLIST | CBS_NOTIFY,</p><p>  100, 150, 100, 30,</p><p>  IDC_BOX_STOPBIT,</p><p><b>  "1",</b></p>

86、;<p><b>  40</b></p><p><b>  },</b></p><p>  /**************定義奇偶校驗(yàn)位的復(fù)選框********************************/</p><p><b>  {</b></p><

87、p><b>  "static",</b></p><p>  WS_VISIBLE | SS_LEFT | WS_GROUP,</p><p>  16, 180, 100, 30,</p><p>  IDC_PROMPT_PARITYBIT,</p><p><b>  &quo

88、t;奇偶校驗(yàn)位",</b></p><p><b>  0</b></p><p><b>  },</b></p><p><b>  {</b></p><p>  "combobox",</p><p> 

89、 WS_VISIBLE | CBS_DROPDOWNLIST | CBS_NOTIFY,</p><p>  100, 180, 100, 30,</p><p>  IDC_BOX_PARITYBIT,</p><p><b>  "N",</b></p><p><b>  60<

90、/b></p><p><b>  }, </b></p><p>  /**************************定義打開(kāi)、關(guān)閉串口按鈕*****************************/</p><p><b>  { </b></p><p>  "butto

91、n", </p><p>  WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, </p><p>  16, 210, 80, 30, </p><p>  IDC_BUTTON_OPEN, </p><p><b>  "打開(kāi)串口", <

92、;/b></p><p><b>  0 </b></p><p><b>  },</b></p><p><b>  { </b></p><p>  "button", </p><p>  WS_VISIBLE | BS

93、_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, </p><p>  120, 210, 80, 30, </p><p>  IDC_BUTTON_CLOSE, </p><p><b>  "關(guān)閉串口", </b></p><p><b>  0 <

94、/b></p><p><b>  },</b></p><p>  /***********************定義信息顯示模塊**********2***********************/</p><p><b>  { </b></p><p>  "static&

95、quot;, </p><p>  WS_VISIBLE | SS_LEFT | WS_GROUP, </p><p>  16, 30, 150, 20, </p><p>  IDC_PROMPT_MESSAGE, </p><p>  "等待.....................", </p>&l

96、t;p><b>  0 </b></p><p><b>  }, </b></p><p>  /**************************定義發(fā)送接收按鈕*****************************/</p><p><b>  { </b></p>&

97、lt;p>  "button", </p><p>  WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, </p><p>  146, 270, 50, 30, </p><p>  IDC_BUTTON_SEND, </p><p><b> 

98、 "發(fā)送", </b></p><p><b>  0 </b></p><p><b>  }, </b></p><p>  /***********************定義數(shù)據(jù)顯示模塊***********************************/</p>&

99、lt;p><b>  { </b></p><p>  "static", </p><p>  WS_VISIBLE, </p><p>  280, 30, 200, 370, </p><p>  IDC_STATIC, </p><p><b>  &q

100、uot;接收數(shù)據(jù)", </b></p><p><b>  0 </b></p><p><b>  }, </b></p><p><b>  { </b></p><p>  CTRL_MLEDIT, </p><p>  WS

101、_VISIBLE | WS_BORDER | WS_VSCROLL | ES_BASELINE | ES_AUTOWRAP, </p><p>  280, 50, 180,350, </p><p>  IDC_RECIEVE_CHARS, </p><p><b>  "", </b></p><p&

102、gt;<b>  0 </b></p><p><b>  },</b></p><p><b>  { </b></p><p>  "static", </p><p>  WS_VISIBLE, </p><p>  16, 2

103、80, 200, 120, </p><p>  IDC_STATIC, </p><p><b>  "發(fā)送數(shù)據(jù)", </b></p><p><b>  0 </b></p><p><b>  }, </b></p><p>&

104、lt;b>  { </b></p><p>  CTRL_MLEDIT, </p><p>  WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_BASELINE | ES_AUTOWRAP, </p><p>  16, 300, 180,100, </p><p>  IDC_SEND_C

105、HARS, </p><p><b>  "", </b></p><p><b>  0 </b></p><p><b>  },</b></p><p>  /***********************定義鍵盤(pán)*******************

106、****************/ </p><p><b>  {</b></p><p>  "button", </p><p>  WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, </p><p>  530, 280, 30

107、, 30, </p><p>  IDC_BUTTON_0, </p><p><b>  "0", </b></p><p><b>  0 </b></p><p><b>  },</b></p><p><b>  

108、{</b></p><p>  "button", </p><p>  WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, </p><p>  500, 310, 30, 30, </p><p>  IDC_BUTTON_1, </p>

109、<p><b>  "1", </b></p><p><b>  0 </b></p><p><b>  },</b></p><p><b>  {</b></p><p>  "button",

110、 </p><p>  WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, </p><p>  530, 310, 30, 30, </p><p>  IDC_BUTTON_2, </p><p><b>  "2", </b></p

111、><p><b>  0 </b></p><p><b>  },</b></p><p><b>  {</b></p><p>  "button", </p><p>  WS_VISIBLE | BS_DEFPUSHBUTTON

112、 | WS_TABSTOP | WS_GROUP, </p><p>  560, 310, 30, 30, </p><p>  IDC_BUTTON_3, </p><p><b>  "3", </b></p><p><b>  0 </b></p><

113、;p><b>  },</b></p><p><b>  {</b></p><p>  "button", </p><p>  WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, </p><p>  500,

114、 340, 30, 30, </p><p>  IDC_BUTTON_4, </p><p><b>  "4", </b></p><p><b>  0 </b></p><p><b>  },</b></p><p><

115、;b>  {</b></p><p>  "button", </p><p>  WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, </p><p>  530, 340, 30, 30, </p><p>  IDC_BUTTON_5, &l

116、t;/p><p><b>  "5", </b></p><p><b>  0 </b></p><p><b>  },</b></p><p><b>  {</b></p><p>  "butto

117、n", </p><p>  WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, </p><p>  560, 340, 30, 30, </p><p>  IDC_BUTTON_6, </p><p><b>  "6", </b&g

118、t;</p><p><b>  0 </b></p><p><b>  },</b></p><p><b>  {</b></p><p>  "button", </p><p>  WS_VISIBLE | BS_DEFPU

119、SHBUTTON | WS_TABSTOP | WS_GROUP, </p><p>  500, 370, 30, 30, </p><p>  IDC_BUTTON_7, </p><p><b>  "7", </b></p><p><b>  0 </b></p&

120、gt;<p><b>  },</b></p><p><b>  {</b></p><p>  "button", </p><p>  WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, </p><p&g

121、t;  530, 370, 30, 30, </p><p>  IDC_BUTTON_8, </p><p><b>  "8", </b></p><p><b>  0 </b></p><p><b>  },</b></p><

122、p><b>  {</b></p><p>  "button", </p><p>  WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, </p><p>  560, 370, 30, 30, </p><p>  IDC_BUTT

123、ON_9, </p><p><b>  "9", </b></p><p><b>  0 </b></p><p><b>  },</b></p><p><b>  };</b></p><p>  在上

124、面的定義中,我們可以通過(guò)坐標(biāo)來(lái)改變他們的位置,使控件能擺放到合適的位置上去。其中,BUTTON控件有3中風(fēng)格,我采用了普通按鈕和單選按鈕的風(fēng)格。</p><p>  其中在Qt上進(jìn)行文字打印時(shí),只需要加以個(gè)靜態(tài)框定義。通過(guò)SetWindowText</p><p>  ()函數(shù)來(lái)實(shí)現(xiàn),文本的打印。</p><p>  把編寫(xiě)好的com.c文件進(jìn)行make生成可執(zhí)行文

125、件com.然后運(yùn)行com文件。</p><p>  5.11可以看到運(yùn)行的界面如下圖所示:</p><p><b>  5.12打開(kāi)串口</b></p><p>  在 Linux 下串口文件是位于 /dev 下的。串口一 為 /dev/ttyS0,串口二 為 /dev/ttyS1。打開(kāi)串口是通過(guò)使用標(biāo)準(zhǔn)的文件打開(kāi)函數(shù)操作:</p>

126、<p>  /*****************打開(kāi)設(shè)備函數(shù)**************************************/</p><p>  int OpenDevice(char *Dev) </p><p><b>  { </b></p><p>  int fd = open( Dev, O_RDWR )

127、; //打開(kāi)你選擇的端口</p><p>  if (-1 == fd) </p><p><b>  { </b></p><p>  perror("Can't Open Serial Port"); //設(shè)備打開(kāi)失敗 </p><p>  return -1; </

128、p><p><b>  } </b></p><p><b>  else </b></p><p><b>  {</b></p><p>  printf("Open Serial Port:%s\n",Dev);</p><p> 

129、 return fd;</p><p><b>  } </b></p><p><b>  } </b></p><p><b>  5.13設(shè)置串口</b></p><p>  最基本的設(shè)置串口包括波特率設(shè)置,效驗(yàn)位和停止位設(shè)置。</p><p> 

130、 /*****************設(shè)置波特率**************************************/</p><p>  int set_speed(int fd, int speed)</p><p><b>  {</b></p><p><b>  int i;</b></p>

131、<p>  int status;</p><p>  struct termios options; </p><p>  bzero(&options, sizeof(options)); </p><p>  tcgetattr(fd,&options);// 得到當(dāng)前串口的參數(shù)</p><p&

132、gt;  for (i = 0; i < sizeof(speed_arr)/sizeof(int); i++)</p><p><b>  {</b></p><p>  if (speed == name_arr[i])</p><p><b>  {</b></p><p>  tcfl

133、ush(fd, TCIOFLUSH);</p><p>  cfsetispeed(&options, speed_arr[i]);//設(shè)置輸入波特率</p><p>  cfsetospeed(&options, speed_arr[i]);//設(shè)置輸出波特率</p><p>  status = tcsetattr(fd, T

134、CSANOW, &options);</p><p>  printf("status=%d\n",status);</p><p>  if (status != 0)</p><p><b>  {</b></p><p>  perror("tcsetattr fd"

135、);</p><p>  return(-1);</p><p><b>  }</b></p><p><b>  }</b></p><p>  options.c_cflag |= (CLOCAL | CREAD); // 使能接收并使能本地狀態(tài)</p><p>  

136、tcflush(fd, TCIOFLUSH);</p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  } </b></p><p>  /*****************設(shè)置奇偶檢驗(yàn)********

137、******************************/ </p><p>  int set_Parity(int fd, char databits, char stopbits, char parity)</p><p><b>  {</b></p><p>  struct termios options;</p>

138、<p>  if(tcgetattr(fd,&options)!=0){</p><p>  perror("Setup Serial Port");</p><p>  return -1;</p><p><b>  }</b></p><p>  options.c_cfl

139、ag &= ~CSIZE;</p><p>  //--------------------------這里要設(shè)置數(shù)據(jù)位------------------------------------------------------ </p><p>  switch (databits) </p><p><b>  {</b>&l

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論