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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、><p>  4.1MiniGui運行環(huán)境設置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程序入口點7</p><p>  5.4進入消息循環(huán)7</p><p>  5.5窗口過程函數(shù)7</p><p>  5.6程序的推出7</p><p>  5.7編譯、鏈接和運行7</p&g

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

5、t;<p>  5.14串口讀寫19</p><p>  5.15鍵盤處理程序23</p><p><b>  6調試23</b></p><p><b>  7設計總結24</b></p><p>  8設計參考文獻24</p><p><b&

6、gt;  1設計目的:</b></p><p>  1.進一步鞏固嵌入式系統(tǒng)的基本知識;</p><p>  2.掌握嵌入式應用系統(tǒng)的基本結構;</p><p>  3.掌握嵌入式系統(tǒng)開發(fā)環(huán)境建立和使用;</p><p>  4.掌握嵌入式系統(tǒng)基本驅動、應用程序的設計調試和編譯移植方法;</p><p> 

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

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

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

10、</p><p>  參照《Minigui技術白皮書》和《Minigui編程指南》學習基于 MiniGUI的應用界面編程方法。</p><p>  運行minigui演示程序,設計界面,開始界面編程。</p><p>  交叉編譯環(huán)境的建立,及MiniGui在TQ2440上的移植</p><p><b>  開始綜合調

11、試</b></p><p><b>  4設計實現(xiàn)</b></p><p>  4.1MiniGui運行環(huán)境設置</p><p><b>  1、安裝qvfb</b></p><p>  進入到/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>  測試qvfb</b></p><p><b>  #qvfb &</b></p><p>  2、安裝運行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>  進入到/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>  進入到/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)編譯并運行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í)行完后會啟動字體演示程序,若能正常顯示,說明 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文件內容如下:</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>  運行腳本#sh libcross.sh</p><p>  之后可以查看到/opt/minigui/temp下面生成了etc、lib、incl

24、ude三個目錄</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文件內容如下:</p><p><b>  #!/bin/sh</b></p><p>  make install</p><p>  運行腳本#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文件內容如下:</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>  運行腳本#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:指定鼠標設備文件 </p><p>  mtype:指定鼠標協(xié)議類型 </p&

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

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

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

37、ping 192.168.1.10 若能ping得同,說明網線正常連接</p><p>  #vim /etc/profile,修改/etc/profile中內容如下:</p><p>  #service nfs reatart 啟動nfs服務,啟動成功會有如下圖所示:</p><p>  3)在超級終端運行:</p><p>  #mou

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

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

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

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

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

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

44、數(shù)已經在MiniGUI的函數(shù)庫中定義了,該函數(shù)在進行一些MiniGUI的出始化工作之后調用MiniGUIMain函數(shù)。</p><p><b>  5.4進入消息循環(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進行消息的循環(huán)。</p><p>  其中: 1、hwnd 消息發(fā)往的窗口的句柄。</p><p>  2、message 消息標識符。</p><p>  3、wParam 一個32位的消息

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

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

48、Llib/-lpthread -lminigui -lm -lpng -lpthread –ljpeg//庫的路徑</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>  就可以運行程序了。</b></p><p>  5.8對話框編程基礎</p><p>  在MiniGUI中,對話框是一類特殊的主窗口,這中主窗口只關注與用戶的交互—向用戶提供輸出消息,但更多的是用于用戶輸入。對話框可以理解為子類化之后的主窗口。它針對對話框的特殊性進行了特殊設計。</p><p>  /***

51、************對話框定義****************************************/</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>  };這個函數(shù)就是對話框的一個基本定義了。其中28是包含的控件數(shù),如果包含的控件沒有填入正確的個數(shù),那么Qt不會正常顯示。</p><p>  5.9對話框的回調函數(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>  /*波特率設置*/</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>  /*奇偶校驗位*/</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://窗口關閉消息時,銷毀對話框,控件</p><p>  EndDialog (hDlg, wParam);//退出對話框</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);//對話框缺省消息返

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

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

71、gt;</p><p>  /*****************定義端口選擇的復選框***************************************/</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、**定義波特率設置的復選框***************************************/</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>  "波特率設置", </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ù)位的復選框********************

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>  /**************定義停止位的復選框********************************/</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>  /**************定義奇偶校驗位的復選框********************************/</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;奇偶校驗位",</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>  /**************************定義打開、關閉串口按鈕*****************************/</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>  "打開串口", <

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>  "關閉串口", </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>  /***********************定義鍵盤*******************

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

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

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

127、; //打開你選擇的端口</p><p>  if (-1 == fd) </p><p><b>  { </b></p><p>  perror("Can't Open Serial Port"); //設備打開失敗 </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設置串口</b></p><p>  最基本的設置串口包括波特率設置,效驗位和停止位設置。</p><p> 

130、 /*****************設置波特率**************************************/</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);// 得到當前串口的參數(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]);//設置輸入波特率</p><p>  cfsetospeed(&options, speed_arr[i]);//設置輸出波特率</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>  /*****************設置奇偶檢驗********

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ù)據(jù)位------------------------------------------------------ </p><p>  switch (databits) </p><p><b>  {</b>&l

溫馨提示

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

評論

0/150

提交評論