畢業(yè)設計---現(xiàn)代化超市電子購物系統(tǒng)_第1頁
已閱讀1頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p>  題 目:現(xiàn)代化超市電子購物系統(tǒng)</p><p>  現(xiàn)代化超市電子購物系統(tǒng)</p><p>  摘要: 本作品以現(xiàn)代化超市為背景,旨在解決目前超市中存在的查詢商品不便、排長隊結賬、超市內定位困難、服務和信息滯后等問題,采用嵌入式系統(tǒng)、射頻識別(RFID)、網(wǎng)絡通信、數(shù)據(jù)庫

2、等技術,實現(xiàn)了現(xiàn)代化超市電子購物系統(tǒng)。系統(tǒng)由移動購物終端和服務器端組成,具有友好的圖形界面,能夠實現(xiàn)商品的自動識別和詳細信息顯示、購物清單管理、顧客定位與商品定位、自動結賬、會員身份識別與管理等功能。</p><p>  RFID又稱射頻識別是英文“Radio Frequency Identification”的縮寫,是基于無線電基礎之上的,利用射頻信號對靜止或者移動的物體進行自動識別和數(shù)據(jù)交換的技術。RFID是

3、自動識別領域目前最熱門的技術。它在物料跟蹤、運載工具和貨架識別等要求非接觸數(shù)據(jù)采集和交換和頻繁改變數(shù)據(jù)內容的場合很有發(fā)展?jié)摿εc發(fā)展前景,它區(qū)別于條形碼等其它識別技術的特性與優(yōu)勢能夠滿足目前庫存管理的需要。所以,研究基于RFID技術的庫存管理適應了目前社會的需求。</p><p>  關鍵字:電子購物,嵌入式系統(tǒng),射頻識別,Qt/Embedded</p><p>  The System o

4、f Electronic Shopping for Modem Supermarket</p><p>  Abstract: This project aims at developing an electronic shopping system to solve the problems existing in current supermarket, including the inconvenient

5、searching for merchandise, the long queue for checkout, the difficult locating in supermarket, the lag of service and information and so on. The system is implemented by incorporating embedded system, FID(Radio Frequency

6、 Identification),Web and database technology,etc. This system, with a friendly graphic user interface, consists of this shoppi</p><p>  RFID stands for radio frequency identification. It uses radio waves to

7、record media literacy. RFID is the hottest technology in automatic identification field. It has high potential and prospects in materials tracking, carriers and shelf identification that require non-contact data collecti

8、on and frequent exchange of data content.</p><p>  Keywords: Electronic shopping, Embedded system, RFID, Qt/Embedded</p><p><b>  目錄</b></p><p><b>  第1章引言1</b&

9、gt;</p><p>  1.1設計背景1</p><p>  1.2設計目標1</p><p>  1.3系統(tǒng)功能2</p><p>  1.4文章結構和說明2</p><p>  第2章系統(tǒng)總體設計4</p><p>  2.1系統(tǒng)的總體結構4</p>

10、<p>  2.2系統(tǒng)技術5</p><p>  2.3系統(tǒng)硬件6</p><p>  2.4開發(fā)環(huán)境8</p><p>  第3章系統(tǒng)硬件設計9</p><p>  3.1硬件總體設計9</p><p>  3.2開發(fā)步驟9</p><p>  3.2.1

11、讀卡模塊的工作過程9</p><p>  3.2.2單片機程序的工作過程10</p><p>  3.2.3通訊指令協(xié)議11</p><p>  第4章系統(tǒng)軟件設計14</p><p>  4.1軟件總體設計14</p><p>  4.2應用程序設計15</p><p>

12、  4.2.1網(wǎng)絡通信設計15</p><p>  4.2.2表格顯示設計17</p><p>  4.2.3數(shù)據(jù)庫模塊設計19</p><p>  4.2.4自動結賬子系統(tǒng)設計19</p><p>  4.2.5定位子系統(tǒng)設計20</p><p>  第5章服務器端設計22</p>

13、<p>  5.1數(shù)據(jù)庫設計22</p><p>  5.2后臺管理22</p><p><b>  第6章總結24</b></p><p><b>  致謝語25</b></p><p><b>  參考文獻26</b></p>&

14、lt;p>  附錄一:Qt/Embedded平臺搭建27</p><p><b>  Contents</b></p><p>  Chapter 1Introduction1</p><p>  1.1Background1</p><p>  1.2Design Goals1</p>

15、<p>  1.3Function2</p><p>  1.4Structure and Notes2</p><p>  Chapter 2System Design4</p><p>  2.1System Architecture4</p><p>  2.2System Technology5<

16、/p><p>  2.3System Hardware6</p><p>  2.4Development Environment8</p><p>  Chapter 3System Hardware Design9</p><p>  3.1Hardware Design9</p><p>  3.2

17、Development Steps9</p><p>  3.2.1Reader Module9</p><p>  3.2.2SCM Process Procedures10</p><p>  3.3Communications Command Protocaol11</p><p>  Chapter 4System S

18、oftware Design14</p><p>  4.1Software Design14</p><p>  4.2Application Design15</p><p>  4.2.1Network Communication Design15</p><p>  4.2.2Table Design17</p

19、><p>  4.2.3Database Module Design19</p><p>  4.2.4Automatic Closure Subsystem Design19</p><p>  4.2.5Positioning Module20</p><p>  Chapter 5Server Design22</p&

20、gt;<p>  5.1Database Design22</p><p>  5.2Background Management22</p><p>  Chapter 6Aggregate24</p><p><b>  Thanks25</b></p><p>  References2

21、6</p><p>  Appendix 1:Qt/Embedded Platform27</p><p><b>  引言</b></p><p><b>  設計背景</b></p><p>  在我國超市形成在20世紀90年代初期,現(xiàn)在已經(jīng)成為我國零售業(yè)的一種重要形態(tài),為國民經(jīng)濟的發(fā)展發(fā)揮了

22、重要的作用。隨著超市高速的發(fā)展,其經(jīng)營管理也變得愈加復雜,早期的售貨員站柜臺的形式早已不能滿足現(xiàn)有銷售也的發(fā)展,這樣就迫切地需要引入新的管理技術。</p><p>  超市形態(tài)具有種種優(yōu)點,但在目前狀況下,它仍存在零售業(yè)企業(yè)所共有的落后的一面,如:不能有效地管理每種商品,收款結算速度慢,容易出現(xiàn)營業(yè)差錯,不宜進行商品調價,盤點效率低等,而且在超市日常管理中,商品的進、銷、存等決策以經(jīng)驗為主,缺乏實時分析功能,管理

23、人員對及時傳遞資料的要求始終得不到滿足。蘇轍超市形態(tài)的高速發(fā)展,其經(jīng)營管理也變得愈加復雜,日常所需要處理的數(shù)據(jù)量也逐漸增大,商業(yè)運轉的中間環(huán)節(jié)也越來越多,原始的人工管理已無法應對這復雜的市場。為此,在選題過程中,我選擇了超市管理系統(tǒng)設計題目,依靠現(xiàn)代化的計算機信息處理技術來管理超市,一方面,方便了顧客能夠準確的獲得商品的詳細信息,節(jié)省了購物時間,提高了顧客購物的滿意度和對超市的認同感。另一方面又為超市本身節(jié)省了大量的人力、物力,改善了員

24、工的工作條件,減輕了勞動強度,并且能夠快速反映出商品的進、銷、存等狀況和各種反饋信息分析,使管理人員快速對市場的變化做出相應的決策,加快超市經(jīng)營管理效率。</p><p><b>  設計目標</b></p><p>  隨著現(xiàn)代科學技術的迅猛發(fā)展,計算機技術已經(jīng)滲透到各個領域,成為各行業(yè)必不可少的工具,特別是Internet技術的推廣和信息高速公路的建立,使IT產(chǎn)業(yè)

25、在市場競爭中越發(fā)顯示出其獨特的優(yōu)勢,步入信息化時代,有巨大的數(shù)據(jù)信息等待加工處理和傳輸,這使得對數(shù)據(jù)庫的進一步開發(fā)和利用顯得尤為迫切。作為國內市場的一些中小型超市,它們在信息化過程中的步伐要落后于大中型超市,而對于這些企業(yè)的資源管理,信息的存儲和處理也顯得迫切需要,要適應市場競爭,就需要有高效的處理方式和管理方法,因此加快超市的信息化進程是必可少的。</p><p>  本畢業(yè)設計以現(xiàn)代化超市為背景,為方便顧客購

26、物,所開發(fā)的一個電子購物平臺。旨在縮短顧客的結賬時間,方便顧客查詢超市商品信息和定位;降低超市的人力成本,提高運營效率。同時,提供一個后臺管理系統(tǒng)對超市中的商品和超市會員信息進行有效的管理。</p><p>  畢業(yè)設計以博創(chuàng)科技UP-NETARM2410-S(S3C2410芯片)控制板為平臺,使用嵌入式Linux操作系統(tǒng)和QT/Embedded圖形界面,采用嵌入式系統(tǒng)技術、射頻識別(RFID)技術、數(shù)據(jù)庫技術等

27、實現(xiàn)以移動購物終端為核心的自動化、信息化的“現(xiàn)代化超市電子購物系統(tǒng)”。</p><p>  通過本畢業(yè)設計主要學習在Linux環(huán)境下的嵌入式系統(tǒng)開發(fā)和對RFID原理的實現(xiàn)。</p><p><b>  系統(tǒng)功能</b></p><p>  系統(tǒng)采用具有全球唯一UID的“電子標簽”作為商品、會員和位置的信息載體。移動購物終端獲得由RFID讀卡模塊

28、讀取的UID。通過網(wǎng)絡查詢數(shù)據(jù)庫信息后進行相應的處理。處理后的信息借由網(wǎng)絡返回給移動購物終端。顧客可以很直觀的獲取商品信息,便利了購物;移動購物終端能夠自動識別并處理商品信息和顧客信息;將電子標簽放在超市的地面下,移動購物終端就能自動在超市內定位。系統(tǒng)功能如下:</p><p>  移動購物終端非接觸地識別商品,自動顯示商品的價格、介紹等詳細信息;</p><p>  移動購物終端能夠實時

29、地顯示顧客的購物清單和商品總價;</p><p>  移動購物終端具有定位功能,顧客可以查看自己當前的位置和商品的所在位置,實現(xiàn)商品的定位查找;</p><p>  顧客通過終端使用會員登錄,并可以查看余額;</p><p>  顧客在出口結賬時,不用再次掃描商品,可以使用會員卡實現(xiàn)自動結賬,整個過程在很短的時間內完成;</p><p>  

30、超市管理者可以實時的查看商品信息、進行會員管理。</p><p><b>  文章結構和說明</b></p><p>  本文的第一部分是引言部分,初步介紹了目前該研究領域的現(xiàn)狀和本畢業(yè)設計的主要目標及實現(xiàn)的功能。</p><p>  第二部分是系統(tǒng)總體設計的詳細介紹,包括系統(tǒng)的總體結構及系統(tǒng)特點,簡要介紹了系統(tǒng)所采用的部分技術,以及系統(tǒng)的開發(fā)

31、環(huán)境;</p><p>  第三部分是系統(tǒng)硬件設計的詳細介紹,包括系統(tǒng)所選硬件電氣規(guī)格、讀卡模塊和非接觸式IC卡間的通訊傳輸指令。同時闡述了讀卡模塊和單片機程序的工作流程。</p><p>  第四部分是系統(tǒng)軟件部分的設計概要。介紹系統(tǒng)軟件部分的開發(fā)流程,詳細介紹了系統(tǒng)中網(wǎng)絡通信設計、表格顯示設計、客戶端數(shù)據(jù)庫模塊設計以及讀卡模塊在軟件部分中的應用。</p><p>

32、;  第五部分是介紹了系統(tǒng)客戶端部分。包括系統(tǒng)數(shù)據(jù)庫設計和一個后臺管理程序。</p><p>  第六部分是總結部分。</p><p><b>  系統(tǒng)總體設計</b></p><p><b>  系統(tǒng)的總體結構</b></p><p>  系統(tǒng)由移動購物終端和服務器兩大部分組成,均采用Linux操

33、作系統(tǒng),通過Web網(wǎng)絡技術連接。移動購物終端以博創(chuàng)科技UP-NETARM2410-S(S3C2410芯片)為核心,外接WM-15T讀寫模塊。將移動購物終端安裝在超市的購物小車上,實現(xiàn)在超市中的移動購物。服務器端由PC機組成,通過設計服務程序,為終端提供數(shù)據(jù)庫服務、自動結賬服務,實現(xiàn)系統(tǒng)的各個功能。如[圖 1]所示</p><p>  圖 1 信息處理流程圖</p><p><b>

34、;  系統(tǒng)技術</b></p><p>  系統(tǒng)的軟件部分是基于Linux操作系統(tǒng)。普通Linux擁有自己標準的GUI系統(tǒng)X-Windows,但是X-Windows過于龐大和臃腫,極耗系統(tǒng)資源,而且其中不少功能對于嵌入式系統(tǒng)來說是多余的,不適于資源有限的嵌入式系統(tǒng)使用。嵌入式系統(tǒng)與傳統(tǒng)計算機系統(tǒng)相比更專門化,其軟硬件設計直接從具體應用出發(fā),嵌入式Linux是應用于嵌入式設備開發(fā)上的一種操作系統(tǒng)。通常嵌

35、入式設備中的GUI系統(tǒng)占據(jù)資源較多,因此對GUI的篩選顯得很重要。由于嵌入式GUI需要高性能、輕量級的GUI系統(tǒng),在這里我們選用Qt/Embedded進行軟件圖形界面的設計,并采用Qt中的QSocket類進行網(wǎng)絡通訊部分的編程。</p><p>  Qt/Embedded是著名的QT庫開發(fā)商TrollTech正在進行的基于framebuffer的面向嵌入式系統(tǒng)的Qt 版本。由于KDE等項目使用Qt作為支持庫,所以

36、由許多基于Qt的X-Windows程序可以非常方便地移植到Qt/Embedded版本上。因其面向對象、跨平臺和界面設計更美觀而得到廣泛的應用。</p><p>  Qt/Embedded開放了源代碼,使得開發(fā)人員可以在GPL許可協(xié)議下自由地使用Qt/Embedded進行嵌入式Linux 應用系統(tǒng)的開發(fā)。而且在Tmake、Qmake、QVFB和Qt Designer等眾多強大開發(fā)工具的支持下,大大提高了Linux系

37、統(tǒng)的開發(fā)效率和項目進度。具體的開發(fā)步驟如下:</p><p>  Qt Designer是設計窗口組件(Widget)的應用程序,在安裝Qt的bin目錄下鍵入./designer可以啟動一個包含很多Qt組件的可視化界面。在此組織應用程序的各組件分布很方便,最后可以生產(chǎn)一個.ui和main.cpp文件;.ui是用XML語言寫的一個文本。如果熟悉QT程序設計可以拋棄Qt Designer,手動編寫圖形界面;</

38、p><p>  uic(User Interface Compiler)是從XML文件生成代碼的用戶界面編輯器,用來將.ui文件生產(chǎn).h和.cpp文件,但生成的這兩個文件不是標準的純C++代碼,通常稱為Qt的C++擴展,因為Qt的對象間中運用了信號/槽的通信機制,在文件用Q_OBJECT宏來標識;</p><p>  用qmake工具生成.pro文件,在設置好環(huán)境變量后,用tmake工具生成M

39、akefile文件(tmake是跨平臺Makefile生成器)。在Qt/Embedded 3.X以上版本中qmake已經(jīng)全面取代tmake;</p><p>  moc(元對象編譯器)用來解析一個C++文件中的類聲明并且生成初始化對象的C++代碼,moc在讀取C++源文件,如果發(fā)現(xiàn)其中一個或多個類的聲明中含有Q_OBLECT宏,就給出這個使用Q_OBJECT宏的類生成另外一個包含元對象代碼的C++元文件;元對象代

40、碼對信號/槽機制、運行時類型信息和動態(tài)屬性系統(tǒng)是需要的;</p><p>  用make命令生成可執(zhí)行的二進制代碼文件。</p><p>  此外Qt/Embedded使系統(tǒng)獲得高效的工作性能是它擁有一個重要機制--信號與槽機制(signals/slots)。信號和槽是一種高級接口,應用于對象之間的通信,是Qt的核心特性,這也使得各個元件之間的協(xié)調變得簡單。信號和槽能攜帶任意數(shù)量和類型的參

41、數(shù),它們是類型完全安全的,不像回調函數(shù)那樣會產(chǎn)生內核泄露。所有從QObject或其子類派生的類都能夠包含信號和槽。當對象改變其狀態(tài)時,信號就由該對象發(fā)射出去,接收方未知。這就是真正的信息封裝,它確保對象被當作一個真正的軟件組件來使用。槽用于接收信號,但它們是普通的對象成員函數(shù)。一個槽并不知道是否有任何信號與自己相連接??梢詫⒑芏嘈盘柵c單個的槽進行連接,也可以將單個的信號與很多的槽進行連接,甚至將一個信號與另外一個信號相連接也是可能的,這

42、時無論第一個信號什么時候發(fā)射系統(tǒng)都將立刻發(fā)射第二個信號。</p><p><b>  系統(tǒng)硬件</b></p><p>  RFID( Radio Frequency Identification,射頻識別)技術是20世紀90年代開始興起的一種非接觸的自動識別技術,射頻識別技術是一項利用射頻信號通過空間禍合(交變磁場或電磁場)實現(xiàn)無接觸信息傳遞并通過所傳遞的信息達到識

43、別目的的技術。</p><p>  現(xiàn)今的RFID技術是AEI(Automatic Equipment Identification,自動識別)在射頻技術方面的具體應用與發(fā)展。RFID技術利用射頻信號的空間禍合,實現(xiàn)了無接觸式的信息雙向通信,并且利用所接收到的信息完成了對目標物體的自動識別。與早期的識別技術相比,RFID技術因其特有的非接觸性以及可對多個目標物體同時識別的特性,得到了眾多行業(yè)的青睞。</p&

44、gt;<p>  依據(jù)電子標簽工作所需能量的供給方式的不同,RFID系統(tǒng)可分為無源、有源以及半有源系統(tǒng)。無源系統(tǒng)所使用的無源標簽又稱被動標簽,標簽自身不需要電源供電,而是通過閱讀器發(fā)送的射頻信號供電,它重量輕、體積小、壽命長、成本低廉,在工程實現(xiàn)中得到了廣泛的應用。有源系統(tǒng)的標簽使用標簽內的電池來供電,系統(tǒng)識別距離較長,可達幾十米,但其壽命有限并且成本較高。另外,由于標簽內載電池,因此有源標簽的體積較大,無法制成薄卡。半有

45、源系統(tǒng)的標簽也帶有電池,但是此電池只起到激活系統(tǒng)的作用,標簽一旦被閱讀器激活,即無需標簽內的電池供電,進入無源標簽工作模式。</p><p>  在我們的設計中,系統(tǒng)硬件部分采用15T射頻讀寫模塊。該讀寫模塊是采用最新Mifare技術的微型嵌入式非接觸式IC卡讀寫模塊。內嵌ISO14443 Type A協(xié)議解釋器,并具有射頻驅動及接收功能,可以簡單實現(xiàn)對MifareOne等卡片的讀寫操作,讀寫距離最大可達100m

46、m(與卡片及天線設計有關) 。該非接觸型IC卡上設有射頻信號接收器或紅外線收發(fā)器,在一定距離內即可收發(fā)讀寫器的信號,實現(xiàn)非接觸讀寫。</p><p>  非接觸式IC卡主要指標</p><p>  卡片的電氣部分只由一個天線和ASIC組成。</p><p>  天線:卡片的天線是只有幾組繞線的線圈,很適于封裝到IS0卡片中。</p><p>

47、  ASIC:卡片的ASIC由一個高速(106KB波特率)的RF接口,一個控制單元和一個8K位(或32K位)EEPROM組成,分為16個扇區(qū)(Mpro為40扇區(qū)),每個扇區(qū)為4 塊(Mpro 后8個區(qū)為16 塊),每塊16個字節(jié),以塊為存取單位。每個扇區(qū)有獨立的一組密碼及訪問控制。每張卡有唯一序列號,為32 位。</p><p><b>  存儲結構</b></p><p

48、>  M1卡分為16個扇區(qū),每個扇區(qū)由4塊(塊0、塊1、塊2、塊3)組成,(我們也將16個扇區(qū)的64個塊按絕對地址編號為0~63),存貯結構如表 1所示:</p><p><b>  表 1 存儲結構</b></p><p>  第0 扇區(qū)的塊0(即絕對地址0 塊),它用于存放廠商代碼,已經(jīng)固化,不可更改。每個扇區(qū)的塊0、塊1、塊2 為數(shù)據(jù)塊,可用于存貯數(shù)據(jù)。數(shù)

49、據(jù)塊可作兩種應用:一是用作一般的數(shù)據(jù)保存,可以進行讀、寫操作。二是用作數(shù)據(jù)值,可以進行初始化值、加值、減值、讀值操作。</p><p><b>  開發(fā)環(huán)境</b></p><p>  硬件:PC機Pentumn500以上,硬盤10G以上</p><p>  軟件:PC機操作系統(tǒng)RedHat Linux9.0 MinicomMysql-5

50、.1.7</p><p>  平臺:博創(chuàng)科技UP-NETARM2410-S(S3C2410芯片)</p><p>  工具:tmake-1.8 qt-x11-3.3.4 qt-embedded-3.3.4</p><p><b>  系統(tǒng)硬件設計</b></p><p><b>  硬件總體設計</b

51、></p><p>  系統(tǒng)終端中的讀卡模塊采用的是15T射頻讀寫模塊。15T射頻讀寫模塊是采用最新Mifare 技術的微型嵌入式非接觸式IC 卡讀寫模塊。內嵌ISO14443 Type A 協(xié)議解釋器,并具有射頻驅動及接收功能,可以簡單實現(xiàn)對MifareOne 等卡片的讀寫操作,讀寫距離最大可達100mm(與卡片及天線設計有關)。該模塊提供標準異步串行通訊接口,輸出TTL 電平。用戶可不必了解非接觸IC卡

52、讀寫模塊的協(xié)議標準及底層驅動,只需通過串行通訊發(fā)送相關指令,即可實現(xiàn)對卡片的所有操作。該模塊適用于標準讀寫器(只需進行電平轉換即可直接連接到PC 機) 、手持機 、收費機、門禁器、考勤機及其它各種收費系統(tǒng)及一卡通應用系統(tǒng)。</p><p><b>  開發(fā)步驟</b></p><p><b>  讀卡模塊的工作過程</b></p>

53、<p>  可以給讀卡模塊事先設定了一個塊(缺省是塊2),當卡片靠近時,讀卡模塊主動驗證這個區(qū)及讀出這個塊的數(shù)據(jù),并向單片機發(fā)出中斷信號,等待單片機來取,當單片機取走時,讀卡模塊并不關閉這張卡,這時單片機可以發(fā)命令直接讀寫此卡的其它塊,直到單片機發(fā)關卡的命令,讀卡模塊又回到開始時的尋卡讀指定塊的狀態(tài);讀卡模塊的設定的塊和尋卡方式可以由單片機設定,并斷電不保存;如[圖 2]所示。</p><p>  尋卡

54、模式位(00 或01),如果以00 模式尋卡,再執(zhí)行了關閉指令后,卡片必須離開感應區(qū)再進入感應區(qū)才能尋卡成功,如果以01 模式尋卡,那么在執(zhí)行了停機指令后,即使卡片未離開感應區(qū)也能尋卡成功。</p><p>  圖 2 讀卡模塊工作流程</p><p>  單片機程序的工作過程</p><p>  單片機向模塊連接的232 口發(fā)送命令來控制模塊的讀寫操作,當模塊讀到

55、卡時,可以通過讀卡模塊對卡進行讀寫操作,操作完成后,一定要關閉卡片。對卡片控制區(qū)的讀寫與數(shù)據(jù)讀寫相同,只是控制方式不同,同時要注意一定不要寫錯或記住所寫內容,否則有可能會無法再對該區(qū)進行操作。在剛開始編程時,為了不寫錯卡片造成不能讀寫的壞區(qū),在對卡片密碼區(qū)進行讀寫之前請將要寫入密碼區(qū)的16個字節(jié)先寫入一個數(shù)據(jù)塊,再讀出,如果寫入正確,說明寫入操作正確,就可以對密碼區(qū)進行寫操作了。模塊取到卡號與密碼無關,也就是不用驗證密碼就可以通過讀數(shù)據(jù)

56、記錄得到卡號。在每一個命令執(zhí)行后在執(zhí)行下一個命令前應有不少于10ms 的延時。</p><p><b>  通訊指令協(xié)議</b></p><p><b>  接口規(guī)格:</b></p><p>  使用單片機對讀寫模塊進行控制,單片機為主控制機(主機),讀寫模塊為從機(分機)。</p><p>  

57、1、通訊方法:232異步通訊 </p><p>  2、波特率:57600bps</p><p>  3、控制字方式:1位開始位,8個數(shù)據(jù)位,一個停止位,無奇偶校驗</p><p><b>  通訊協(xié)議格式:</b></p><p>  ------------------------------------------

58、-----------------------------------</p><p>  |開始標志|模塊地址|信息長度|命令和參數(shù)/叢機返回|校驗|</p><p>  -----------------------------------------------------------------------------</p><p>  [開始標志]:長度

59、2個字節(jié),主機給模塊:AAH FFH;</p><p>  模塊給主機:BBH FFH</p><p>  [模塊地址]:長度1個字節(jié),固定值01H。 </p><p>  [廣播地址]:FFH</p><p>  [信息長度]:表示命令和參數(shù)的總字節(jié)數(shù),不包括開始標志、地址和校驗的長度。</p><p>  [校

60、 驗]:長度1個字節(jié),是開始標志、地址、信息長度、命令和參數(shù)中所有字節(jié)的異或值。</p><p><b>  [命令和數(shù)據(jù)]:</b></p><p><b>  通訊測試0XA1</b></p><p>  [功能]:測試單片機與模塊通訊是否正常</p><p><b>  [命令]:

61、A1H</b></p><p><b>  [參數(shù)]:無</b></p><p>  模塊送回尋卡方式,讀卡塊號。若命令校驗出錯,送回33H。</p><p>  設置尋卡方式,清讀寫器狀態(tài)到上電時的狀態(tài)</p><p><b>  [命令]:A3H</b></p><

62、;p><b>  [參數(shù)]:無</b></p><p>  [功能]設置模塊尋卡方式,讀卡塊號,數(shù)據(jù)區(qū)密碼到上電時的狀態(tài), 數(shù)據(jù)區(qū)密碼在上電時為FF FF FF FF FF FF。模塊返回01、成功標志55H;若命令校驗出錯,送回33H。若命令校驗出錯,送回33H,</p><p>  設置尋卡方式、讀寫數(shù)據(jù)塊號數(shù)據(jù)區(qū)密碼</p><p>

63、;<b>  [命令]:A4H</b></p><p>  [參數(shù)]:尋卡方式:0或1;</p><p>  讀寫數(shù)據(jù)塊號:0-63(S50)/0-255(S70);</p><p>  數(shù)據(jù)區(qū)密碼:6 Bytes。模塊返回01、成功標志55H;若命令校驗出錯,送回33H。</p><p><b>  讀數(shù)據(jù)記

64、錄</b></p><p>  [功能] 在讀卡器已經(jīng)讀好缺省塊號的數(shù)據(jù)后,上位機從讀卡器讀該數(shù)據(jù)記錄,并決定是否關卡。</p><p><b>  [命令]A7H</b></p><p>  [參數(shù)] 是否需要關卡標志:0(不需要關卡)或者1(需要關卡)</p><p>  讀卡器送回:是否已經(jīng)下載過的標志

65、(該字節(jié)若為00,表示還沒下載,若為1,表示已經(jīng)下載)、缺省的塊號,以及從讀卡器里讀取的一條記錄,共4個字節(jié)(卡號)+16 字節(jié)數(shù)據(jù),如果讀卡器此時沒有刷卡記錄可以送給主機,發(fā)送尋到的卡號(4 個字節(jié))和77h 給主機,如果尋卡失敗,那么4 字節(jié)的卡號為 0 0 0 0。</p><p><b>  讀指定數(shù)據(jù)塊</b></p><p>  [功能]從卡上讀取指定塊的

66、數(shù)據(jù)。</p><p><b>  [命令]A8H</b></p><p>  [參數(shù)]所要讀塊號:0-63(S50)/0-255(S70);</p><p>  訪問的密碼: M1…M6</p><p>  驗證密碼:0-密碼A,1-密碼B</p><p>  是否需要關卡的標志:0(不需要關卡

67、)或者1(需要關卡)</p><p>  讀卡器送回:4個字節(jié)(卡號)+16 字節(jié)數(shù)據(jù),如果讀卡器此時讀卡失敗,發(fā)送33h給主機。</p><p><b>  寫數(shù)據(jù)</b></p><p>  [功能]往卡上缺省指定塊寫數(shù)據(jù)。</p><p><b>  [命令]A9H</b></p>

68、<p>  [參數(shù)]所要寫入的卡號:4 字節(jié)</p><p>  所要寫入的數(shù)據(jù):16 字節(jié)</p><p>  是否需要關卡的標志:0(不需要關卡)或者1(需要關卡)</p><p>  讀卡器送回:返回01、成功標志55H、當前尋卡方式,如果讀卡器此時寫卡失敗,發(fā)送33h</p><p><b>  寫指定數(shù)據(jù)塊&

69、lt;/b></p><p>  [功能]往卡上指定塊的寫數(shù)據(jù)。</p><p><b>  [命令]AAH</b></p><p>  [參數(shù)]所要寫卡的卡號:4 字節(jié)。</p><p>  所要寫入的塊號:0-63(S50)/0-255(S70)。</p><p>  訪問該塊需要的密碼

70、:6 字節(jié)</p><p>  驗證密碼:0-密碼A,1-密碼B</p><p>  所要寫入的數(shù)據(jù):16 字節(jié)</p><p>  是否需要關卡的標志:0(不需要關卡)或者1(需要關卡)</p><p>  讀卡器送回:返回01、成功標志55H、當前尋卡方式,如果讀卡器此時寫卡失敗,發(fā)送33h給主機。</p><p>

71、;<b>  關卡</b></p><p>  [功能]關掉的M1 卡片,這個命令不僅僅是關卡,還讓讀卡電路恢復到主動尋卡狀態(tài)。</p><p><b>  [命令]ABH</b></p><p><b>  [參數(shù)]無</b></p><p>  讀卡器送回:返回01、成功標

72、志55H、當前尋卡方式,如果接收命令失敗,發(fā)送33h 給主機。</p><p><b>  查詢模塊狀態(tài)</b></p><p>  [功能]查詢模塊是否已經(jīng)下載過塊號和密碼,以及尋卡方式。</p><p><b>  [命令]ACH</b></p><p><b>  [參數(shù)]無<

73、/b></p><p>  讀卡器送回:返回01、是否已經(jīng)下載過的標志(該字節(jié)若為00,表示還沒下載,若為1,表示已經(jīng)下載)、已下載密碼塊號狀態(tài),當前尋卡方式,如果接收命令失敗,發(fā)送33h 給主機。</p><p><b>  系統(tǒng)軟件設計</b></p><p><b>  軟件總體設計</b></p>

74、<p>  系統(tǒng)的軟件是基于UP-NETARM2410-S(S3C2410芯片)和Linux操作系統(tǒng),通過模塊化的設計,完成對商品信息、會員信息、位置信息的識別、查詢、管理、操作與顯示。軟件系統(tǒng)流程圖如圖 3所示。系統(tǒng)的圖形界面使用Linux平臺的Qt/Embedded Version 3.3.4開發(fā),采用Qt特有的信號和槽(Signals and Slot) 機制設計全新的圖形界面和應用程序。各個圖形界面采用模擬“窗口棧

75、”的形式管理,將所有界面通過QWidget類reparent函數(shù)轉換為主窗口的子窗口,并限定所有子窗口都不擁有自我顯示的權限,而是在需要顯示的時候向主窗口發(fā)出信號申請顯示,由主窗口進行統(tǒng)一調度。</p><p><b>  圖 3 系統(tǒng)流程圖</b></p><p>  該系統(tǒng)按照CS模式設計。在Client端用一個主窗口類來顯示所查詢的商品信息。顧客結賬和超市定位窗

76、口在主窗口基礎上,通過QButton類的clicked()信號觸發(fā)。在客戶端通過讀卡模塊獲取非接觸式IC卡上的UID后,通過QSocket類來實現(xiàn)TCP客戶端和服務器端的連接。同時在server端獲取UID后,將根據(jù)UID在數(shù)據(jù)庫中查詢相關的信息。最后將所查詢信息封裝成數(shù)據(jù)塊向Client端返回。</p><p><b>  應用程序設計</b></p><p>&l

77、t;b>  網(wǎng)絡通信設計</b></p><p>  我們使用Socket類來實現(xiàn)TCP客戶端和服務器。TCP是一個傳輸協(xié)議,他成為包括FTP和HTTP的很多應用程序層的互聯(lián)網(wǎng)協(xié)議基礎,也可以用于自定義協(xié)議。TCP是一個基于流的協(xié)議。對于應用程序,數(shù)據(jù)表現(xiàn)為一個長長的流,而不是一個平面文件?;赥CP的高層協(xié)議通常是基于行的或者基于塊的。</p><p>  基于行的協(xié)議

78、把數(shù)據(jù)作為一行文本進行傳輸,每一行都以一個換行符結尾。</p><p>  基于塊的協(xié)議把數(shù)據(jù)作為二進制塊進行傳輸。每一個塊都又是一個Size大小字段和緊跟它的一個Size字節(jié)的數(shù)據(jù)組成。</p><p>  QSocket繼承了QIODevice,所以它可以通過使用QDataStream或者QTextStream來進行讀取和寫入。當我們從網(wǎng)絡中讀取數(shù)據(jù)和從文件中讀取數(shù)據(jù)時,有一個需要注意

79、的不同是,我們在使用這個>>操作符之前必須確認我們已經(jīng)從另一段接受了足夠多的數(shù)據(jù)。</p><p>  以系統(tǒng)軟件中商品信息模塊為例。在系統(tǒng)中我們?yōu)樯唐沸畔⒛K設計了兩個類:MarketClient和ClientSocket。其中MarketClient是移動終端中商品信息的窗口類,我們在這個窗口類上實現(xiàn)了通過QSocket與服務器間的通信。同時我們將設置一個blockSize變量來解析從服務器接受的

80、塊數(shù)據(jù)。這一流程分為以下幾個步驟:</p><p>  當MarketClient通過讀卡模塊讀取非接觸式IC卡中的商品UID信息信號時,MarketClient類中的connectionServer()槽被執(zhí)行。我們在QSocket對象上調用connectionToHost()連接到服務器。connectionToHost()調用是異步的,總是立即返回的。連接通常會在稍后被建立。當連接被建立起來并且運行的時候,

81、QSocket對象發(fā)射connected()信號,或者如果連接失敗,發(fā)射error(int)(帶有一個錯誤號)信號。最后我們設置blockSize變量為0。blockSize變量存儲從服務器接受的下一個塊的長度。這里設置為0,說明我們不知道下一個塊的大小。</p><p>  當QSocket對象發(fā)射connection()信號時,表示一個連接已經(jīng)建立。sendRequest()槽將被執(zhí)行。這個槽的任務是生成一個

82、到服務器的請求,其中包括通過讀卡模塊獲的商品UID信息。請求格式如[表 2]所示。</p><p>  表 2 sendRequest()請求的數(shù)據(jù)格式</p><p>  我們最初寫入0作為塊的大小,然后一次寫入其他數(shù)據(jù)。然后在輸入輸出設備上(后臺是由一個QDataStream創(chuàng)建的QBuffer)調用at(0)重新移動道字節(jié)數(shù)組的開始處,并且使用塊的數(shù)據(jù)大小覆蓋最初的0。這個大小是通過

83、塊的大小減去sizeof(Q_UINT16)得到的,也就是去掉最前面塊大小那個字段所占用的空間。在這之后,我們在QSocket上調用writeBlock()向服務器發(fā)送這個塊。</p><p>  發(fā)送請求到服務器端后,MarketClient類還將負責接受從服務器端傳輸?shù)臄?shù)據(jù)。這時MarketClient中的updataListView()槽被連接到QSocket的readyRead()信號,只要QSocket

84、以及從服務器收到新數(shù)據(jù),該信號就會被發(fā)射。</p><p>  如果blockSize變量為0,這也就是說還沒有讀取到下一個塊的大小。我們嘗試去讀取它。服務器使用一個大小為0xFFFF來表示沒有跟多的數(shù)據(jù)可以接收,所以如果讀取到該值,就知道已經(jīng)達到結尾。如果塊的大小不是0xFFFF,我們嘗試去讀取下一個塊。首先,檢查看看是不是有塊的大小這么多字節(jié)可以讀取。如果沒有,這次就在這里停止。當有更多數(shù)據(jù)可以讀取的時候,r

85、eadyRead()信號將會被再次發(fā)射,并且我們將可以再次嘗試。</p><p>  一旦我們確認一個完整的塊已經(jīng)到達,則可以在QDataStream上安全地使用>>操作符。通過設置QDataStream在QSocket上提取有關的商品信息。從服務器端上接收的塊具有如[表 3]所示:</p><p>  表 3 接收的塊的數(shù)據(jù)格式</p><p>  最

86、后我們重置blockSize變量為0來表示下一個塊的大小是未知的并且需要去讀取。</p><p>  上面簡要介紹了移動購物終端中所實現(xiàn)的Client部分,下面將主要介紹系統(tǒng)的服務器。商品信息模塊的服務器包含兩個類:MarketServer類和ClientSocket類。MarketServer類繼承了QServerSocket,這是一個允許接收來訪TCP連接類。ClientSocket重新實現(xiàn)了QSocket并

87、且處理一個單獨的連接。在這個設計中我們在ClientSocket類中實現(xiàn)了QSocket,而且可以處理多個連接,通過對請求類型的設置,我們在ClientSocket類中可以處理商品、顧客和定位信息的連接請求。</p><p>  MarketServer類重新實現(xiàn)了QServerSocket中的newConnection() 函數(shù)。只要一個客戶端試圖連接到服務器,這個函數(shù)就會被調用。在newConnection(

88、)的構造函數(shù)中,我們可以傳遞端口號給基類的構造函數(shù),同時創(chuàng)建一個ClientSocket對象作為MarketServer對象的孩子,并且我們設置它的套接字ID為提供給我們的數(shù)字。</p><p>  ClientSocket類繼承了QSocket并且封裝了一個客戶端的狀態(tài)。在構造函數(shù)中,我們建立了需要的信號和槽的連接,并且設置blockSize變量為0,表示還不知道由客戶端發(fā)送的塊的大小。其中connection

89、Closed()和delayFinished()信號被連接到deleteLater()。這是一個從QObject繼承的函數(shù),當控制返回到Qt的事件循環(huán)時,它將會刪除對象。這樣就確保當連接被另一端關閉時或者當一個定時的關閉完成時,ClientSocket對象會被刪除。readClient()槽被連接到QSocket的readyRead()信號,如果blockSize為0,我們從讀取blockSize開始,否則我們就已經(jīng)讀取到它了,并且檢查

90、看看是否一個完整的塊已經(jīng)到達。一旦一個完整的塊已經(jīng)為讀取做好準備,我們就讀取它。我們直接在QSocket對象上使用QDataStream并且使用>>操作符來讀取各個字段。</p><p>  一旦讀取完客戶端的請求后,我們準備好一個回復。在這個畢業(yè)設計中我們實現(xiàn)了幾個函數(shù)從數(shù)據(jù)庫中獲得所要的數(shù)據(jù)。這些函數(shù)同客戶端程序中的sendRequest()函數(shù)十分類似。再一次,我們把這個塊寫入QByteArre

91、y,這樣就可以使用writeBlock()發(fā)送數(shù)據(jù)之前知道它的大小。最后發(fā)送0xFFFF表示數(shù)據(jù)的結束。</p><p><b>  表格顯示設計</b></p><p>  在主窗口中使用QListView類來顯示所要查詢的商品信息[圖 4]。在QListView中每一個非空的單元格都被作為一個獨立的QListViewItem對象保存到內存中。這種項類可以在外面被當

92、作數(shù)據(jù)持有者。通過子類化這個項類,我們可以存儲更多的數(shù)據(jù)并且重新實現(xiàn)虛函數(shù)來使用那些數(shù)據(jù)。因此我們可以對QListView中的每一項單元進行操作。在這個QListView中,我們通過使用QlistViewItem::text()來讀取所選中項中的商品價格,在觸發(fā)顧客信息窗口前完成對所選擇商品的總價的計算。而后將總價向顧客信息窗口傳送。同時,用戶可在購物清單中雙擊所選商品,查詢商品的詳細信息。由于在QListView類中提供了對QList

93、ViewItem對象良好的支持,因此通過傳遞QListViewItem,我們可以在新觸發(fā)窗口中對QListViewItem進行一些簡單的操作,并與主窗口QListView對象中所顯示信息進行交互。例如,用戶可以點擊“Up”和“down”按鈕,系統(tǒng)將通過調用QlistViewItem::ItemAbove()和QlistViewItem::ItemBelow()來顯</p><p><b>  圖 4 信

94、息主窗口</b></p><p>  圖 5 商品詳細信息</p><p><b>  數(shù)據(jù)庫模塊設計</b></p><p>  Qt的SQL模塊提供了與平臺以及數(shù)據(jù)庫無關的訪問SQL數(shù)據(jù)庫的接口,還提供了一套把數(shù)據(jù)庫集成到用戶界面中的類。由于在客戶端中我們只要通過讀卡模塊獲得UID信息,再通過QSocket向服務器發(fā)送請求,服務

95、器端響應后從服務器數(shù)據(jù)庫獲得相應的數(shù)據(jù)信息。因此在客戶端中我們沒有過多得涉及到有關數(shù)據(jù)庫模塊的具體操作。這一部分是在服務器端完成的。由于在后面一章節(jié)中將詳細介紹Qt下數(shù)據(jù)庫的使用,這里只是簡要得介紹Qt環(huán)境下的數(shù)據(jù)庫連接。</p><p>  為了便于系統(tǒng)設計,我們單獨設計了一個connection.h用以連接數(shù)數(shù)據(jù)庫。在這個connection.h中我們聲明了createOneConnection()和crea

96、teConnects()兩個內聯(lián)函數(shù)并且在每次我們需要它的時候包含它。</p><p>  在createOneConnection()中我們調用QSqlDatabase::addDatabase()來創(chuàng)建QsqlDatabase對象。addDatabase()的參數(shù)指定Qt必須使用一個數(shù)據(jù)庫驅動來訪問這個數(shù)據(jù)庫。在這里我們使用的Mysql。Qt包含的驅動有:</p><p>  QODB

97、C3(ODBC)、QMYSQL3(MYSQL)、QOCI8(Oracle)、QTDS7(Sybase Adaptive Server)、QPSQL7(PostgreSQL)和QDB2(IBM DB2)。相應的驅動可以在編譯Qt/Embedded的過程中通過./configure –sql-driver的命令獲得。然后就可以設置數(shù)據(jù)的主機名、數(shù)據(jù)庫名、用戶名和密碼,并且試圖打開連接。</p><p>  在crea

98、teConnections()中,我們創(chuàng)建了3個到Market數(shù)據(jù)庫的相同連接。我們沒有給第一個連接起名字;當我們不指定數(shù)據(jù)庫名稱時他將會被默認使用。另外兩個的名字分別為PRODUCT和GUEST。它們會被商品信息模塊和顧客信息模塊所使用。</p><p><b>  自動結賬子系統(tǒng)設計</b></p><p>  在用戶完成商品選購后,系統(tǒng)將自動計算出所選購商品的總

99、額。如果此時接收到移動購物終端的結賬請求和出口信息,系統(tǒng)將自動調用顧客窗口進行結賬(在我們設計的測試中顧客窗口的激發(fā)是通過一個QButton類的clicked()信號觸發(fā)的)。</p><p>  在顧客窗口中我們設計一個小鍵盤供用戶輸入密碼來登錄。通過讀卡模塊獲得的顧客UID將會和用戶輸入密碼,商品總額通過QSocket一同發(fā)往客戶端??蛻舳藢⒔邮苓@些信息,并查詢數(shù)據(jù)庫來驗證顧客身份。如果驗證通過,系統(tǒng)將會在該

100、用戶的賬戶余額上自動扣除商品總額,并向客戶端放送交易成功的信息和當前用戶的賬戶余額。同時原購物清單將清空,一次購物的過程將結束。Client端將重新等待顧客選購商品。</p><p>  如果驗證顧客身份失敗,服務器將向Client端發(fā)送錯誤信息,Client端提示出錯并且重新等待顧客登錄,如圖 6所示。直到購物完成或者用戶退出購物終端。</p><p><b>  圖 6 顧客

101、窗口</b></p><p><b>  定位子系統(tǒng)設計</b></p><p>  顧客在進行購物時,可通過移動購物終端實現(xiàn)在超市內的定位。我們在系統(tǒng)設計時僅僅模擬了超市定位的動作。我們假設購物終端從讀卡模塊中獲得遍布超市內的定位標簽中的數(shù)據(jù),可以在移動終端中將當前的區(qū)域位置顯示出來,這和我們通過讀卡模塊獲得商品信息的流程類似。當定位模塊獲得從讀卡模塊傳

102、來的定位信息時,定位模塊中的connectionServer()槽將被執(zhí)行,模塊也將通過在QSocket對象上調用connectionToHost()來連接與服務器進行交互,而后服務器端將處理所得信息,將查詢得到的定位區(qū)域告知移動終端(client端)。這一步驟可以參照上文4.2.1章節(jié)中的內容。定位子系統(tǒng)模塊如[圖 7]所示。在定位模塊中Merchandise Orientation將顯示從商品購物清單中所選擇的商品的位置。</

103、p><p>  圖 7 定位模塊設計</p><p><b>  服務器端設計</b></p><p><b>  數(shù)據(jù)庫設計</b></p><p>  本系統(tǒng)采用Mysql-server-5.1.7作為服務器端數(shù)據(jù)庫。系統(tǒng)數(shù)據(jù)庫包含商品信息、會員信息和位置信息。而且電子標簽中的UID能夠唯一地確定這

104、些信息,因此建立了商品信息表格(goods)、顧客信息表格(guests)、位置信息表格(areas),并以商品編號、顧客編號和位置信息編號作為主鍵確定唯一的記錄。在設計中,我們設定一個區(qū)域內存放多個商品,因此在商品信息表格(goods)中設置areaid字段作為鏈接位置信息表格(areas)的外鍵。設計的關系型數(shù)據(jù)庫結構如表 4 數(shù)據(jù)庫結構所示(表中帶*的字段名為主鍵)。</p><p><b>  

105、表 4 數(shù)據(jù)庫結構</b></p><p><b>  后臺管理</b></p><p>  為便于對系統(tǒng)數(shù)據(jù)庫進行管理,我們制作了一個簡單的后臺管理程序[圖 8],這樣就可以對系統(tǒng)數(shù)據(jù)庫進行增、刪、修改等操作。該后臺管理程序的主界面是由Qt類庫中的QDataTable類實現(xiàn)的。QDataTable類是一個支持瀏覽和編輯的與數(shù)據(jù)庫相關的QTable窗口部件

106、。它通過QSqlCursor和數(shù)據(jù)庫進行交互。通過QDataTable類的支持,可以在表格中的上下文菜單中插入、更新或者刪除表格項,當確認操作后,這些修改將會被應用到數(shù)據(jù)庫中。如果需要我們也可以為相關的游標創(chuàng)建一個只讀的QDataTable。這時,基于QSqlCursor的QDataTable類是只讀的,并不提供上下文菜單。</p><p>  圖 8 后臺管理程序</p><p>  在

107、后臺管理程序中提供兩個QDataTable表,其中一個表goodtable,顯示商品信息;另一個表areatable顯示區(qū)域信息。當我選擇areatable中的區(qū)域選項時,QDataTable類的currentChanged()信號將被觸發(fā),goodtable將調用setFilter()來刷新表格顯示所選區(qū)域中的商品信息,并且調用refresh()來強制表格使用相關數(shù)據(jù)重新組裝自己。</p><p>  為了管理

108、區(qū)域信息和顧客信息,我們提供了GoodForm和AreaForm兩個窗口類對區(qū)域和顧客信息進行管理。兩個窗口類通過QButton類的clicked()信號觸發(fā)。在窗口類中同樣使用QDataTable來顯示信息。</p><p>  在程序中我們使用Qt/Embedded庫中的QSqlCursor類,這是一個繼承了QSqlQuery的高層類并且擴展了一些很方便的函數(shù),這樣我們就可以避免直接敲入SQL語句來執(zhí)行最常用

109、的SQL操作:Select、Insert、Update和Delete。QSqlCursor還可以把QDataTable和數(shù)據(jù)庫綁定起來。</p><p><b>  總結</b></p><p>  本畢業(yè)設計是以現(xiàn)代化超市為背景,將RFID技術與嵌入式技術相結合的一個實踐,充分利用了博創(chuàng)開發(fā)板的資源和嵌入式系統(tǒng)的特點。實現(xiàn)了現(xiàn)代化超市電子購物系統(tǒng)的實時商品查詢、方便

110、顧客購物、縮短購物時間、改善顧客購物體驗等一些重要的特征。在測試過程中,購物終端能夠正確地識別商品和會員信息、維護購物清單、提供商品詳細信息查詢,并與服務器共同實現(xiàn)了自動結賬、數(shù)據(jù)庫維護等功能,達到了畢業(yè)設計的預期目標</p><p>  我們在完成畢業(yè)設計的過程中,學習了Linux環(huán)境下的圖形界面編程,使用Qt/Embedded制作多窗口的系統(tǒng)平臺,并在Qt類庫的支持下實現(xiàn)數(shù)據(jù)與系統(tǒng)數(shù)據(jù)庫之間的交互。我們建立系

111、統(tǒng)的關系型數(shù)據(jù)庫并實現(xiàn)了對數(shù)據(jù)信息的處理。在Qt工具包的支持下我們學習了基于CS模式網(wǎng)絡通信,實現(xiàn)了數(shù)據(jù)在客戶端和服務器間的有效傳輸。而且通過在博創(chuàng)開發(fā)板上的開發(fā)實踐,掌握了嵌入式環(huán)境下的交叉編譯和開發(fā)方式。</p><p>  由于系統(tǒng)硬件設備不能及時到位,我們在測試系統(tǒng)的過程中采用在Linux下搭建Virtual framebuffer虛擬平臺來模擬軟件運行,因此沒有通過讀卡模塊獲取所要信息是我們在畢業(yè)設計過

112、程中比較遺憾的一點。</p><p><b>  致謝語</b></p><p>  在我們開發(fā)這個現(xiàn)代化超市電子購物系統(tǒng)中,始終得到許多人的幫助,我首先要感謝的是我們的指導老師xx教授。xx老師給予了我們極大的幫助和支持,她在百忙之中為我們小組講解了這次項目的整體設計要求,每周抽出時間聽取我們項目進展情況,并對系統(tǒng)的開發(fā)提出了自己的意見和項目改進上的建議,讓我們在項

溫馨提示

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

評論

0/150

提交評論