??? 摘 要: 基于ARM的非接觸" title="非接觸">非接觸IC卡網(wǎng)絡(luò)系統(tǒng)設(shè)計。在ARM上移植μC/OS-II" title="C/OS-II">C/OS-II操作系統(tǒng),嵌入TCP/IP" title="TCP/IP">TCP/IP協(xié)議實現(xiàn)以太網(wǎng)通信;建立SQL Server 2000數(shù)據(jù)庫,編寫Delphi管理軟件,建立ASP動態(tài)網(wǎng)站。該系統(tǒng)具有很強(qiáng)的實時性,其功能和性能都滿足大規(guī)模的非接觸IC卡網(wǎng)絡(luò)管理要求,非接觸IC卡的識別時間小于11ms。
??? 關(guān)鍵詞: ARM? 非接觸IC卡? SQL Server 2000? μC/OS-II? ASP
?
??? 隨著計算機(jī)信息技術(shù)和超大規(guī)模集成電路技術(shù)的發(fā)展,以及芯片微型化封裝技術(shù)的日趨成熟,非接觸IC卡逐漸成為人們關(guān)注和研究的重點[1]。非接觸IC卡作為一種全新的應(yīng)用領(lǐng)域,具有無機(jī)械磨損、容易維護(hù)、方便使用、信息存儲量大[2][3]等特點。本文設(shè)計的非接觸IC卡網(wǎng)絡(luò)系統(tǒng)采用ARM處理器,在ARM上移植μC/OS-II實時操作系統(tǒng),嵌入TCP/IP[4];建立SQL Server 2000大型關(guān)系數(shù)據(jù)庫[5],同時,結(jié)合Delphi與SQL Server 2000數(shù)據(jù)庫編程技術(shù)和Delphi網(wǎng)絡(luò)編程技術(shù)[6][7][8]編寫管理軟件,實現(xiàn)TCP/IP網(wǎng)絡(luò)通信;利用ASP+SQL Server動態(tài)網(wǎng)站開發(fā)技術(shù)建立IIS5.1服務(wù)器網(wǎng)站,實現(xiàn)大規(guī)模的非接觸IC卡網(wǎng)絡(luò)管理系統(tǒng)[9][10],能滿足對信息載體的便攜性、高安全性、易用性、超大規(guī)模管理等要求。本系統(tǒng)可用于服務(wù)領(lǐng)域,如貨物銷售與后勤、商業(yè)、生產(chǎn)企業(yè)和材料流通等。
1 系統(tǒng)結(jié)構(gòu)和原理
??? 系統(tǒng)設(shè)計分為C/S和B/S結(jié)構(gòu)。C/S結(jié)構(gòu)中主要包括專用讀卡芯片F(xiàn)M1702N、ARM組成的讀卡終端、SQL Server數(shù)據(jù)庫和Delphi編寫的管理軟件,系統(tǒng)管理員可以在管理界面對用戶進(jìn)行注冊、修改、刪除、查詢等操作,在運(yùn)行界面實時顯示各個讀卡終端的狀態(tài)并記錄在數(shù)據(jù)庫上。B/S主要有SQL Server數(shù)據(jù)庫和IIS5.1建立服務(wù)器網(wǎng)站,用戶能夠通過遠(yuǎn)端的Web網(wǎng)頁查詢和管理IC卡信息。系統(tǒng)框圖如圖1所示。
?????????????????????????? 
2 系統(tǒng)硬件設(shè)計
??? 硬件主要由三星S3C2410、FM1702N、RTL8019AS、LCD、JTAG、語音芯片、鍵盤等組成。S3C2410采用1.8V ARM920T內(nèi)核,帶有3.3V 16KB指令和16KB數(shù)據(jù)緩存及MMU單元,非線性(NAND)Flash引導(dǎo)單元,系統(tǒng)管理器(包括片選邏輯和SDRAM控制器),3通道的異步串行口(UART),4通道的DMA,實時時鐘單元(RTC),I2C總線接口,IIS總線接口,16/32位RISC微處理器。移植μC/OS-II操作系統(tǒng),嵌入TCP/IP協(xié)議,通過RTL8019AS以太網(wǎng)芯片實現(xiàn)TCP/IP網(wǎng)絡(luò)通信;FM1702N是讀卡專用芯片,主要實現(xiàn)對非接觸IC卡的讀寫操作; LCD實現(xiàn)顯示功能;JTAG 用于軟件調(diào)試使用;音頻實現(xiàn)語音功能;鍵盤實現(xiàn)對系統(tǒng)的輸入設(shè)置。硬件框圖如圖2所示。
?????????????????????????? 
2.1 FM1702N與S3C2410的接口電路
??? FM1702N與S3C2410的接口電路如圖3所示。FM1702N是上海復(fù)旦微電子股份有限公司設(shè)計的基于ISO14443標(biāo)準(zhǔn)、Mifare標(biāo)準(zhǔn)的三重認(rèn)證算法的射頻IC卡讀卡專用芯片,采用0.6μm CMOS EPPROM工藝,支持多種加密算法,兼容飛利浦的MFRC530。內(nèi)部的發(fā)射器不需要增加有源電路就可以驅(qū)動近距離的天線(可達(dá)10cm)。接收電路中的FM1702N采用了正交解調(diào)電路解調(diào)RX腳上ISO14443標(biāo)準(zhǔn)的負(fù)載波信號。
??????????????????????????
??????
??? FM1702N與S3C2410通過并行接口連接,F(xiàn)M1702N的IRQ與S3C2410的EINT1相連,采用外部中斷模式;FM1702N的數(shù)據(jù)D0~D7與S3C2410數(shù)據(jù)線的DATA0~DATA7相連;FM1702N的片選信號NCS接在S3C2410的nGCS1,對應(yīng)的內(nèi)存地址為0X08000000~0X10000000;FM1702N的A0和A1接高電平,A2接低電平,工作在讀/寫選通模式下;WR、RD分別與S3C2410的nWE、nOE連接。穩(wěn)定的工作頻率對FM1702N非常重要,本設(shè)計外部時鐘源,時鐘信號加到OSCIN和OSCOUT端口,晶振頻率為13.56MHz,同時注意時鐘的占空比和防抖動,以保證時鐘信號的品質(zhì)。
2.2 讀寫器" title="讀寫器">讀寫器天線的設(shè)計
??? 讀寫器天線的設(shè)計是與M1卡進(jìn)行通信的關(guān)鍵,根據(jù)互感原理,半徑越大、匝數(shù)越多讀寫器上的天線和M1卡上天線的互感系數(shù)就越大。根據(jù)國際標(biāo)準(zhǔn)的要求,M1卡和讀寫器的通信距離為10cm。天線可等效成R、L、C并聯(lián)回路,等效電路圖如圖4所示, L為天線的自感,R為天線的等效電阻,C為天線的分布電容。
???????????????????????????????? 
??? 天線的品質(zhì)因數(shù)是設(shè)計天線時要注意的部分。根據(jù)國際無線通信標(biāo)準(zhǔn)ISO1444規(guī)定:無論TYPEA或TYPEB射頻IC卡,讀寫器和射頻IC卡之間的數(shù)據(jù)傳輸速度為106kb/s,載波頻率為13.56MHz,所以每一位數(shù)據(jù)維持時間是9.44μs。Type A型射頻IC卡讀寫器到射頻IC卡的信號編碼是修正米勒編碼,傳送每一位數(shù)具有3?滋s的載波中斷,因此,該信號的帶寬近似為B=333.333kHz,故讀寫器天線的品質(zhì)因數(shù)Q=13.56MHz/333.333kHz=35,天線的傳輸帶寬與品質(zhì)因數(shù)成反比關(guān)系。因此,過高的品質(zhì)因數(shù)會導(dǎo)致帶寬縮小,從而減弱讀寫器的調(diào)制邊帶,導(dǎo)致讀寫器無法與卡通信。耦合天線電感值L1(nH)采用下面公式進(jìn)行估算:
??? 
式(1)中:l1為一圈導(dǎo)體的長度,D1為導(dǎo)線的直徑或PCB板的線寬(cm),K為線的形狀系數(shù)(環(huán)形K=1.07,矩形K=1.47),N1為環(huán)數(shù)[3]。
2.3 RTL8019AS與S3C2410的接口電路
??? TRL8019AS與S3C2410的接口電路如圖5所示。RTL8019AS是高度集成以太網(wǎng)控制器,帶寬10MB/s~20MB/s,支持JUMPER和JUMPERLESS選項,集成10BASET收發(fā)器,BNC和AUI接口之間具有自動檢測功能,有8條IRQ總線和16條基本地址總線,支持16KB、32KB和64KB BROM和閃存接口。
??????????????????????????
??? 通過雙向三態(tài)緩沖器74LS245實現(xiàn)TRL8019AS和S3C2410數(shù)據(jù)電平的轉(zhuǎn)換,采用外部中斷EINT1,TRL8019AS的地址與S3C2410的A0~A4連接,TRL8019AS的AEN與S3C2410的nCS3連接,對應(yīng)的內(nèi)存地址ox18000000~ox20000000。
3 系統(tǒng)軟件設(shè)計
??? 本系統(tǒng)程序設(shè)計分為下位機(jī)和上位機(jī),μC/OS-II程序結(jié)構(gòu)如圖6所示。通過對OS_CFG.H文件的設(shè)置來裁剪操作系統(tǒng),在μC/OS-II中嵌入TCP/IP協(xié)議,編寫FM1702驅(qū)動、TRTL8019驅(qū)動、LCD顯示和語音驅(qū)動;建立SQL2000數(shù)據(jù)庫,Delphi前端數(shù)據(jù)庫管理軟件設(shè)計,ASP動態(tài)網(wǎng)站的制作。
????????????????????????????
???????
??? 讀卡時,非接觸IC卡的信息由FM1702N驅(qū)動,通過μC/OS-II操作系統(tǒng)向應(yīng)用程序傳送,然后應(yīng)用程序調(diào)用TCP/IP協(xié)議,TRL8019AS驅(qū)動以太網(wǎng)向PC上位機(jī)傳輸數(shù)據(jù),通過Delphi管理軟件對數(shù)據(jù)庫進(jìn)行各種操作。寫卡時,PC機(jī)通過以太網(wǎng)TRL8019AS驅(qū)動TCP/IP協(xié)議,μC/OS-II的應(yīng)用程序通過FM1702N驅(qū)動將信息寫入非接觸IC卡。
3.1 FM1702N驅(qū)動程序設(shè)計
??? FM1702N驅(qū)動程序的設(shè)計主要是對非接觸IC卡(簡稱M1卡)的讀寫操作,由S3C2410通過對讀卡專用芯片F(xiàn)M1702N的寄存器進(jìn)行設(shè)置。FM1702N對M1卡操作流程圖如圖7所示。
???????????????????????????? 
??? 尋卡(Request):當(dāng)系統(tǒng)初始化后,F(xiàn)M1702N循環(huán)向天線發(fā)出尋卡信號。只要M1卡處在M1卡讀寫器天線的工作范圍之內(nèi),S3C2410控制讀寫器便向M1卡發(fā)出REQUEST all(或REQUEST std)命令。得到能量后,M1卡的ATR啟動,將M1卡Block0中的M1卡類型號共2個字節(jié)傳送給讀寫器,建立M1卡與讀寫器的第一步通信聯(lián)絡(luò)。如果不進(jìn)行復(fù)位請求操作,讀寫器對M1卡的其它操作將不會進(jìn)行。
??? 防沖突機(jī)制(Anti collision loop):當(dāng)有多張卡進(jìn)入讀寫器操作范圍時,防沖突機(jī)制會從其中選擇一張進(jìn)行操作,未選中的則處于空閑模式等待下一次選卡。該過程會返回被選卡的序列號。
??? 選卡(Select Card):選擇被選中的M1卡的序列號,并同時返回卡的容量代碼。
??? 三次相互認(rèn)證(3 Pass Authentication):選定要處理的M1卡后,讀寫器就確定要訪問的扇區(qū)號,并對該扇區(qū)密碼進(jìn)行密碼校驗,在三次相互認(rèn)證之后就可以通過加密流進(jìn)行通訊(在選擇另一扇區(qū)時則必須進(jìn)行另一扇區(qū)密碼校驗)。三次認(rèn)證的令牌原理框圖如圖8所示。
????????????????????????????????? 
??? 三次相互認(rèn)證過程:
??? (A)環(huán):由M1卡向讀寫器發(fā)送一個隨機(jī)數(shù)據(jù)RB;
??? (B)環(huán):由讀寫器收到RB后向M1卡發(fā)送一個令牌數(shù)據(jù)TOKEN AB,其中包含讀寫器發(fā)出的一個隨機(jī)數(shù)據(jù)RA;
??? (C)環(huán):M1卡接收到TOKEN AB后,對其加密部分進(jìn)行解密,并校驗第一次由(A)環(huán)中M1卡發(fā)出的隨機(jī)數(shù)RB是否與(B)環(huán)中接收到的TOKEN AB 中的RB相一致;
??? (D)環(huán):如果(C)環(huán)校驗正確,則M1卡向讀寫器發(fā)送令牌TOKENBA;
??? (E)環(huán):讀寫器收到令牌TOKEN BA后,將對令牌TOKEN BA中的RB(隨機(jī)數(shù))進(jìn)行解密,并校驗第一次由(B)環(huán)中讀寫器發(fā)出的隨機(jī)數(shù)RA是否與(D)環(huán)中接收到的TOKEN BA中的RA一致。如果上述的每一個環(huán)都為“真”,都能正確通過驗證,則整個認(rèn)證過程成功;相反,認(rèn)證過程中的任何一環(huán)出現(xiàn)差錯,整個認(rèn)證失敗,必須重新開始。如果事先不知卡片上的密碼,由于密碼的變化極其復(fù)雜,因此靠猜測密碼而想打開卡上的一個扇區(qū)的可能性幾乎為零。
??? 對數(shù)據(jù)塊的操作:讀(Read),讀一個塊;寫(Write),寫一個塊;加(Increment),對數(shù)值塊進(jìn)行加值;減(Decrement),對數(shù)值塊進(jìn)行減值;存儲(Restore),將塊中的內(nèi)容存到數(shù)據(jù)寄存器中;傳輸(Transfer),將數(shù)據(jù)寄存器中的內(nèi)容寫入塊中;中止(Halt),將卡置于暫停工作狀態(tài)。
3.2 RTL8019AS驅(qū)動程序的設(shè)計
??? RTL8019AS驅(qū)動設(shè)計的主要任務(wù)是完成芯片初始化及實現(xiàn)數(shù)據(jù)的收發(fā)功能。芯片初始化的主要任務(wù)是完成DCR(配置寄存器遠(yuǎn)端DMA位數(shù))、PSTART(接收緩沖區(qū)起始頁的地址)、PSTOP(接收緩沖區(qū)的結(jié)束頁的地址)、TPSR(發(fā)送緩沖區(qū)的起始地址)、BNRY(指向最后一個已經(jīng)讀取的頁(讀指針))、CURR(當(dāng)前的接收結(jié)束頁地址(寫指針))的初始化。設(shè)置發(fā)送緩沖區(qū)為0X40~0X4b,可存儲2個最大以太網(wǎng)數(shù)據(jù)包;將0X4c~0X7f設(shè)置為接收緩沖區(qū)。
??? 發(fā)送數(shù)據(jù)時,先將待發(fā)送的數(shù)據(jù)通過遠(yuǎn)程DMA寫入芯片RAM,給出發(fā)送緩沖區(qū)首地址和數(shù)據(jù)包長度,啟動發(fā)送命令(CR=0x3E),即可實現(xiàn)RTL8019AS的數(shù)據(jù)發(fā)送。
??? 接收數(shù)據(jù)時,接收緩沖區(qū)構(gòu)成一個循環(huán)FIFO隊列,PSTART和PSTOP兩個寄存器限定了循環(huán)隊列的開始和結(jié)束頁,CURR為受芯片控制的寫入指針,BNRY為由主機(jī)程序控制的讀出指針。根據(jù)CURR是否等于BNRY+1,可以判斷是否收到新的數(shù)據(jù)包,新收到的數(shù)據(jù)包存于以CURR指定的地址為首地址的RAM中,即可實現(xiàn)數(shù)據(jù)的接收。
3.3 Delphi管理軟件
??? Delphi管理軟件的關(guān)鍵是對SQL Server數(shù)據(jù)庫的讀寫并用Winsocket編寫程序?qū)崿F(xiàn)TCP/IP網(wǎng)絡(luò)通信。首先在系統(tǒng)上安裝SQL Server 2000數(shù)據(jù)庫(本系統(tǒng)安裝的是SQL Server 2000個人版),然后打開“企業(yè)管理器”,在“控制臺根目錄”下打開“Microsoft SQL Servers”中的“SQL Server組”,點擊本地服務(wù)器使SQL Server啟動,在“數(shù)據(jù)庫”項上點擊右鍵選擇“新建數(shù)據(jù)庫”就可以建立數(shù)據(jù)庫,如果是已建好的數(shù)據(jù)庫也可以選擇“所有任務(wù)”中的附加數(shù)據(jù)庫。在系統(tǒng)上安裝Delphi7數(shù)據(jù)庫前端開發(fā)軟件之后,新建一個工程,在工程中建一個數(shù)據(jù)模塊,使用Delphi提供的ADO組件TADOConnection,通過設(shè)置ConnectionString屬性為“Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=IcNet”連接數(shù)據(jù)庫(IcNet是本系統(tǒng)的數(shù)據(jù)庫名),利用TADOQuery執(zhí)行SQL語句,使用前設(shè)置TADOQuery的Connection屬性為ADOConnection,SQL語句如下:
??? With? ADOQuery do
??? Begin
????? Close;//關(guān)閉數(shù)據(jù)集
????? SQL.Clear;//清空SQL語句
????? SQL.Add(‘Select?鄢From tablename’);//添加SQL語句
??????Open;//執(zhí)行SQL語句
??? End;
??? 通過SQL語句訪問SQL Server數(shù)據(jù)庫,實現(xiàn)對系統(tǒng)用戶的注冊、修改、刪除和查詢等操作。
??? Socket通信程序采用Delphi7中的ServerSocket和ClientSocket兩個組件實現(xiàn)TCP/IP網(wǎng)絡(luò)通信。ClientSocket組件為客戶端" title="客戶端">客戶端組件,是通信的請求方主動與服務(wù)器端建立連接。ServerSocket組件為服務(wù)器端組件,是通信的響應(yīng)方,它的動作是監(jiān)聽以及被動接受客戶端的連接請求,并對請求進(jìn)行回復(fù)。ServerSocket組件可以同時接受一個或多個ClientSocket組件的連接請求,并與每個ClientSocket組件建立單獨連接,進(jìn)行單獨通信。在設(shè)計中,服務(wù)器端程序聲明了一個記錄類型:
??? type
??? client_record=record
??? CHandle:integer;?????????????????? //客戶端套接字句柄
??? CSocket:TCustomWinSocket;????????? //客戶端套接字
??? CName:string;????????????????????? //客戶端計算機(jī)名稱
??? CAddress:string;?????????????????? //客戶端計算機(jī)IP地址
????CUsed:boolean;???????????????????? //客戶端聯(lián)機(jī)標(biāo)志
??? end;
??? 定義一個公共數(shù)組:
??? Session:array[0..CMax] of client_record;//客戶端連接數(shù)
????????????????????????????????????????????? //組,CMax為最大連接數(shù)
??? Sessions:integer;?????????????????????? //客戶端連接數(shù)
???? 記錄類型數(shù)據(jù)保存客戶端的信息,同時保存當(dāng)前客戶端的連接狀態(tài)。其中CHandle保存客戶端套接字句柄,以便準(zhǔn)確定位每個與服務(wù)器端保持連接的客戶端;Csocket保存客戶端套接字,通過它可以對客戶端進(jìn)行回復(fù);Cused記錄當(dāng)前客戶端是否與服務(wù)器端保持連接。對組件ServerSocket的屬性進(jìn)行設(shè)置,·Port是通信端口(端口號的有效范圍0~65535,大于49151的端口號一般為動態(tài)的),必須設(shè)置,本系統(tǒng)設(shè)為2222;·ServerTypt是服務(wù)器端讀寫信息類型,設(shè)置為stNonBlocking表示異步讀寫信息;·ThreadCacheSize是客戶端的最大連接數(shù),即服務(wù)器端最多允許多少客戶端同時連接通信,它可以根據(jù)系統(tǒng)的要求設(shè)置,其他屬性采用默認(rèn)設(shè)置即可。組件ClientSocket的屬性設(shè)置,·Port是通信的端口,必須與服務(wù)器端的設(shè)置相同;·ClientType是客戶端讀寫信息類型,應(yīng)該與服務(wù)器端的設(shè)置相同,為stNonBlocking表示異步讀寫信息;·Host是客戶端要連接的服務(wù)器的IP地址,必須設(shè)置,當(dāng)然也可以在代碼中動態(tài)設(shè)置,其他屬性采用默認(rèn)設(shè)置即可。
3.4 ASP動態(tài)網(wǎng)站
??? ASP動態(tài)網(wǎng)站采用ASP+SQL Server動態(tài)網(wǎng)站開發(fā)技術(shù)。首先在服務(wù)器上安裝IIS5.1軟件,打開管理工具的“internet服務(wù)管理器”,在“默認(rèn)網(wǎng)站”上單擊鼠標(biāo)右鍵,選擇“新建虛擬目錄”創(chuàng)建一個“非接觸IC卡網(wǎng)絡(luò)站點”,并對各項屬性進(jìn)行設(shè)置。系統(tǒng)采用Macromedia Dreamweaver MX 2004開發(fā)平臺來編寫和調(diào)試ASP網(wǎng)頁代碼,首先在開發(fā)平臺上建立一個“非接觸IC卡網(wǎng)絡(luò)站點”,對站點的參數(shù)進(jìn)行設(shè)置使其與IIS5.1服務(wù)器連接,在ASP動態(tài)網(wǎng)站中關(guān)鍵是對服務(wù)器SQL Server數(shù)據(jù)庫的訪問,因此建立了一個連接(conn.asp),以實現(xiàn)對SQL Server數(shù)據(jù)庫讀寫操作,語句如下:
??? Set conn=Server.CreateObject(″ADODB.Connection″)
??? conn.connectionstring=″Driver={SqlServer};Server=(local);UID=sa;database=IcNet″
??? conn.open
??? 當(dāng)要訪問SQL Server數(shù)據(jù)庫時,除了要調(diào)用conn.asp連接數(shù)據(jù)庫(),還要創(chuàng)建一個記錄對象,語句如下:
??? set rs=server.CreateObject(″adodb.recordset″)
??? sql=″select?鄢from tablename where condition″
??? rs.open sql,conn,3,3
??? 這樣就可以實現(xiàn)對SQL Server數(shù)據(jù)庫的訪問操作。在設(shè)計時主要采用了VBScript和JAVAScript編程技術(shù),ASP中的Form標(biāo)簽用來創(chuàng)建一個提交的表單數(shù)據(jù),利用Session對象記錄客戶端信息和Request對象從客戶端獲得信息等ASP+SQL Server動態(tài)網(wǎng)站開發(fā)技術(shù)。
4 系統(tǒng)測試
??? ARM讀卡終端與服務(wù)器建立網(wǎng)絡(luò)連接時,測讀寫器得到的數(shù)據(jù)如表1所示。當(dāng)M1卡向不同的方向運(yùn)動及M1卡處于靜止時,系統(tǒng)能正常工作;當(dāng)M1卡被紙張、木材和塑料等非金屬或非透明的材質(zhì)包覆時,也可以進(jìn)行穿透性通訊,但若是鐵質(zhì)金屬,則無法進(jìn)行通訊。
??? 從表1可以看出,讀寫器與M1卡之間讀寫的最大無沖突通訊時間都小于11ms,處理每個沖突時間只要1ms。一般情況下,50張M1卡在1s之內(nèi)可以處理完,所以該系統(tǒng)能應(yīng)用于大規(guī)模的非接觸IC卡網(wǎng)絡(luò)管理,用于身份識別、計費、智能管理等實際應(yīng)用中。
???????????????????????? 
參考文獻(xiàn)
[1] 陳欣,郎為民,王建秋,等.射頻識別技術(shù)安全問題[J].電子技術(shù),2004,(04):37-38.
[2] 章曉卿,劉中元.非接觸式RFID讀寫器系統(tǒng)的研究[J].國外電子元器件,2006,(2):15-16.
[3] Klaus Finkenzeller[德]著,陳大才編譯,王桌人審校.射頻識別技術(shù)[M].北京:電子工業(yè)出版社,2001.
[4] LABROSSE J J著,邵貝貝譯.μC/OS-II-源代碼公開的實時嵌入式操作系統(tǒng)[M].北京:中國電力出版社,2001.
[5] 賽奎春,宋坤.SQL Server數(shù)據(jù)庫開發(fā)實例解析[M].北京:機(jī)械工業(yè)出版社,2006.
[6] 清宏計算機(jī)工作室.Delphi編程技術(shù)(網(wǎng)絡(luò)與數(shù)據(jù)庫篇)[M].北京:機(jī)械工業(yè)出版社,2001.
[7] 馬海蓮.Delphi7組件應(yīng)用實例[M].北京:電子工業(yè)出版社,2003.
[8] 彭勇,王建芬.Delphi5.0網(wǎng)絡(luò)與通信開發(fā)應(yīng)用[M].北京:中國水力出版社,2000.
[9] 楊世襲,趙輝編.ASP+SQL Server動態(tài)網(wǎng)站開發(fā)從基礎(chǔ)到實踐[M].北京:電子工業(yè)出版社,2006.
[10] 袁啟昌,景鵬森.ASP動態(tài)網(wǎng)頁設(shè)計教程[M].北京:科學(xué)出版社,2005.
