IC卡消費(fèi)系統(tǒng)的上位機(jī)程序設(shè)計(jì)_第1頁(yè)
IC卡消費(fèi)系統(tǒng)的上位機(jī)程序設(shè)計(jì)_第2頁(yè)
IC卡消費(fèi)系統(tǒng)的上位機(jī)程序設(shè)計(jì)_第3頁(yè)
IC卡消費(fèi)系統(tǒng)的上位機(jī)程序設(shè)計(jì)_第4頁(yè)
IC卡消費(fèi)系統(tǒng)的上位機(jī)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、IC卡消費(fèi)系統(tǒng)的上位機(jī)程序設(shè)計(jì)摘 要隨著人們生活水平的提高,人們對(duì)生活中的便利性提出了更高的要求,希望有一種簡(jiǎn)單、安全、實(shí)用的方式。該設(shè)計(jì)是在有線通信的基礎(chǔ)上,構(gòu)建起PC機(jī)和單片機(jī)的通信,PC機(jī)通過串口向單片機(jī)發(fā)送指令,單片機(jī)識(shí)別正確后,單片機(jī)向消費(fèi)系統(tǒng)主界面發(fā)送IC卡數(shù)據(jù),進(jìn)而實(shí)現(xiàn)IC卡的讀取、充值與初始化。上位機(jī)部分,通過調(diào)用MSComm控件接收數(shù)據(jù)、處理數(shù)據(jù)和顯示數(shù)據(jù)。本設(shè)計(jì)的重點(diǎn)是剖析串口通信的實(shí)現(xiàn)與消費(fèi)系統(tǒng)的運(yùn)行,探討軟件的設(shè)計(jì)方案。關(guān)鍵詞 IC卡; MSComm控件; 串口通信 THE PROGRAM DESIGN OF UPPER COMPUTER BELONGINGTO IC

2、CARDS CONSUMPTION SYSTEMSABSTRACTWith the improvement of peoples living standard, people put forward a higher convenience requirement in daily lives, they hope a simple, safe and practical way to replace the cash and ticket transaction today. The design is based on the wirecommunication, building up

3、 a communication between PC and MCU, the PC send an instruction to MCU via serial port, after MCU identifies the instruction correctly, the MCU sends the IC card data to Main Interface of the consumption system to realize the reading, recharging and initiating. The upper computer part receives, proc

4、esses and shows data by invoking MSComm control widget. The key point of this design is to analysis the relationship between the realization of serial port communication and the operation of the consumption system, and to discuss the software design scheme. KEY WORDS IC card; Mscomm control; serial

5、commmunication目 錄摘 要IABSTRACTII1 緒論11.1 IC卡的簡(jiǎn)介11.2 IC卡現(xiàn)狀及發(fā)展趨勢(shì)21.3 課題內(nèi)容32 IC卡消費(fèi)系統(tǒng)的系統(tǒng)設(shè)計(jì)42.1 IC卡消費(fèi)系統(tǒng)的需求分析42.2消費(fèi)系統(tǒng)功能模塊的設(shè)計(jì)42.3 消費(fèi)系統(tǒng)的架構(gòu)圖53 串口通信63.1 RS-232簡(jiǎn)介63.1.1 RS-232C的信號(hào)73.1.2 電氣特性73.1.3 RS-232C的EIA電平和TTL電平轉(zhuǎn)換73.1.4 串口通信速率84 上位機(jī)系統(tǒng)設(shè)計(jì)94.1 VB 6.0 概述94.2 MSComm控件104.2.1 MSComm控件的調(diào)用114.2.2 MSComm控件處理通信的方式12

6、4.2.3 MSComm控件的常用屬性134.2.4 MSComm控件的事件144.2.5 MSComm控件通信步驟154.2.6 Visual Basic程序訪問串口的方式164.3 API函數(shù)164.3.1 動(dòng)態(tài)鏈接庫(kù)與API函數(shù)164.4 窗體對(duì)象174.4.1 窗體的主要屬性174.4.2 窗體的主要對(duì)象194.4.3 窗體的主要方法195 系統(tǒng)調(diào)試與實(shí)現(xiàn)215.1 串口調(diào)試與實(shí)現(xiàn)215.2 IC卡消費(fèi)系統(tǒng)調(diào)試與實(shí)現(xiàn)23結(jié)束語28致 謝29參考文獻(xiàn)30附 錄31 1 緒論1.1 IC卡的簡(jiǎn)介 IC卡是指集成電路卡,我們一般用的公交車卡就是IC卡的一種,一般常見的IC卡采用射頻技術(shù)與IC

7、卡的讀卡器進(jìn)行通訊.IC卡與磁卡是有區(qū)別的,IC卡是通過卡里的集成電路存儲(chǔ)信息,而磁卡是通過卡內(nèi)的磁力記錄信息.IC卡的成本一般比磁卡高,但保密性更好。IC卡 (Integrated Circuit Card,集成電路卡)是繼磁卡之后出現(xiàn)的又一種新型信息工具。IC卡在有些國(guó)家和地區(qū)也稱智能卡(smart card)、智慧卡(intelligent card)、微電路卡(microcircuit card)或微芯片卡等。它是將一個(gè)微電子芯片嵌入符合ISO 7816標(biāo)準(zhǔn)的卡基中,做成卡片形式;已經(jīng)十分廣泛地應(yīng)用于包括金融、交通、社保等很多領(lǐng)域。 IC卡工作的基本原理是:射頻讀寫器向IC卡發(fā)一組固定

8、頻率的電磁波,卡片內(nèi)有一個(gè)IC串聯(lián)協(xié)振電路,其頻率與讀寫器發(fā)射的頻率相同,這樣在電磁波激勵(lì)下,LC協(xié)振電路產(chǎn)生共振,從而使電容內(nèi)有了電荷;在這個(gè)電荷的另一端,接有一個(gè)單向?qū)ǖ碾娮颖?,將電容?nèi)的電荷送到另一個(gè)電容內(nèi)存儲(chǔ),當(dāng)所積累的電荷達(dá)到2V時(shí),此電容可作為電源為其它電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接受讀寫器的數(shù)據(jù)。 接觸式IC卡接口技術(shù)原理 IC卡讀寫器要能讀寫符合ISO7816標(biāo)準(zhǔn)的IC卡。IC卡接口電路作為IC卡與IFD內(nèi)的CPU進(jìn)行通信的唯一通道,為保證通信和數(shù)據(jù)交換的安全與可靠,其產(chǎn)生的電信號(hào)必須滿足下面的特定要求。 IC卡自上世紀(jì)70年代誕生以來得到了很大的發(fā)展,現(xiàn)在IC卡已

9、經(jīng)逐步進(jìn)入了包括金融、通信、醫(yī)療、公交、身份識(shí)別等在內(nèi)的多個(gè)應(yīng)用領(lǐng)域,使用IC卡的人也越來越多。接觸式IC卡作為IC卡的一種重要形式,近年來同樣得到了很大的發(fā)展。1.2 IC卡現(xiàn)狀及發(fā)展趨勢(shì) IC卡分接觸式IC卡,非接觸式IC卡(感應(yīng)式)和CPU卡,安全性按順序?yàn)橛傻偷礁?。接觸式IC卡基本上懂點(diǎn)的人都可以破解,非接觸式IC卡去年已經(jīng)被老外給破解掉了非利浦公司的加密方式,所以目前國(guó)內(nèi)建設(shè)部開始大力推廣使用CPU卡。應(yīng)用領(lǐng)域:接觸式IC卡又分邏輯加密卡和存儲(chǔ)卡,存儲(chǔ)卡沒有密碼驗(yàn)證功能,本質(zhì)上相當(dāng)于一個(gè)U盤或磁條卡,一般用在水表、電表這些地方;邏輯加密卡有基本的密碼驗(yàn)證功能,類似于銀行柜員機(jī),如果連

10、續(xù)三次密碼輸入錯(cuò)誤就自動(dòng)鎖死,一般用于要求不高,范圍不廣,具有消費(fèi)功能的地方比如會(huì)所、餐館等;非接觸式IC卡目前應(yīng)用很廣泛,每個(gè)扇區(qū)都有獨(dú)立的密碼,每個(gè)扇區(qū)可以實(shí)現(xiàn)不同的功能,廣泛應(yīng)用于一卡通系統(tǒng);CPU卡目前使用剛起步,接觸式CPU卡多用于社會(huì)保障系統(tǒng),非接觸式CPU卡即將取代非接觸式IC卡應(yīng)用于安全要求高的一卡通系統(tǒng)比如城市一卡通等(含公交系統(tǒng))。接觸式IC卡作為IC卡的一種重要形式,近年來同樣得到了很大的發(fā)展。目前市場(chǎng)上最常見的非接觸式IC卡是非接觸式邏輯加密卡,這類IC卡憑借其良好的性能和較高的性價(jià)比得到了廣大用戶的青睞,并已被廣泛應(yīng)用于公交、醫(yī)療、校園一卡通,門禁等領(lǐng)域。由于非接觸式

11、邏輯加密卡芯片采用的是流密碼技術(shù),密鑰長(zhǎng)度也不是很長(zhǎng)(比較典型的密碼長(zhǎng)度是Mifare的48bit),因此邏輯加密卡芯片普遍存在著一定的安全隱患,有被黑客破解的可能。在金融、身份識(shí)別、電子護(hù)照等對(duì)安全要求比較高的領(lǐng)域目前更傾向于使用內(nèi)嵌微處理器的非接觸式CPU卡芯片。世博會(huì)的到來,世博會(huì)智能卡應(yīng)用成亮點(diǎn)。隨著中國(guó)經(jīng)濟(jì)實(shí)力的不斷增強(qiáng),近年越來越引起世界的廣泛關(guān)注,繼2008年中國(guó)北京奧運(yùn)會(huì)之后,2010年中國(guó)又將迎來一個(gè)世界性的盛會(huì)上海世博會(huì)!參觀人次在7000萬人次以上。從有關(guān)部門獲悉,2010年上海世博會(huì)將鼓勵(lì)并幫助參展者建造永久性展館,在世博會(huì)結(jié)束后作為各國(guó)歷史文化和經(jīng)濟(jì)科技的展示館。20

12、10年上海世博會(huì)將成為真正意義上的國(guó)際交流中心,成為永不落幕的世博會(huì)。世博商業(yè)卡是為世博特別推出的非銀行現(xiàn)金支付卡,采用非接觸智能卡技術(shù),支付結(jié)算速度與現(xiàn)有普通支付卡相比提高了十倍,適用于商業(yè)服務(wù)小額支付,能在世博園區(qū)內(nèi)外多類型餐飲、零售等商戶進(jìn)行消費(fèi),能有效緩解消費(fèi)高峰時(shí)世博園區(qū)各消費(fèi)網(wǎng)點(diǎn)的收銀壓力。目前,世博商業(yè)卡在世博園區(qū)內(nèi)的覆蓋面已達(dá)80%以上。該卡在全國(guó)郵政、上海電信等網(wǎng)點(diǎn)有售。世博商業(yè)卡使用方便、快捷、安全,能大力改善世博園內(nèi)的消費(fèi)支付環(huán)境,為來自世界各地、共享世博風(fēng)采的參觀者提供了諸多消費(fèi)便利。來自商投集團(tuán)的消息稱該卡的余額將可持續(xù)到年底,屆時(shí)余額可轉(zhuǎn)為商投集團(tuán)名下其它品類通行的

13、預(yù)付費(fèi)卡,與其它支付卡的最大的不同是該卡是目前市面上唯一一張非接觸式支付卡,刷卡時(shí)間與公交卡持平。在這樣一個(gè)大環(huán)境下,IC卡在中國(guó)有革命性的發(fā)展。1.3 課題內(nèi)容本課題研究?jī)?nèi)容為IC卡消費(fèi)系統(tǒng),IC卡消費(fèi)系統(tǒng)提供了IC卡的一些基本功能,可以對(duì)IC卡進(jìn)行讀取,充值,初始化。省去了消費(fèi)的一些不必要的麻煩,提高了管理效率。主要模塊簡(jiǎn)介: 1) 讀取IC卡操作。包括讀取IC卡的卡號(hào)、密碼和當(dāng)前金額。2) 充值系統(tǒng)。當(dāng)卡上金額不多時(shí),可以對(duì)IC卡進(jìn)行充值。3) 初始化系統(tǒng)。點(diǎn)擊初始化按鍵之后,卡號(hào)、密碼和當(dāng)前金額還原到出廠設(shè)置。2 IC卡消費(fèi)系統(tǒng)的系統(tǒng)設(shè)計(jì) 2.1 IC卡消費(fèi)系統(tǒng)的需求分析 IC卡消費(fèi)系

14、統(tǒng)在我國(guó)電信、社會(huì)保障、公安、學(xué)校等已經(jīng)得到了廣泛的應(yīng)用。本消費(fèi)系統(tǒng)用于學(xué)校,為學(xué)生服務(wù)。在系統(tǒng)設(shè)計(jì)的時(shí)候,需要遵循以下原則。u 良好的人機(jī)界面。u 由于該系統(tǒng)的使用對(duì)象比較多,需要有較好的權(quán)限管理。u 方便的數(shù)據(jù)查詢。u 在相應(yīng)的權(quán)限下,充值、初始化、讀取比較方便。消費(fèi)系統(tǒng)應(yīng)分為以下兩個(gè)方面。n 登記:開卡登記、消費(fèi)登記、充值登記、其他收支費(fèi)用登記。n 查詢功能:對(duì)消費(fèi)、充值的信息進(jìn)行查詢。消費(fèi)系統(tǒng)的開發(fā)是一個(gè)動(dòng)態(tài)過程,即開發(fā)隨著環(huán)境和用戶觀念的變化不斷完善;反之,技術(shù)的發(fā)展又可能促進(jìn)用戶觀念的改進(jìn)。在系統(tǒng)設(shè)計(jì)的整個(gè)過程中,應(yīng)當(dāng)具備如下設(shè)計(jì)思想。n 實(shí)用性:盡量選用成熟實(shí)用的技術(shù),使得整個(gè)系

15、統(tǒng)有一個(gè)安全穩(wěn)定的運(yùn)行環(huán)境。n 開放性:該系統(tǒng)在建設(shè)上必須加強(qiáng)標(biāo)準(zhǔn)化及采用同一的技術(shù)規(guī)范,以實(shí)現(xiàn)網(wǎng)絡(luò)互聯(lián)、資源共享、高效運(yùn)行和科學(xué)管理。n 安全性:為保障系統(tǒng)的正常運(yùn)行,以及數(shù)據(jù)的完整性,整個(gè)系統(tǒng)必須有良好的安全性。2.2 消費(fèi)系統(tǒng)功能模塊的設(shè)計(jì) 根據(jù)以上分析,消費(fèi)管理系統(tǒng)的具體功能如圖2-1所示。運(yùn)行主界面讀取IC卡中信息對(duì)IC卡充值初始化IC卡中信息圖2-1 消費(fèi)系統(tǒng)的具體功能2.3 消費(fèi)系統(tǒng)的架構(gòu)圖在消費(fèi)系統(tǒng)具體功能的基礎(chǔ)上,對(duì)讀取和初始化中需要實(shí)現(xiàn)的功能如圖2-2所示。 讀取 卡號(hào) 密碼當(dāng)前金額初始化 卡號(hào) 密碼當(dāng)前金額圖2-2 讀取和初始化功能3 串口通信 串行通信是PC與外界交換信

16、息的一種常用方式。應(yīng)用于數(shù)據(jù)采集或工業(yè)控制時(shí),往往作為前端機(jī)安裝在工業(yè)現(xiàn)場(chǎng),遠(yuǎn)離主機(jī),現(xiàn)場(chǎng)數(shù)據(jù)采用串行通信方式發(fā)往主機(jī)并進(jìn)行處理,以降低通信成本,提高通信可靠性。51系列單片機(jī)自身有全雙工的異步通信接口,實(shí)現(xiàn)串行通信極為方便。3.1 RS-232簡(jiǎn)介RS-232接口實(shí)際上是一種串行通信標(biāo)準(zhǔn),是由美國(guó)EIA(電子工業(yè)協(xié)會(huì))和BELL公司一起開發(fā)的通信協(xié)議,它對(duì)信號(hào)線的功能、電氣特性、連接器等都作了明確的規(guī)定,RS-232是其中的一個(gè)版本。RS-232C9針D型插座與單片機(jī)的連接如圖3-1所示。 圖3-1 RS-232C9針D型插座與單片機(jī)的連接3.1.1 RS-232C的信號(hào)RS-232除通過它

17、傳輸數(shù)據(jù)(TXD和RXD)外,還對(duì)雙方的互傳氣協(xié)調(diào)作用,這就是握手信號(hào)。9跟信號(hào)分為兩類:u 基本的數(shù)據(jù)傳輸引腳TXD(transmitted data):數(shù)據(jù)發(fā)送引腳。串行數(shù)據(jù)從該引腳發(fā)出。RXD(received data):數(shù)據(jù)接收引腳。串行數(shù)據(jù)由此輸入。GND(groud) 信號(hào)地線。在微機(jī)與微機(jī)、微機(jī)與單片機(jī)、單片機(jī)與單片機(jī)之間,多采用這種連接方式。u 握手信號(hào)RTS(request to send):請(qǐng)求發(fā)送信號(hào)。輸出信號(hào)。CTS(clear to send):清除傳送。是對(duì)RTS的響應(yīng)信號(hào),輸入信號(hào)。DCD(data Carrier detection):數(shù)據(jù)載波檢測(cè)。輸入信號(hào)。

18、DSR(data set ready):數(shù)據(jù)通信準(zhǔn)備就緒。輸入信號(hào)。DTR(data derminal ready):數(shù)據(jù)終端就緒。輸出信號(hào),表明計(jì)算機(jī)已做好接收準(zhǔn)備。3.1.2 電氣特性 RS-232采用的是EIA電平,其規(guī)定如下:在TXD與RXD數(shù)據(jù)線上邏輯1(MARK)時(shí),電壓為-3 -15V.邏輯0(SPACE)時(shí),電壓為+3 +15V.在串行通信中最簡(jiǎn)單的通信只需連接著3根線。在RTS、CTS、DSR、DTR、DCD等控制線上信號(hào)有效(接通,ON狀態(tài),正電壓)時(shí),電壓為+3 +15V。信號(hào)無效(斷開,OFF狀態(tài),負(fù)電壓)時(shí),電壓為-3 -15V。3.1.3 RS-232C的EIA電平

19、和TTL電平轉(zhuǎn)換很明顯,RS-232的EIA標(biāo)準(zhǔn)是以正負(fù)電壓來表示邏輯狀態(tài),與TTL以高低電平表示邏輯狀態(tài)的規(guī)定不同。因此,為了能夠同計(jì)算機(jī)接口或終端的TTL器件連接,必須在EIA電平與TTL電平之間進(jìn)行電平轉(zhuǎn)換。目前較廣泛的使用集成電路轉(zhuǎn)換器件;如MC1488、SN75150芯片可完成TTL電平到EIA電平的轉(zhuǎn)換;而MC1489、SN75154芯片可實(shí)現(xiàn)EIA電平到TTL電平的轉(zhuǎn)換。但它們共同需要+12、12兩種電源,使用不方便。而美國(guó)MAXIM公司的MAX232芯片可完成TTL和EIA之間的雙向電平轉(zhuǎn)換,且值需單一的+5V電源,因此獲得了廣泛應(yīng)用。接口電路如圖3-2所示。圖3-2 RS23

20、2接口電路3.1.4 串口通信速率在串行通信中,用“波特率”來描述數(shù)據(jù)的傳輸速率.所謂波特率,即每秒鐘傳送的二進(jìn)制位數(shù),其單位為“bps”.國(guó)際上規(guī)定了一個(gè)標(biāo)準(zhǔn)波特率系列: 300bps、600bps、1200bps、1800bps、2400bps、4800bps、9600bps、14.4Kbps、19.2Kbps、28.8Kbps等。大多數(shù)串行接口電路的接收波特率和發(fā)送波特率可以分別設(shè)置,但接收方的接收波特率必須與發(fā)送方的發(fā)送波特率相同,這樣正確的通信才能建立。4 上位機(jī)系統(tǒng)設(shè)計(jì)單片機(jī)對(duì)IC卡的驗(yàn)證信息正確后,需要把IC卡中的信息通過串口傳給PC機(jī),用VB中MSComm控件可以對(duì)接收到的信息

21、進(jìn)行讀取、充值與初始化,本章重點(diǎn)介紹VB中的一些基礎(chǔ)知識(shí)及MSComm控件。利用Visual Basic開發(fā)串口通信程序主要有兩種方法:一是使用MSComm串口控件;二是調(diào)用Windows API函數(shù)。4.1 VB 6.0 概述Visual Basic 是在Windows環(huán)境中廣泛使用的應(yīng)用程序設(shè)計(jì)語言,它以Basic語言為基礎(chǔ),具有可視化、面向?qū)ο蟪绦蛟O(shè)計(jì)、事件驅(qū)動(dòng)機(jī)制等特點(diǎn)。 VB啟動(dòng)后,首先顯示“新建工程”對(duì)話框,如圖4-1所示。圖4-1 “新建工程”對(duì)話框在“新建工程”對(duì)話框中雙擊新建選項(xiàng)中的“標(biāo)準(zhǔn)EXE”選項(xiàng)或直接“打開”按鈕,進(jìn)入VB的集成開發(fā)環(huán)境,如圖4-2所示。在該環(huán)境下,可進(jìn)

22、行應(yīng)用程序的設(shè)計(jì)。圖4-2 VB集成開發(fā)環(huán)境4.2 MSComm控件MSComm控件全稱為Microsoft Communications Control,是Microsoft公司提供的串行通信編程ActiveX 控件,它既可以用來提供簡(jiǎn)單的串行端口通信功能,可以用來創(chuàng)建功能完備的、事件驅(qū)動(dòng)的高級(jí)通信工具。MSComm控件在串口編程時(shí)非常方便,程序員不必花時(shí)間去了解較為復(fù)雜的API函數(shù),而且在Visual Basic、Visual C+、Delphi等語言中均可使用。使用它可以建立與串行端口的連接,通過串行端口連接到其他通信設(shè)備(例如調(diào)制解調(diào)器),發(fā)出命令,交換數(shù)據(jù),以及監(jiān)視和響應(yīng)串行連接中發(fā)

23、生的事件和錯(cuò)誤。利用它可以進(jìn)行諸如撥打電話號(hào)碼、監(jiān)視串行端口的輸入數(shù)據(jù)乃至創(chuàng)建功能完備的終端端口等。4.2.1 MSComm控件的調(diào)用單擊【工程部件】菜單項(xiàng),打開【部件】對(duì)話框,選擇【Microsoft Comm Control 6.0】控件列表項(xiàng),單擊【確定】按鈕,如圖4-3所示。圖4-3 添加控件 然后可以看到在工具箱中增加了一個(gè)像電話的圖標(biāo),單擊此圖標(biāo),并在窗體中拖出一個(gè)矩形,如圖4-4所示,這時(shí)MSComm控件就添加到工程中了。圖4-4 將控件添加到工程4.2.2 MSComm控件處理通信的方式MSComm控件控件通過串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通信功能。它提供下列兩種處

24、理通信的方式。(1)事件驅(qū)動(dòng)方式是處理串行端口交互作用的一種非常有效的方法。在許多情況下,在事件發(fā)生時(shí)程序會(huì)希望得到通知,例如,在串口接收緩沖區(qū)中有一個(gè)字符到達(dá)或一個(gè)變化發(fā)生時(shí),程序都可以利用MSComm控件的OnComm事件捕獲并處理這些通信事件;OnComm事件還可以檢查和處理通信錯(cuò)誤。在程序的每個(gè)關(guān)鍵功能之后,可以通過檢查CommEvent屬性的值來查詢事件和錯(cuò)誤。在程序設(shè)計(jì)中,可以在OnComm事件處理函數(shù)中加入自己的處理代碼,一旦事件發(fā)生,即可自動(dòng)執(zhí)行該段程序。這種方法的優(yōu)點(diǎn)是程序響應(yīng)及時(shí),可靠性高。(2)查詢方式。在程序的每個(gè)關(guān)鍵功能之后,可以通過檢查CommEvent屬性的值來查

25、詢事件和錯(cuò)誤。如果應(yīng)用程序較小,并且是自保持的,這種方法可能是更可取的。例如:如果寫一個(gè)簡(jiǎn)單的電話撥號(hào)程序,則沒有必要對(duì)毎接收一個(gè)字符都產(chǎn)生事件,因?yàn)槲ㄒ坏却邮盏淖址钦{(diào)制解調(diào)器的“OK”響應(yīng)。輪詢方式的進(jìn)行可用計(jì)時(shí)器或DoLoop程序?qū)崿F(xiàn)。查詢方式實(shí)質(zhì)上還是事件驅(qū)動(dòng),但在有些情況下,這種方式顯得更為便捷。4.2.3 MSComm控件的常用屬性MSComm控件的屬性很多,這里介紹串口編程中經(jīng)常用到的幾個(gè)重要屬性。(1)CommPort屬性。語法:MSComm.CommPort=value作用:設(shè)置并返回通訊端口號(hào)。CommPort屬性值Value可以設(shè)置成從1到16的任何值(缺省值為1)表示

26、串口COM1,COM2等。但是如果用PortOpen屬性打開一個(gè)并不存在的端口時(shí),MSComm控件會(huì)產(chǎn)生錯(cuò)誤68(設(shè)備無效)。(2)Settings屬性。語法:MSComm.Settings=value作用:設(shè)置并返回通信參數(shù)。值Value為Strring型,說明通信端口的設(shè)置值。Settings 以字符串的形式設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位參數(shù)。奇偶校驗(yàn)設(shè)置為了進(jìn)行數(shù)據(jù)校驗(yàn),通常是不用的,并設(shè)置為“N”。數(shù)據(jù)位數(shù)指定了代表一個(gè)數(shù)據(jù)塊的比特?cái)?shù)。停止位指出了何時(shí)接收到一個(gè)完整數(shù)據(jù)塊。(3)Input屬性。語法:MSComm1.Input作用:從接收緩沖區(qū)返回和刪除字符。例如,如果希望

27、從接收緩沖區(qū)獲取數(shù)據(jù),并將其顯示在一個(gè)文本框中,可以使用下面的代碼:TxtDisplay.Text = MSComm1.Input(4)OutPut屬性。語法:MSComm1.OutPut=Value作用:向傳輸緩沖區(qū)寫數(shù)據(jù)流。Out Put屬性可以傳輸文本數(shù)據(jù)或二進(jìn)制數(shù)據(jù)。用OutPut屬性傳輸文本數(shù)據(jù),必須定義一個(gè)包含一個(gè)字符串的Variant:發(fā)送二進(jìn)制數(shù)據(jù),必須傳遞一個(gè)包含字節(jié)數(shù)據(jù)的Variant到OutPut屬性。 正常情況下,如果發(fā)送一個(gè)ANSI字符串到應(yīng)用程序,可以以文本數(shù)據(jù)的形式發(fā)送;如果發(fā)送包含嵌入控制字符、Null字符等數(shù)據(jù),要以二進(jìn)制形式發(fā)送。 可用OutPut屬性發(fā)送命

28、令、文字字符串或Byte數(shù)組數(shù)據(jù)。MSComm1.OutPut = “ATDT 555-5555” 發(fā)送AT命令串MSComm1.OutPut = “This is a text string ” 發(fā)送文本字符串該屬性在設(shè)計(jì)時(shí)無效,在運(yùn)行時(shí)為只讀。4.2.4 MSComm控件的事件根據(jù)應(yīng)用程序的用途和功能,在連接到其他設(shè)備過程中,以及接收或發(fā)送數(shù)據(jù)過程中可能需要監(jiān)視并響應(yīng)一些事件和錯(cuò)誤。可以使用OnComm事件和CommEvent屬性捕捉并檢查通信事件和錯(cuò)誤的值。CommEvent屬性返回最近的通信事件和錯(cuò)誤,該屬性在設(shè)計(jì)時(shí)無效,在運(yùn)行時(shí)為只讀。MSComm控件把17個(gè)事件歸為一個(gè)事件OnCo

29、mm,用屬性CommEvent的17個(gè)值來區(qū)分不同的觸發(fā)時(shí)機(jī)。表4.1列出了幾個(gè)可能觸發(fā)OnComm的通信事件,對(duì)應(yīng)的值將在發(fā)生事件時(shí)被寫入CommEvent屬性。表4.1 通信事件常數(shù)定義值常量值 描述ComEvSend 1發(fā)送緩沖區(qū)中的字符數(shù)比SThreshold值低ComEvReceive 2接收到了Rthtrshold個(gè)字符。持續(xù)產(chǎn)生該事件,直到使用Input屬性刪除了接收緩沖區(qū)中的數(shù)據(jù)ComEvCTS 3CTS線發(fā)生變化ComEvDSR 4DSR線發(fā)生變化,當(dāng)DSR從1到0改變時(shí),該事件發(fā)生ComEvCD 5 CD線發(fā)生改變ComEvRing 6檢測(cè)到電話振鈴ComEvEOF 7收到

30、文件結(jié)束符表4.2同樣會(huì)觸發(fā)OnComm事件,并在CommEvent屬性中寫入相應(yīng)的值。表4.2 通信錯(cuò)誤常數(shù)定義值常量值描述ComEventBreak1001 收到了斷開信號(hào)ComEventCTSTO1002Clear To Send Timeout。在發(fā)送字符時(shí),在系統(tǒng)指定的事件內(nèi),CTS(Clear To Send)線是低電平ComEventDSERTO1003Data Set Ready Timeout。在發(fā)送字符時(shí),在系統(tǒng)指定的事件內(nèi),DSR(Data Set Ready)線是低電平ComEventFrame1004數(shù)據(jù)幀錯(cuò)誤。硬件檢測(cè)到一個(gè)數(shù)據(jù)幀錯(cuò)誤ComEventOverrun1

31、006端口溢出。硬件中的字符尚未讀,下一個(gè)字符又到達(dá),并且丟失ComEventCDTO1007Carrier Detect Time。在發(fā)送字符時(shí),在系統(tǒng)指定的事件內(nèi),CD(Carrier Detect)線是低電平。CD也稱為RLSD(Receive Line Signal Detect,接收線信號(hào)檢測(cè))ComEventRxOver1008接收緩沖區(qū)溢出。在接收緩沖區(qū)中沒有空閑ComEventRxParity1009奇偶校驗(yàn)錯(cuò)。硬件檢測(cè)到奇偶校驗(yàn)錯(cuò)誤ComEventTxFull1010發(fā)生緩沖區(qū)已滿。在對(duì)發(fā)送字符排隊(duì)時(shí),發(fā)送緩沖區(qū)已滿ComEventDCB1011檢測(cè)端口DCB(Deceive

32、 Control Block)時(shí)發(fā)生了沒有預(yù)料到的錯(cuò)誤4.2.5 MSComm控件通信步驟 通常我們以下面的步驟來使用Visual Basic的MSComm控件作通信控制。(1) 加入通信部件,也就是MSComm對(duì)象。(2) 設(shè)置通信端口號(hào)碼,即CommPort屬性。(3) 設(shè)置通信協(xié)議,即HandShaking屬性。(4) 設(shè)置傳輸速度等參數(shù),即Settings屬性。(5) 設(shè)置其他參數(shù),若必要時(shí)再加上其他的屬性設(shè)置。(6) 打開通信端口,即PortOpen屬性設(shè)置Ttue。(7) 送出字符串或讀入字符串,使用Input 及Output屬性。(8) 使用完MSComm通信對(duì)象后,將通過端口關(guān)

33、閉。即PortOpen屬性設(shè)成Fasle。4.2.6 Visual Basic程序訪問串口的方式由程序的執(zhí)行到硬件動(dòng)作的完成,就Visual Basic來說可以有兩種方式,其步驟如圖4-5所示。Visual Basic程序MSComm控件Visual Basic的解釋W(xué)indows APIComm.drv設(shè)備的串行端口圖4-5 Visual Basic程序訪問硬件端口的方式4.3 API函數(shù)Visuai Basic目前已成為Windows系統(tǒng)下一種最高靈活的主流開發(fā)工具之一,而調(diào)用API應(yīng)用程序接口則正是對(duì)Visual Basic功能的強(qiáng)有力擴(kuò)充,它使得Visual Basic能夠直接控制和處

34、理PC硬件資源,而不必依賴于MS-DOS系統(tǒng)服務(wù)??梢哉f,正是借助于API 使得Visual Basic既能隱藏大部分Windows編程的難點(diǎn),同時(shí)又提供了使用Windows環(huán)境的靈活性。4.3.1 動(dòng)態(tài)鏈接庫(kù)與API函數(shù)在Windows環(huán)境下,通常使用動(dòng)態(tài)鏈接庫(kù),即DLL(Dynamic Link Libaray)。動(dòng)態(tài)鏈接庫(kù)是一個(gè)函數(shù)庫(kù),是可被其他程序或DLL調(diào)用的函數(shù)集合組合的可執(zhí)行文件模塊。之所以被稱為動(dòng)態(tài)鏈接庫(kù),是因?yàn)镈LL的代碼并不是某個(gè)應(yīng)用程序的組成部分,而是在運(yùn)行時(shí)鏈接到應(yīng)用程序中。Windows的API函數(shù)是應(yīng)用程序接口(Application Programming Int

35、erface)的意思,是一系列用C語言編寫的函數(shù)庫(kù),是附帶在Windows系統(tǒng)內(nèi)部的一個(gè)極其重要的組成部分。其中幾個(gè)核心的動(dòng)態(tài)鏈接庫(kù)見表4-3.表4-3 Windows核心動(dòng)態(tài)鏈接庫(kù)名稱 說明KERNET32.DLL低級(jí)內(nèi)核函數(shù)。用于內(nèi)存管理、任務(wù)管理、文件管理、資源控制及相關(guān)操作USER32.DLL與Windows管理有關(guān)的函數(shù)。包括消息、菜單、光標(biāo)、插入標(biāo)志、計(jì)時(shí)器、通信以及其他大多數(shù)非顯示函數(shù)COMDL32.DLL圖形設(shè)備接口庫(kù)。在該動(dòng)態(tài)鏈接庫(kù)中含有與設(shè)備輸出有關(guān)的函數(shù),包括大多數(shù)繪圖、顯示環(huán)境、圖元文件、坐標(biāo)及字體函數(shù)4.4 窗體對(duì)象 4.4.1 窗體的主要屬性 根據(jù)實(shí)際需要,一個(gè)應(yīng)用

36、程序(或工程)可以含有一個(gè)或多個(gè)窗體對(duì)象,至少必須包含有一個(gè)窗體對(duì)象。窗體對(duì)象有自己的屬性、方法和事件集合,通過合理地使用這些屬性、方法及事件來描述窗體的外觀特征,控制窗體的行為,為工程服務(wù)。窗體的屬性決定窗體的外觀特征,這些特征包括窗體的大小、在整個(gè)屏幕上的位置、顏色等等。為了使窗體能夠滿足不同的需求,VB為窗體定義了許多屬性?!皩傩源翱凇敝兴谐龅膶傩裕ǔS袃刹糠纸M成:屬性名和屬性值。通過“屬性窗口”輸入屬性值時(shí),首先通過拖動(dòng)“屬性窗口”的滾動(dòng)條,找到相關(guān)的屬性名,在屬性值輸入框中輸入該屬性的初始取值,然后按“回車”鍵確認(rèn)。如圖4-6所示。圖4-6 通過“屬性窗口”設(shè)置屬性值這些屬性包括

37、:描述外觀的屬性 Caption:標(biāo)題屬性。 BorderStyle:邊框風(fēng)格屬性。 BackColor和ForeColor:背景色與前景色屬性。 Picture:圖片屬性。描述位置的屬性 Left和Top:左坐標(biāo)和上坐標(biāo)屬性。 Width和Height:寬度和高度屬性。 Moveable:移動(dòng)屬性。描述行為的屬性 Enabled:設(shè)置對(duì)象對(duì)作用在它身上的事件能否響應(yīng)。 Visible:確定窗體在運(yùn)行時(shí)是否在屏幕上可見。其它屬性 Name:名稱。 ControlBox:控制框?qū)傩浴?WindowState:窗口狀態(tài)屬性。WindowState屬性的取值及描述如表4.4所示。表4.4 Windo

38、wState屬性取值及描述取值常量表示描述0vbNormal默認(rèn)值。表示窗體按窗體大小的設(shè)置值表示。1vbMinimized表示窗體以最小化方式顯示,無論窗體大小的設(shè)置如何。2vbMaximized表示窗體以最大化方式顯示,無論窗體大小的設(shè)置如何。 MaxButton和MinButton:最大化按鈕和最小化按鈕屬性。 Font:字體屬性。4.4.2 窗體的主要對(duì)象窗體對(duì)象的事件集合中包含了許多事件,主要包括:u Load和Unload事件:不是用戶的直接動(dòng)作驅(qū)動(dòng)的,而是由系統(tǒng)自動(dòng)觸發(fā)的。u Click和DblClick事件:由用戶的動(dòng)作觸發(fā)的。u Resize事件:在運(yùn)行狀態(tài)下,由于用戶的動(dòng)作

39、或系統(tǒng)的動(dòng)作使窗體的大小被改變,就在窗體大小改變的瞬間,窗體的Resize事件被觸發(fā)。比如窗體從正常顯示狀態(tài)被最小化為圖標(biāo),或從最大化狀態(tài)恢復(fù)為正常顯示狀態(tài)時(shí),窗體的Resize事件均被觸發(fā)。u Paint事件:在運(yùn)行狀態(tài)下,如果出現(xiàn)以下情況之一時(shí),窗體的Paint事件被觸發(fā)。窗體從最小化狀態(tài)恢復(fù)為正常顯示狀態(tài); 全部或部分窗體被其他對(duì)象遮??; 窗體的大小被改變。4.4.3 窗體的主要方法VB為窗體對(duì)象預(yù)定義了許多方法,主要包括:Show方法.Show方法用來激活窗體,即顯示窗體。Hide方法。Hide方法用來隱藏窗體,使窗體不看見。Cls方法。Cls方法清除窗體上用Print方法顯示的所有文

40、本內(nèi)容及用繪圖方法,如Line、Circle等方法給繪制的圖形,但不能清楚通過Picture屬性加載的圖片。Print方法。Print方法用于在窗體上以一定的格式顯示內(nèi)容。 5 系統(tǒng)調(diào)試與實(shí)現(xiàn) 5.1 串口調(diào)試與實(shí)現(xiàn)編譯程序下載到實(shí)驗(yàn)板,打開串口調(diào)試助手,打開串口、關(guān)閉串口、插入IC卡、拔出IC卡、插入IC卡正確后改密依次如下圖所示。打開串口界面如下:圖5-1 打開串口界面關(guān)閉串口助手界面如下:圖5-2 關(guān)閉串口助手界面打開串口助手,插入IC卡后界面如下: 圖5-3 插入IC卡打開串口助手,拔出IC卡后界面如下: 圖5-4 拔出IC卡 打開串口助手,插入IC卡后讀取正確后改密:圖5-5 插入I

41、C卡正確后改密5.2 IC卡消費(fèi)系統(tǒng)調(diào)試與實(shí)現(xiàn)當(dāng)用戶插入IC卡正確后,通過串口,PC機(jī)可以對(duì)IC卡中的信息進(jìn)行讀取,充值及初始化,具體界面依次如下圖所示。IC卡總體界面如下圖所示:圖5-6 IC卡總體界面IC卡界面如下圖所示:圖5-7 IC卡界面讀取IC卡中信息,界面如下:圖5-8 讀取IC卡中信息讀卡后返回界面如下圖所示:圖5-9 讀卡后返回界面IC卡充值界面如下圖所示: 圖5-10 IC卡充值界面IC卡充值后界面如下:圖5-11 IC卡充值后界面IC卡充值后返回界面如下:圖5-12 IC卡充值后返回界面IC卡初始化界面如下: 圖5-13 IC卡初始化界面結(jié)束語畢業(yè)設(shè)計(jì),我選擇的方向是上位機(jī)

42、程序的設(shè)計(jì),在老師的耐心指導(dǎo)下,經(jīng)過堅(jiān)持不懈的努力,我熟悉了單片機(jī)、VB的一些基礎(chǔ)知識(shí),使我對(duì)上位機(jī)的設(shè)計(jì)了解了很多,更多的理解了人性化的串口界面,雖然中間復(fù)習(xí)對(duì)學(xué)習(xí)VB有一定的影響,但是我學(xué)到了課堂上學(xué)不到的知識(shí)和能力,畢業(yè)設(shè)計(jì)使我清楚地認(rèn)識(shí)到團(tuán)結(jié),協(xié)作的重要,能很好的跟別人交流和討論某個(gè)問題,是我最大的收獲。 通過這次畢業(yè)設(shè)計(jì),使我受到了一次用專業(yè)知識(shí)、專業(yè)技能分析和解決問題系統(tǒng)的鍛煉,使我在綜合知識(shí)的選用方面,在設(shè)計(jì)硬件的基本思想。方法方面都向前邁了一大步,為日后成為合格的應(yīng)用型人才打下了良好的基礎(chǔ)。這次在指導(dǎo)老師的幫助下,基本完成了任務(wù),在軟件的設(shè)計(jì)方面有了一定的提高,為今后走上的工作

43、崗位打下了專業(yè)基礎(chǔ)。在這次的畢業(yè)設(shè)計(jì)中,讓我深深地體會(huì)到軟件設(shè)計(jì)不是一件簡(jiǎn)單的事情,它需要設(shè)計(jì)者具有全面的專業(yè)知識(shí),縝密的思維,嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度以及較高分析問題、解決為您提的能力,而我在這些方面都存在很大的不足。在這,我要衷心的感謝XXX老師在我的設(shè)計(jì)過程中給予我的極大幫助,使我能夠完成此次的畢業(yè)設(shè)計(jì)。同時(shí),我也感謝和我同組的同學(xué),應(yīng)為我們的良好的協(xié)作,相互幫助,才得以把這次畢業(yè)設(shè)計(jì)工作完成。致 謝 大學(xué)四年眨眼而過。隨著這大學(xué)期間最后一份答卷的完成,我們短暫的 大學(xué)生活也將劃上一個(gè)圓滿的句號(hào)?;叵肫饋?,點(diǎn)點(diǎn)滴滴都是那樣的刻骨銘心。首先,我非常感謝我的指導(dǎo)老師XXX老師。他在我們的設(shè)計(jì)上花費(fèi)了不少的時(shí)間和精力。在尤老師的悉心指導(dǎo)下,我們的設(shè)計(jì)進(jìn)行的非常的順利。在此,我衷心的感謝XXX老師。其次,在本次設(shè)計(jì)中我查閱了大量的資料,鞏固了所學(xué)的專業(yè)知識(shí),拓寬了知識(shí)面,特別在本設(shè)計(jì)中應(yīng)用的VB程序,使我對(duì)VB有了比較深的了解。在設(shè)計(jì)的制作和與同學(xué)的交流中使我認(rèn)識(shí)到了自己的缺陷和不足,我會(huì)在以后的工作生活中努力改進(jìn)。最后,由于時(shí)間和能力有限,在設(shè)計(jì)中難免有錯(cuò)誤與不足,希望老師和同學(xué)給予批評(píng)與指正。此外,我還要感謝所有對(duì)我傳授過知識(shí)的老師,沒有你們的教誨,也沒有我今天的學(xué)業(yè)成果。謝謝你們!參考文獻(xiàn)1王卓人,鄧晉均,劉宗祥. IC 卡的技術(shù)與應(yīng)用.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論