天天看點

Winform開發架構之讀卡器和條碼掃描槍的資料接收處理

在我們開發一些項目的時候,一般需要一些外圍的裝置進行資料處理,如ID/IC讀卡器擷取卡号、雷射條碼掃描槍、USB攝像頭、USB方式的發票據列印機(POS列印機)、USB來電錄音盒、普通列印機等一系列附屬裝置。借助這些裝置,可以使我們的業務流程更嚴謹,輸入資料更友善,或者能夠一些特殊的資料等功能。本文主要介紹其中的ID讀卡器(IC讀卡器)快速讀取卡号,以及實用雷射條碼槍的條碼掃描錄入功能,後面的一些硬體裝置的處理,後續文章在繼續介紹。

前面介紹的裝置,在很多場合上都可能用到,如我的會員管理系統裡面,就需要用到下面的裝置處理。

Winform開發架構之讀卡器和條碼掃描槍的資料接收處理

本文主要針對性了解ID讀卡器和條碼槍的裝置資料處理,這兩種裝置雖然不同,但是它們相似的地方就是都支援在光标處錄入資料的,就有點類似我們的鍵盤快速錄入一樣,當然雷射條碼槍也支援很多種方式的事件處理操作,這是後話。

在我的會員管理系統裡面,錄入卡号一般是通過ID讀卡器擷取的,在界面上設定一個可以彈出錄入的文本框,也友善手工錄入卡号,如下面的界面功能所示。

Winform開發架構之讀卡器和條碼掃描槍的資料接收處理

當然,有時候,我們可能不需要提供手工錄入,那麼就不能通過光标錄入方式擷取掃描的内容,因為我們把輸入框設定為隻讀的了,是以這種情況,就就應該通過事件來擷取裝置的輸入内容。

Winform開發架構之讀卡器和條碼掃描槍的資料接收處理

在條碼槍處理讀取條形碼或者二維碼的時候,我們一般都是和商品相關的地方使用條形碼,二維碼也可以使用,條形碼可能一般帶有資料供閱讀,二維碼則沒有,但是都可以通過裝置讀取出來到文本框裡面,一般如果錄入,就停放光标在文本框就可以了,如商品的資訊的錄入。在我們需要輸入條碼的地方點一下,然後操作條碼槍錄入條碼即可,這種不需要額外的代碼處理。

Winform開發架構之讀卡器和條碼掃描槍的資料接收處理

但是對于一些我們需要快速錄入商品資訊的界面,如客戶消費界面,那麼就需要對條碼的事件進行處理了。

例如下面的界面,在消費确認前的産品錄入,我們都是通過條碼槍的快速掃描産品進行錄入的,這時候條碼槍就代替了手工的錄入,我們可以每次掃描一次,就在清單裡面自動增加一個對應商品的記錄,非常友善的了。

Winform開發架構之讀卡器和條碼掃描槍的資料接收處理

在前面小節介紹了一些利用ID讀卡器錄入資料和使用條碼槍的場景,對于如果是在可輸入文本框裡面獲得内容,不用任何編碼,如果是在隻讀界面或者窗體上獲得裝置的資料,那麼就可以通過事件進行處理了,那麼讀卡器和掃描槍的事件應該如何處理的呢。

我的做法,是統一在我的Winform開發架構的界面層基類子產品裡面,增加一些硬體相關的處理類和界面,這樣在各個架構派生出來的項目就可以很友善使用了。

Winform開發架構之讀卡器和條碼掃描槍的資料接收處理

其中Device裡面的CardReader就是IC、ID讀卡器擷取操作的處理,一般來說,這些卡都是以00開始的,是以我們的處理類,通過一個Time來控制連續擷取資料的處理就可以了,主要就是監聽KeyUp事件。

以CardReader為例,它的完整代碼如下所示。

CardReader封裝類, 它的使用操作如下所示。我們通過事件就可以擷取到完整的輸入内容,然後進行資料的綁定或處理即可,代碼如下所示。

然後我們為了友善使用,還可以定義一個統一的處理讀卡器和掃描槍的接收資料的小視窗。

Winform開發架構之讀卡器和條碼掃描槍的資料接收處理

這個彈出的小視窗用來處理讀卡器,掃描槍等資訊的錄入就可以了,當然上述的如CardReader/USBScanner還是可以獨立使用,如我們在一個隻讀控件或者視窗裡面,一樣可以監聽到對應的裝置資料讀取操作,但裝置有資料讀取完成過後,就會觸發相應的事件了。

下面代碼就是上面裝置資訊讀取的代碼

繼續閱讀