第六章、 rfid 資訊系統開發

97
1/91 第第第RFID 第第第第第第 本本本本 RFID 本本本 Windows Form 本本 本本本本 本本本本 () 本本本本本 本本本本 MS Visual Studio.NET 2008 本 本本本本本本 本本本本 MS Access 本 MS SQL Server 本 本本本 MSCOMM SerialPort 本 Winsock 本本本本本本 本本本本本本本 RFID 本本本本本本本本本本本本 本本本本本本本本本本本 。, 本本本本本本本本本本本本 CH6 本本本本本本本本

Upload: kasimir-sullivan

Post on 03-Jan-2016

72 views

Category:

Documents


0 download

DESCRIPTION

第六章、 RFID 資訊系統開發. 本章針對 RFID 系統中 Windows Form 架構(單機版)的開發方式進行說明,內容使用 MS Visual Studio.NET 2008 為系統開發平台,配合後端 MS Access 或 MS SQL Server 資料庫及 MSCOMM 、 SerialPort 與 Winsock 等三通訊元件,介紹整合後連接 RFID 讀取器擷取資料的設計方式。本章內的所有範例程式,讀者都可以在本書光碟內的 CH6 目錄內找到並應用。. 大 綱. 6-1 MSCOMM 物件 6-2 ACCESS 資料庫 6-3 SerialPort 物件 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第六章、 RFID 資訊系統開發

1/91

第六章、 RFID資訊系統開發

本章針對 RFID 系統中 Windows Form 架構(單機版)的開發方式進行說明,內容使用 MS Visual Studio.NET 2008 為系統開發平台,配合後端 MS Access 或 MS SQL Server 資料庫及 MSCOMM 、 SerialPort與 Winsock 等三通訊元件,介紹整合後連接 RFID讀取器擷取資料的設計方式。本章內的所有範例程式,讀者都可以在本書光碟內的 CH6 目錄內找到並應用。

Page 2: 第六章、 RFID 資訊系統開發

2/91

大 綱

6-1 MSCOMM 物件 6-2 ACCESS 資料庫 6-3 SerialPort 物件 6-4 Winsock 6-5 SQL Server 資料庫 6-6 藍芽讀取器 6-7 POS 範例再討論

Page 3: 第六章、 RFID 資訊系統開發

3/91

RFID資訊系統開發 本章主要介紹使用 MS Visual Studio.NET 20

08 (以下簡稱 VS.NET 2008 )開發 Windows Form 程式來與 RFID 讀取器進行溝通與讀取卡號及資料。

此部份程式主要是電腦與讀取器的連接溝通,溝通介面主要為 RS232 、 USB 或是 Ethernet ,此些部分主要是透過 VS.NET 2008 提供的物件來完成,以下將依不同物件的使用來介紹

Page 4: 第六章、 RFID 資訊系統開發

4/91

MSCOMM 物件

Page 5: 第六章、 RFID 資訊系統開發

5/91

MSCOMM 物件 此物件在 Visual Basic 6.0 時代時已經存在,

也是以往很多系統用來擷取 RS232 與 USB設備訊號的物件

此物件到了 VS.NET 2005 與 VS.NET 2008並不是預設有的物件,所以需要透過「加入工具箱」的方式來完成

首先,請使用 VS.NET 2008 建立一個新專案,專案名稱是 CH6-1 (圖 6-1 )

Page 6: 第六章、 RFID 資訊系統開發

6/91圖 6-1 、 CH6-1 專案建立後起始畫面

Page 7: 第六章、 RFID 資訊系統開發

7/91

MSCOMM 物件 接著,將 Form1 的 Text 屬性改成「 MSCO

MM 物件抓取 RFID 卡號範例」,並在表單Form1 上佈置 2 個 Label 物件與 1 個 TextBox 物件,各物件的設定如表 6-1 所示,完成後的畫面如圖 6-2

Page 8: 第六章、 RFID 資訊系統開發

8/91圖 6-2 、 Form1 表單物件設定完成畫面

Page 9: 第六章、 RFID 資訊系統開發

9/91

表 6-1 、 Form1 表單物件屬性說明

編號物件 物件名稱 屬性設定

1 Label Label1 Text=MSCOMM 元件抓卡號範例Font= 新細明體 , 18pt

2 Label Label2 Text= 卡號:Font= 新細明體 , 18pt

3 TextBox TextBox1 將 Text 屬性清空Font= 新細明體 , 18pt

Page 10: 第六章、 RFID 資訊系統開發

10/91

MSCOMM 物件 完成使用者介面設定後,再來需要將原來屬

於 Visual Basic 6.0 的 MSCOMM.OCX 物件設定成可讓 VS.NET 2008 使用。如圖 6-3 所示,請選擇「工具」 「選擇工具箱項目」

Page 11: 第六章、 RFID 資訊系統開發

11/91圖 6-3 、 VS.NET 2008 中設定使用 MSCOMM 物件畫面

Page 12: 第六章、 RFID 資訊系統開發

12/91

MSCOMM 物件 之後會出現圖 6-4 的「選擇工具箱項目」視

窗,請選擇「 COM 元件」頁籤,請勾選「 Microsoft Communications Control, version 6.0 」,然後按「確定」, MSCOMM 元件將會被加入到開發平台左方的「工具箱」中,此時就可以使用 MSCOMM 物件,如圖 6-5所示

Page 13: 第六章、 RFID 資訊系統開發

13/91

MSCOMM 物件 請將 MSCOMM 元件從工具箱中拖入 Form1

表單內,供後續開發使用,完成後如圖 6-6 ,畫面上將多出一個電話的圖示,這個就是MSCOMM 物件,這裡我們維持它原來的物件名稱「 AxMSComm1 」

Page 14: 第六章、 RFID 資訊系統開發

14/91

圖 6-4 、 VS.NET 2008 中 COM 元件選擇畫面

Page 15: 第六章、 RFID 資訊系統開發

15/91圖 6-5 、 MSCOMM 元件加入成功畫面

Page 16: 第六章、 RFID 資訊系統開發

16/91圖 6-6 、 MSCOMM 元件加入表單 Form1 後畫面

Page 17: 第六章、 RFID 資訊系統開發

17/91

MSCOMM 物件 再來,請確定已經將設定完成的 RFID 讀取

器(設定方式請見第二章說明)連接上電腦,並透過控制台的裝置管理員確認設備可以正常使用與目前的連接埠,如圖 6-7 所示,本範例的連接埠在 COM12 。等上述ㄧ切就緒後就可以開始撰寫程式碼,透過 MSCOMM元件來連接 RFID 讀取器取得所需要的卡號

Page 18: 第六章、 RFID 資訊系統開發

18/91圖 6-7 、 RFID 讀取器在裝置管理員的連接埠查詢畫面

Page 19: 第六章、 RFID 資訊系統開發

19/91

MSCOMM 物件 針對程式開發部分,首先在 Form1_Load 事件中撰

寫設定 MSCOMM 物件的通訊協定,當中包含通訊速率( Baud rate ,請詢文您的硬體供應商)、通訊埠(每個人的電腦狀況都不同,這裡是 COM12 )、 Threshold (要設定成 1 )等三項參數,最後將通訊埠開啟

執行程式後如果看到圖 6-8 畫面,代表程式與讀取器間訊號傳遞的通訊埠可以被正常開啟,沒有問題

Page 20: 第六章、 RFID 資訊系統開發

20/91圖 6-8 、通訊埠正常開啟畫面

Page 21: 第六章、 RFID 資訊系統開發

21/91

MSCOMM 物件 此時已經正常開啟程式與硬體讀取器間的通

訊介面與管道,只要讀取器有讀取到標籤的資料,將會觸發 MSCOMM 物件的「 OnComm 」事件

所以我們必須要在 MSCOMM 物件的「 OnComm 」事件中撰寫程式接收來自讀取器的資料。其中,如果讀取狀況正常,將回傳 CommEvent=2 的狀態

MSCOMM 物件接收資料的方法為 Input

Page 22: 第六章、 RFID 資訊系統開發

22/91

MSCOMM 物件 相反地,如果讀取有錯誤將回傳 CommEven

t=7 的狀態,程式將關閉通訊介面,並提示錯誤訊息,問題可能發生在忘記將讀取器接上電腦或是讀取器有損壞的狀況

完成上述所有步驟與程式撰寫後,就可以實際執行本程式,但一定要先確定讀取器與電腦有正常安裝與連結,圖 6-9 是正常抓取卡號的畫面

Page 23: 第六章、 RFID 資訊系統開發

23/91

圖 6-9 、 MSCOMM 元件實際抓取卡號畫面

Page 24: 第六章、 RFID 資訊系統開發

24/91

ACCESS 資料庫

Page 25: 第六章、 RFID 資訊系統開發

25/91

ACCESS 資料庫 本書第五章中介紹過使用 VS.NET 2008 開發資料庫程式的方法與步驟,當中介紹了連結 ACCESS與 SQL Server兩種資料庫的操作方法

首先請使用 ACESS 2003 建立一個名稱為 TAG 的空白資料庫( TAG.md ),同時建立一個儲存卡號資訊的資料表,名稱為 card_info (讀者可以在本書光碟內的 CH6\CH6-2\CH6-2\bin\Debug 目錄中找到該資料庫檔案)

Page 26: 第六章、 RFID 資訊系統開發

26/91

ACCESS 資料庫 當中包含有 4 個欄位,如圖 6-10 所示,各欄位的名稱、型態、資料長度與格式設定如表 6-2 所示

Page 27: 第六章、 RFID 資訊系統開發

27/91圖 6-10 、 ACCESS 資料庫欄位格式設定畫面

Page 28: 第六章、 RFID 資訊系統開發

28/91

表 6-2 、 ACDESS 資料庫格式設定說明

編號欄位名稱 型態 格式設定

1 card_no 自動編號 主索引鍵( PK )2

card_ID文字

長度 =20RFID 卡號

3 card_date 日期 / 時間 建立日期

4owner

文字長度 =10

使用者名稱

Page 29: 第六章、 RFID 資訊系統開發

29/91

ACCESS 資料庫 資料庫欄位格式設定建立完成後,請在資料庫中建立幾筆資料,例如圖 6-11 所示,此處建立了兩筆 RFID 標籤與使用者的資料,分別是卡號為 AADB8176 的使用者陳小明與卡號為 A6CD6F62 的使用者王大頭。應用時請各位讀者依這自己的卡號資料建立資料表內的「 card_ID 」欄位內容

Page 30: 第六章、 RFID 資訊系統開發

30/91圖 6-11 、 ACCESS 資料庫預設資料畫面

Page 31: 第六章、 RFID 資訊系統開發

31/91

ACCESS 資料庫 為了要透過 VS.NET 2008 連結使用 ACCES

S 資料庫,需要引用「 System.Data.OleDb 」的名稱空間

我們將呼叫 ACCESS 資料庫查詢卡號使用者的功能寫成「 showmember 」函數,當系統透過 MSCOMM 元件在 OnComm 事件中抓到卡號後,將呼叫 showmember 連結 ACCESS 資料庫進行卡號比對,然後顯示出正確的使用者名稱

Page 32: 第六章、 RFID 資訊系統開發

32/91

ACCESS 資料庫 我們仿照專案 CH6-1 的介面,但在 CH6-2

專案中另外加入兩個 Label 物件,分別是 Label3 與 Label4 ,同時,將 Label3 的 Text 屬性設定為”使用者:”, Label4則使用程式動態將查詢到的使用者名稱 (owner欄位 )資料顯示出來

程式實際執行後刷卡的畫面如下圖 6-12 所示,依照前面資料庫標籤卡號的設定,卡號為 AADB8176 的使用者是陳小明,實際顯示結果與當初規劃預期之結果相符

Page 33: 第六章、 RFID 資訊系統開發

33/91

圖 6-12 、 MSCOMM 元件結合 ACCESS 資料庫查詢卡號資料畫面

Page 34: 第六章、 RFID 資訊系統開發

34/91

SerialPort 物件

Page 35: 第六章、 RFID 資訊系統開發

35/91

SerialPort 物件 本節則是針對 VS.NET 2008 中標準內含的

RS232 與 USB 通訊埠溝通物件「 SerialPort 」進行介紹,請建立本章第三個專案 CH6-3 ,如圖 6-13 ,並依照表 6-3 在 Forml.vb 上佈置所需要的介面物件

Page 36: 第六章、 RFID 資訊系統開發

36/91圖 6-13 、 CH6-3 專案畫面

Page 37: 第六章、 RFID 資訊系統開發

37/91

表 6-3 、 Forml 表單上介面物件屬性說明

編號物件 物件名稱 (Name) 屬性設定

1 Label Label1 Text= 使用 SerialPort 物件讀取RFID 設備卡號Font= 新細明體 , 16pt

2 Label Label2 Text= 卡號Font= 新細明體 , 18pt

3 Label Label3 Text= 使用者Font= 新細明體 , 18pt

4 Label Label4 清空 Text 屬性Font= 新細明體 , 18pt

5 TextBox TextBox1 將 Text 屬性清空Font= 新細明體 , 18pt

6 SerialPort SerialPort1

Page 38: 第六章、 RFID 資訊系統開發

38/91

SerialPort 物件 與 MSCOMM 元件類似, SerialPort 物件也

需要設定通訊埠號碼,但其屬性不是「 CommPort 」,而是「 PortName 」,如圖 6-14 所示,本範例中延續上節設定為 COM12

Page 39: 第六章、 RFID 資訊系統開發

39/91圖 6-14 、 SerialPort 設定 PortName 之畫面

Page 40: 第六章、 RFID 資訊系統開發

40/91

SerialPort 物件 SerialPort 物件來抓取讀取器讀取到標籤的辨識號碼,同 MSCOMM 元件, SerialPort元件也是使用 Open 方法來開啟所設定的通訊埠,此部份希望在程式一啟動時就完成通訊埠設定與開啟,所以寫在 Form1 表單的 Load 事件中

Page 41: 第六章、 RFID 資訊系統開發

41/91

啟動 SerialPort 物件 Private Sub Form1_Load(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles MyBase.Load

SerialPort1.PortName = "COM12"

SerialPort1.Open()

If SerialPort1.IsOpen = True Then

MessageBox.Show("COM開啟成功 ")

Else

MessageBox.Show("COM開啟失敗 ")

End If

End Sub

Page 42: 第六章、 RFID 資訊系統開發

42/91

SerialPort 物件 MSCOMM 元件接收資料的事件是 OnComm ,而 SerialPort 元件則是「 DataReceived 」事件,完成通訊埠開啟後便是在 DataReceived 事件中撰寫相關的程式碼。再來與 MSCOMM 物件不同的是, MSCOMM 物件使用 Input 方法接收資料,而 SerialPort 物件則是「 ReadLine 」方法

一次直接讀取一串 DATA

Page 43: 第六章、 RFID 資訊系統開發

43/91

使用 SerialPort 物件 Private Sub SerialPort1_DataReceived(ByVal

sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

inputdata = SerialPort1.ReadLine

Me.Invoke(New SetTextBoxTextDelegate(AddressOf SetTextBoxText), inputdata)

End Sub

Page 44: 第六章、 RFID 資訊系統開發

44/91

使用 SerialPort 物件 Private Delegate Sub SetTextBoxTextDelegate(ByVal text As String)

Dim whichtime As Integer = 0

Private Sub SetTextBoxText(ByVal text As String)

If whichtime = 0 Then

TextBox1.Text = Mid(text, 2, 8) ' 擷取卡號 whichtime = 1

Else

TextBox1.Text = Mid(text, 3, 8) ' 擷取卡號 End If

End Sub

Page 45: 第六章、 RFID 資訊系統開發

45/91

SerialPort 物件 最後,請執行專案 CH6-3 確認結果,如果

沒有任何錯誤,將看到圖 6-15 的畫面,代表讀取器與程式間的通訊埠已經順利開啟,等待讀取讀卡機的資料

此時就可以使用讀卡機去讀取標籤,結果將在畫面上顯示出卡號資料,如圖 6-16 所示,但此時尚沒有比對該卡號使用者的功能

Page 46: 第六章、 RFID 資訊系統開發

46/91

圖 6-15 、 Form1 表單的開始執行畫面

Page 47: 第六章、 RFID 資訊系統開發

47/91

圖 6-16 、 Form1 表單完成卡號抓取的畫面

Page 48: 第六章、 RFID 資訊系統開發

48/91

SerialPort 物件 後續讀者可以搭配 6-2節所撰寫的 showme

mber函式來串接 ACCESS 資料庫進行讀卡後查詢使用者的功能

執行結果如圖 6-17 所示,詳細說明請見 6-2節,在此將不再贅述

Page 49: 第六章、 RFID 資訊系統開發

49/91

圖 6-17 、搭配 ACCESS 資料庫完成卡號比對的畫面

Page 50: 第六章、 RFID 資訊系統開發

50/91

Winsock

Page 51: 第六章、 RFID 資訊系統開發

51/91

Winsock 本節將說明使用 VS.NET 2008 開發透過 Eth

ernet/Internet 介面傳輸資料的讀卡機讀卡程式,此部份搭配的物件是 Visual Basic 6.0中的 Winsock 物件,使用方式跟 6-1節的 MSCOMM 元件一樣,請先透過「工具」 「選擇工具箱項目」「 Microsoft Winsock Control, version 6.0 」來將物件加入平台左方的「工具箱」中,如圖 6-18 所示

Page 52: 第六章、 RFID 資訊系統開發

52/91

圖 6-18 、將 Winsock 元件加入 VS.NET 2008 開發平台的畫面

Page 53: 第六章、 RFID 資訊系統開發

53/91

Winsock 接者請再建立本章第四個專案,名稱為 CH

6-4 ,並將工具箱中的 Winsock 物件拖入表單中使用,如圖 6-19 所示

Page 54: 第六章、 RFID 資訊系統開發

54/91圖 6-19 、將 Winsock 元件加入表單中使用的畫面

Page 55: 第六章、 RFID 資訊系統開發

55/91

Winsock 除了 Winsock 元件外,請參考表 6-4 設計本

專案 Form1 表單上的介面物件,結果如圖6-20 所示,其中「遠端連接埠」需要填寫讀卡機與電腦間網路的通訊埠,此部份需要詢問讀卡機廠商是否有特定的通訊埠;「遠端讀取器位置」則是指讀卡機的位置,通常就是 IP位置

Page 56: 第六章、 RFID 資訊系統開發

56/91

表 6-4 、 Form1 表單上介面物件屬性說明

編號物件 物件名稱 (Name) 屬性設定

1 Label Label1 Text= 遠端連接埠Font= 新細明體 , 16pt

2 Label Label2 Text= 遠端讀取器位置:Font= 新細明體 , 16pt

3 Label Label3 Text= 接收資料內容Font= 新細明體 , 16pt

4 Button Button1 Text= 連線Font= 新細明體 , 18pt

5 Button Button2 Text= 斷線Font= 新細明體 , 18pt

6 TextBox TextBox1 將 Text 屬性清空7 TextBox TextBox2 將 Text 屬性清空8 TextBox TextBox3 將 Text 屬性清空9 Winsock AxWinsock1

Page 57: 第六章、 RFID 資訊系統開發

57/91圖 6-20 、 CH6-4 專案 Form1 表單介面畫面

Page 58: 第六章、 RFID 資訊系統開發

58/91

Winsock 前述的 MSCOMMM 物件是設定 PortOpen

屬性來開啟通訊埠, SerialPort 物件則是使用 Open 方法,此處的 Winsock 元件則是使用「 Connect 」方法來開啟「遠端讀取器位置」的「遠端連接埠」,我們將連線程式撰寫於「連線」的按鈕中

Page 59: 第六章、 RFID 資訊系統開發

59/91

WinsockPrivate Sub Button1_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles Button1.Click

AxWinsock1.RemotePort = Convert.ToInt32(TextBox1.Text)

AxWinsock1.RemoteHost = Trim(TextBox2.Text)

AxWinsock1.LocalPort = 0

AxWinsock1.Connect()

MessageBox.Show("連線成功 ")

End Sub

Page 60: 第六章、 RFID 資訊系統開發

60/91

Winsock 不同於 MSCOMM 元件的「 OnComm 」事

件與 SerialPort 元件的「 DataReceived 」事件, Winsock 是使用「 DataArrival 」事件來接收透過 Ethernet/Internet 傳送的讀卡機資料,接收方法是 GetData ,同時將接收到的資料指定到 TextBox3 中進行顯示

Page 61: 第六章、 RFID 資訊系統開發

61/91

Winsock Private Sub AxWinsock1_DataArrival(ByVal sender

As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles AxWinsock1.DataArrival

Dim inputdata As Object

AxWinsock1.GetData(inputdata, vbString, 255)

TextBox4.AppendText(Trim(inputdata))

End If

Page 62: 第六章、 RFID 資訊系統開發

62/91

Private Sub AxWinsock1_DataArrival(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles AxWinsock1.DataArrival

Dim inputdata As Object

AxWinsock1.GetData(inputdata, vbString, 255)

TextBox4.AppendText(Trim(inputdata))

' 處理步驟 1: 判斷是否有 ENTER存在 If InStr(TextBox4.Text, vbCrLf) Then

' 找到 enter的前一個位置 Dim i As Integer = InStr(TextBox4.Text, vbCrLf) - 1

' 把資料取出來,利用 mid函數 ' 如果長度不足 8,要將資料給捨棄 If Len(Mid(TextBox4.Text, 1, i)) < 8 Then Exit Sub

TextBox3.Text = Mid(TextBox4.Text, 1, i)

' 將 inputdata清空,等待下一次刷卡 TextBox4.Text = ""

End If

End Sub

Page 63: 第六章、 RFID 資訊系統開發

63/91

Winsock 完成上述介面與程式的撰寫後,就可以實際

執行本專案,啟動表單後需要在 TextBox1中輸入與讀卡機間的通訊埠號碼,在 TextBox1 中輸入讀卡機的 IP位置,如下圖 6-21所示,輸入完畢後按「連線」按紐後,遠端機器請進行讀卡動作,就可以在本機上透過Winsock 取得遠端讀卡資料

Page 64: 第六章、 RFID 資訊系統開發

64/91

圖 6-21 、 CH6-4 專案執行畫面

Page 65: 第六章、 RFID 資訊系統開發

65/91

SQL Server 資料庫

Page 66: 第六章、 RFID 資訊系統開發

66/91

SQL Server 資料庫 本章 6-2節中介紹過使用 VS.NET 2008 抓取卡號

後連結 ACCESS 資料庫進行卡號比對後顯示使用者姓名的方法,此節則是在資料庫內資料表結構不改變的狀況下(結構如表 6-2 ),將 ACCESS資料庫改成 SQL Server 資料庫( SQL Server 2000或 SQL Server 2005 都適用)來進行操作,兩者之間最大的差異在於連線使用的物件類別( ACCESS 資料庫使用 OLEDB類別, SQL Server 使用 sqlclient )與 Connection 物件的連線字串,詳細說明請見第五章

Page 67: 第六章、 RFID 資訊系統開發

67/91

SQL Server 資料庫 請使用 SQL Server 建立一個名稱為 TAG 的

資料庫,同時建立一個儲存卡號資訊的資料表,名稱亦為 card_info ,各欄位的名稱、型態、資料長度與格式設定亦同表 6-2 所示,設定畫面如圖 6-22 所示,同時在圖 6-23 的畫面中輸入資料

Page 68: 第六章、 RFID 資訊系統開發

68/91

圖 6-22 、 SQL Server 資料庫設定畫面

Page 69: 第六章、 RFID 資訊系統開發

69/91

圖 6-23 、 SQL Server 資料庫資料輸入畫面

Page 70: 第六章、 RFID 資訊系統開發

70/91

SQL Server 資料庫 SQL Server 資料庫不同於 ACCESS 資料庫,

前者是支援 Client/Server架構的資料庫管理系統,所以需要設定 TAG 資料庫的使用者權限,如圖 6-24 所示,設定一個名稱為 rfid的使用者可以開啟 TAG 資料庫(密碼就請讀者自行設定與建立),但是只具備有 datareader 與 datawriter 的權限,如圖 6-25

Page 71: 第六章、 RFID 資訊系統開發

71/91

圖 6-24 、設定 SQL Server 資料庫使用者畫面

Page 72: 第六章、 RFID 資訊系統開發

72/91

圖 6-25 、設定 SQL Server 資料庫使用者權限畫面

Page 73: 第六章、 RFID 資訊系統開發

73/91

SQL Server 資料庫 最後依照第五章連結 SQL Server 資料庫的

方法,先引用 System.Data.SqlClient 的名稱空間後,改寫 6-2節的 showmember函式,讓其可以連結 SQL Server 內 TAG 資料庫的card_info 資料表進行資料比對,程式碼部分如下所示,此處只列出不同的地方,分別是引用的類別與 showmember函式

執行結果則如圖 6-26 所示

Page 74: 第六章、 RFID 資訊系統開發

74/91

圖 6-26 、連結 SQL Server 資料庫後查詢使用者資料畫面

Page 75: 第六章、 RFID 資訊系統開發

75/91

藍芽讀取器

Page 76: 第六章、 RFID 資訊系統開發

76/91

藍芽讀取器 我們在第二章中介紹過設定 USB 介面的方

式,這裡我們介紹 RFID藍芽讀取器的設定方法,並透過 SerialPort 物件抓取讀卡機訊號。首先介紹硬體設定方法,設定電腦透過藍芽與藍芽讀取器進行通訊,請確定您有將讀取器的藍芽開啟

如圖 6-27 所示,在電腦上找到藍芽設定程式,每台電腦狀況都不同,請依您的電腦裝況選用,但都是藍芽設定程式

Page 77: 第六章、 RFID 資訊系統開發

77/91圖 6-27 、開啟藍芽設定程式畫面

Page 78: 第六章、 RFID 資訊系統開發

78/91

藍芽讀取器 接著將看到「新增連線精靈」,透過本精靈

來搜尋與設定可以使用的藍芽裝置,如圖6-28 所示,按下「下一步」就可以開始自動搜尋功能(再次提醒,藍芽讀取器的藍芽功能一定要開啟,這裡才會有作用),如圖6-29

Page 79: 第六章、 RFID 資訊系統開發

79/91

圖 6-28 、藍芽裝置搜尋設定程式畫面

Page 80: 第六章、 RFID 資訊系統開發

80/91

圖 6-29 、藍芽裝置自動搜尋畫面

Page 81: 第六章、 RFID 資訊系統開發

81/91

藍芽讀取器 如果有搜尋到周邊的藍芽裝置,將如圖 6-3

0 所示,搜尋到一個叫「 WM300BT 」的藍牙裝置,按下「下一步」將看到圖 6-31 設定完成的畫面,並且告知其連接埠位置,本例是在 COM40

Page 82: 第六章、 RFID 資訊系統開發

82/91

圖 6-30 、搜尋到一個週邊藍芽裝置畫面

Page 83: 第六章、 RFID 資訊系統開發

83/91

圖 6-31 、藍芽裝置設定完成畫面

Page 84: 第六章、 RFID 資訊系統開發

84/91

藍芽讀取器 至此只知道週邊有一個藍芽裝置,但是還沒

有真正連線,如果要連線可以使用圖 6-32 ,用右鍵點選裝置後,再選擇「連線」就可以。第一次連線多數會出現 PIN密碼輸入畫面,如圖 6-33 ,一般預設密碼都是「 0000 」,輸入後就可以完成實際連線

Page 85: 第六章、 RFID 資訊系統開發

85/91

圖 6-32 、藍芽裝置設定連線畫面

Page 86: 第六章、 RFID 資訊系統開發

86/91

圖 6-33 、藍芽裝置輸入 PIN 密碼畫面

Page 87: 第六章、 RFID 資訊系統開發

87/91

藍芽讀取器 接著,請建立本章第 5 個專案,名稱為 BT_

RFID ,介面如圖 6-34 所示,至此讀者應該可以知道每個元件怎麼使用,這裡就不再贅述

Page 88: 第六章、 RFID 資訊系統開發

88/91

圖 6-34 、 BT_RFID 專案 Form1 表單畫面

Page 89: 第六章、 RFID 資訊系統開發

89/91

藍芽讀取器 再來,我們在 Button1_Click 事件中直接透

過 SerialPort 物件開啟 COM40 通訊埠,設定畫面如圖 6-35 ,程式碼如下所示,結果如圖 6-36 所示

Page 90: 第六章、 RFID 資訊系統開發

90/91圖 6-35 、 BT_RFID 專案 SerialPort1 設定畫面

Page 91: 第六章、 RFID 資訊系統開發

91/91

圖 6-36 、 COM40 開啟成功畫面

Page 92: 第六章、 RFID 資訊系統開發

92/91

藍芽讀取器 最後,透過 SerialPort 的 DataReceived 事件

接收藍芽訊號 執行結果如圖 6-37 所示

Page 93: 第六章、 RFID 資訊系統開發

93/91

圖 6-37 、藍芽訊號接收卡號成功畫面

Page 94: 第六章、 RFID 資訊系統開發

94/91

POS 範例再討論

Page 95: 第六章、 RFID 資訊系統開發

95/91

POS 範例再討論 還記得我們在第五章的最後面寫了一個簡單

的銷售系統嗎?現在我們會讀取 RFID 卡片資料,所以我們將 POS 專案的交易端,從原來的手動選取產品,改成讀取產品上的 RFID 標籤,要做到這件事,我們需要修改 product 資料表(內容請見 5-10節說明),我們將原來的 p_id欄位型態改成「 varchar 8 」,用來儲存電子標籤卡號,如下所示

Page 96: 第六章、 RFID 資訊系統開發

96/91

表格 : 產品資料 product  

欄位 Fieldname DataType Key 說明

產品編號 p_id varchar 8 PKRFID 電子標籤號碼

產品名稱 p_namevarchar 255    

售價 pricre int    

Page 97: 第六章、 RFID 資訊系統開發

97/91

POS 範例再討論 需要修改的表單為「 sell.vb 」,將原來使

用「搜尋」功能進行的產品交易作業,改成用 RFID 讀取器來進行。修改後的專案我們放在本書光碟內的 CH6\POS2 目錄內,請讀者自行參考