包含vb.net條碼128的詞條

VB 識別條形碼

一、條形碼的讀取

十載的弓長嶺網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整弓長嶺建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“弓長嶺網(wǎng)站設(shè)計(jì)”,“弓長嶺網(wǎng)站推廣”以來,每個客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

用過鍵盤口式的掃條碼工具的朋友就知道,它就如同在鍵盤上按下數(shù)字鍵一樣,基本不需任何編程和處理。但如果你使用的是其它接口的話,可能你就要為該設(shè)備編寫通訊代碼了。以下有一段簡單的25針串口的條碼讀取器通訊代碼。

Option Explicit

Dim sData As String

Private Sub Form_Load()

With MSComm1

.CommPort = 3 '設(shè)為COM3,試運(yùn)行的系統(tǒng)而定,你可提供一個Combox讓用戶選擇。

.PortOpen = True '打開通訊端口

End With

End Sub

Private Sub MSComm1_OnComm()

Dim EndPos As Integer

Select Case MSComm1.CommEvent

Case comEvReceive '當(dāng)有數(shù)據(jù)傳送過來時

sData = sData Trim(MSComm1.Input)

'檢索回車,通常讀卡機(jī)每組數(shù)據(jù)結(jié)尾都返回一個回車作為結(jié)束符

EndPos = InStr(1, sData, Chr(13))

If EndPos = 0 Then '如果未結(jié)束就繼續(xù)努力

Else '讀完一組。

lblBarCode.Caption = sData '顯示一組條形碼

With lstBarCode

.AddItem Mid(sData, 1, EndPos - 1) '添加一組條形碼到列表

End With

sData = "" '清空

End If

End Select

End Sub

Private Sub cmdEnd_Click()

MSComm1.PortOpen = False '關(guān)閉端口

End

End Sub

二:條形碼的生成

在VB上編程本來就不難。以下關(guān)于條形碼生成的代碼也是很容易理解,只需使用一個OFFICE的附帶的 BarCode控件就可以輕松打印出11種不同標(biāo)準(zhǔn)的條形碼,足以滿足我們的要求。想起我書架上的一本書中的一篇用Turbo C編寫條形碼打印程序文章,長篇大論,那時不知看了n天,打了n小時字結(jié)果也不盡人意,現(xiàn)在真是幸福多了:)。廢話說完,得回歸正題。且看條形碼生成的代碼及有關(guān)說明。

源代碼主要由兩個窗體(frmMain主窗體和frmOption條碼設(shè)置窗體)和兩個模塊組成(modGetScreen.bas、SysDLG32.bas)??紤]到篇幅,這里只列出部分較為關(guān)鍵的代碼。

新建一個標(biāo)準(zhǔn)工程,添加一個名為(Microsoft Access BarCode

Control9)的條形碼部件,并添加一個條碼控件到窗口,并將窗口改名為frmMain,如圖所示。由于控件比較多,這里不便細(xì)說,詳細(xì)內(nèi)容請看源代碼。

模塊modGetScreen.bas代碼如下:

Option Explicit

聲明BitBlt、GetDesktopWindow、GetWindowDC、ReleaseDC這幾個API函數(shù)略

Public RegUser As Boolean

Sub GetObjImage1(Obj As Object, OwnerForm As PictureBox, Picture1

As PictureBox)

'hDC

Dim hWndDesk As Long

Dim hDCDesk As Long

'區(qū)域表達(dá)變量

Dim x As Long

Dim y As Long

Dim w As Long

Dim h As Long

x = Obj.Left Screen.TwipsPerPixelX

y = Obj.Top Screen.TwipsPerPixelY

w = Obj.Width Screen.TwipsPerPixelX

h = Obj.Height Screen.TwipsPerPixelY

hDCDesk = OwnerForm.hdc

'取出圖像

Call BitBlt(Picture1.hdc, 0, 0, w, h, hDCDesk, x, y,

vbSrcCopy)

Call ReleaseDC(hWndDesk, hDCDesk)

End Sub

主窗體frmMain.frm部分代碼如下:

Private Sub cmdPrint_Click()

'生成條形碼圖像

Dim r As Long, i As Integer, t As String,cfile As

String '臨時變量

t = BarCode

For i = 0 To Val(Times) - 1

BarCode1.Value = BarCode + i

DoEvents

Picture1.Refresh

GetObjImage1 BarCode1, Conel, Picture1

If RegUser = False Then '如果未注冊添加MASK標(biāo)記

Picture1.PaintPicture Picture2.Picture, 300, 300

End If

If Dir(SavePath, vbDirectory) = "" Then MkDir SavePath

SavePath = SavePath IIf(Right(SavePath, 1) "", "",

"")

cfile = SavePath BarCode1.Value ".bmp"

SavePicture Picture1.Image, cfile '將條形碼保存為圖像文件以便打印

Next

BarCode = t

End Sub

條形碼設(shè)置窗體frmOption.frm代碼如下:

Option Explicit

'條形碼設(shè)置模塊

Private Sub cboBig_Click()

BarCode1.Style = cboBig.ListIndex '改變標(biāo)準(zhǔn)

End Sub

Private Sub cboDirection_Click()

BarCode1.Direction = cboDirection.ListIndex '改變方向

End Sub

Private Sub cboLine_Click()

BarCode1.LineWeight = cboLine.ListIndex '改變線寬

End Sub

Private Sub cboSmall_Click()

BarCode1.SubStyle = cboSmall.ListIndex '改變樣式

End Sub

Private Sub Check1_Click()

BarCode1.ShowData = Check1.Value '是否顯示數(shù)據(jù)

End Sub

Private Sub cmdChange_Click()

'設(shè)置長、寬大小

BarWidth = BarCode1.Height

BarHeight = BarCode1.Width

cmdRefresh_Click

End Sub

Private Sub cmdOK_Click()

'傳送條形碼設(shè)定到主界面

With frmMain.BarCode1

.LineWeight = BarCode1.LineWeight

.Style = BarCode1.Style

.SubStyle = BarCode1.SubStyle

.Direction = BarCode1.Direction

.Width = BarCode1.Width

.Height = BarCode1.Height

.ShowData = BarCode1.ShowData

Me.Hide

End With

With frmMain

.Picture1.Width = .BarCode1.Width

.Picture1.Height = .BarCode1.Height

.Conel.Width = .BarCode1.Width

.Conel.Height = .BarCode1.Height

End With

End Sub

Private Sub cmdRefresh_Click()

BarCode1.Width = BarWidth

BarCode1.Height = BarHeight

End Sub

Private Sub Form_Load()

LoadBarInfo

BarWidth = BarCode1.Width

BarHeight = BarCode1.Height

End Sub

Sub LoadBarInfo() '初始化選項(xiàng)

LoadBigClass cboBig

LoadSmallClass cboSmall

LoadLineSize cboLine

LoadDirection cboDirection

End Sub

Sub LoadBigClass(cbo As ComboBox) '條碼標(biāo)準(zhǔn)

With cbo

.AddItem "UPC-A"

.AddItem "UPC-E"

.AddItem "EAN-13"

.AddItem "EAN-8"

.AddItem "Case Code"

.AddItem "Codabar (NW-T)"

.AddItem "Code-39"

.AddItem "Code-128"

.AddItem "U.S. Postnet"

.AddItem "U.S. Postal FIM"

.AddItem "JP Post"

.ListIndex = 2

End With

End Sub

Sub LoadSmallClass(cbo As ComboBox) '條碼樣式

With cbo

.AddItem "Standard"

.AddItem "2-Digit Supplement"

.AddItem "5-Digit Supplement"

.AddItem "POS Case Code"

.ListIndex = 0

End With

End Sub

許多人在編寫數(shù)據(jù)庫應(yīng)用程序時,都想要加上條形碼功能加強(qiáng)工作效率,尤其是銷售管理,圖書館管理這類流量大的應(yīng)用軟件,但由于條形碼技術(shù)難以掌握、標(biāo)誰又多以及過去的技術(shù)種種原因,使得許多人望而卻步。本文介紹的一套簡單實(shí)用的條形碼解決方法,希望能幫助各位完善軟件系統(tǒng)的功能。

如何用VB.NET生成GUID

由于各種原因,開發(fā)人員使用全局唯一標(biāo)識符(GUID),例如,在類中給全局標(biāo)識符賦值使用GUID或者是在處理數(shù)據(jù)庫的時候使用GUID。GUID是微軟分布計(jì)算環(huán)境(DCE)全局唯一標(biāo)識符(UUID)的實(shí)現(xiàn)。GUID是128位全局唯一標(biāo)識符,它是根據(jù)不斷頻繁變化的因素自動產(chǎn)生的。有一個相當(dāng)小的可能性,那就是GUID的值可能都是零,或者是它可能等于其它的GUID。你能使用GUID通過所有需要唯一標(biāo)識的計(jì)算機(jī)或者網(wǎng)絡(luò)。GUID可以標(biāo)識界面或者類對象。一個 GUID由一組8位的十六進(jìn)制數(shù)和三組4位十六進(jìn)制數(shù)(也就是一組12位十六進(jìn)制數(shù))組成。在下面的腳本中,我手動生成了GUID,我利用VB.NET在后面的應(yīng)用中使用了它:Private Sub GenerateGUID() Dim sGUID As String sGUID = System.GUID.NewGUID.ToString() MessageBox.Show(sGUID) End Sub在這個例子中,我定義了一個字符串變量,sGUID,這個變量是用來保存將生成的GUID。然后我再將System.GUID.NewGUID(使用System.GUID名字空間)這個方法的返回值賦給sGUID,再使用ToString()將這個結(jié)果轉(zhuǎn)換成字符串類型。這樣就可以在消息對話框中顯示這個結(jié)果了。注意:Visual Studio .NET允許你通過運(yùn)行Visual Studio .NET Command Prompt交互生成GUID??梢栽L問MSDN網(wǎng)站獲得更詳細(xì)的信息。你也可以參考TechRepublic的另一篇文章“Generating and working with GUIDs in .NET。

VB.net如何在水晶報表上打印條碼

很簡單。只需要安裝Code39字體,或者加載到系統(tǒng)中就可以。

報表設(shè)置該字體自然就表示成條形碼了。

Code39字體從網(wǎng)上搜索能搜索到。

vb.net條碼打印控件

工具箱,然后隨便選擇一項(xiàng),右鍵 選擇項(xiàng),在.com控件里,microsoft bar ctrol 9.0

VB.NET UNICODE碼 顯示

Public?Class?Form1

Dim?b()?As?Byte

Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click

b?=?System.Text.Encoding.Default.GetBytes(TextBox1.Text)

For?i?=?0?To?UBound(b)

TextBox2.AppendText(i.ToString??"?")

Next

End?Sub

Private?Sub?Button2_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button2.Click

TextBox1.Text?=?System.Text.Encoding.Default.GetString(b)

End?Sub

Private?Sub?Form1_Load(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?MyBase.Load

TextBox1.Text?=?"Google?free?online?translation?service?instantly?translates?text?and?web?pages。?該翻譯器支持:?中文(簡體),?中文(繁體),?shqip,?日本語,?русский,?langue?fran?aise?..."

End?Sub

End?ClassVB.Net中用String類型表示字符串,內(nèi)部采用Unicode編碼。當(dāng)需要在網(wǎng)絡(luò)或串口中收發(fā)字符串時,就需要在String和Byte數(shù)組之間進(jìn)行轉(zhuǎn)換,這項(xiàng)功能可以通過System.Text.Encoding類實(shí)現(xiàn)。

Private zeroChars()?As Char?=?{ChrW(0)}

Dim descBytes()?As Byte?=?System.Text.Encoding.Unicode.GetBytes(mDescription)

Dim?description As?String?=?System.Text.Encoding.Unicode.GetString(rBuffer,?offset,?length).TrimEnd(zeroChars)

說明:C語言中用'\0'表示字符串結(jié)束,而String類型中0是有效字符,顯示時是空白字符,會占用顯示寬度,可以用TrimEnd方法將字符串末尾的零字符去掉。

主要敘說一下StrConv 函數(shù)conversion參數(shù)最后兩個值的含義和用途,并舉例說明。

1、語法

StrConv(string, conversion, LCID)

StrConv 函數(shù)的語法有下面的命名參數(shù):

部分 說明

string 必要參數(shù)。要轉(zhuǎn)換的字符串表達(dá)式。

conversion 必要參數(shù)。Integer。其值的和決定轉(zhuǎn)換的類型。

LCID 可選的。如果與系統(tǒng)LocaleID不同,則為LocaleID(系統(tǒng)LocaleID為缺省值。)

設(shè)置值

conversion 參數(shù)的設(shè)置值為:

常數(shù) 值 說明

vbUpperCase 1 將字符串文字轉(zhuǎn)成大寫。

vbLowerCase 2 將字符串文字轉(zhuǎn)成小寫。

vbProperCase 3 將字符串中每個字的開頭字母轉(zhuǎn)成大寫。

vbWide* 4* 將字符串中單字節(jié)字符轉(zhuǎn)成雙字節(jié)字符。

vbNarrow* 8* 將字符串中雙字節(jié)字符轉(zhuǎn)成單字節(jié)字符。

vbKatakana** 16** 將字符串中平假名字符轉(zhuǎn)成片假名字符。

vbHiragana** 32** 將字符串中片假名字符轉(zhuǎn)成平假名字符。

vbUnicode 64 根據(jù)系統(tǒng)的缺省碼頁將字符串轉(zhuǎn)成 Unicode。

vbFromUnicode 128 將字符串由 Unicode 轉(zhuǎn)成系統(tǒng)的缺省碼頁。

*應(yīng)用到遠(yuǎn)東國別。

**僅應(yīng)用到日本。

說明:前面3個參數(shù)比較簡單,后面4個我們用不上,就不說了,主要說說后面兩個。

2、ANSI 格式

語法中說的缺省碼頁就是ANSI模式,英文環(huán)境下 的ANSI 格式其實(shí)也就是ASCII碼,其它環(huán)境就不一樣了,比如中文環(huán)境,就是ASCII,一個字節(jié)表示一個字符,GB2312,2個字節(jié)表示一個漢字,所以中文環(huán)境下的ANSI格式就是ASCII碼+GB2312,早期的DOS系統(tǒng)中純文本就是這種格式,這種格式下,通過最高位來判斷是中文字符(最高位是1)還是ASCII字符(最高位是0)。中文環(huán)境下保存文本文件時一般都采用ANSI格式,不過也有其他格式,比如UTF-8。

3、Unicode編碼

Unicode(統(tǒng)一碼、萬國碼、單一碼)是一種在計(jì)算機(jī)上使用的字符編碼。Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語言中的每個字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,以滿足跨語言、跨平臺進(jìn)行文本轉(zhuǎn)換、處理的要求。Unicode用兩個字節(jié)表示一個字符,涵蓋了世界上所有字符,和以前的字符集都不兼容,VB內(nèi)部字符串就是采用Unicode編碼,所以當(dāng)我們打開一個文本文件讀入數(shù)據(jù)的時候,其內(nèi)存中的內(nèi)容和文本文件的內(nèi)容是不一樣的,經(jīng)過了轉(zhuǎn)換,除非你采用二進(jìn)制方式讀入。

4、vbUnicode和vbFromUnicode含義

有了上面敘說,這兩個參數(shù)的含義就好理解了,就是Unicode編碼和ANSI編碼的互換,例如:

? ? ? textline= StrConv(plaintext,vbUnicode) ?

這兒textline是以字符串變量,plaintext是以字節(jié)變量保存著ANSI模式的字符內(nèi)容,例如,“2”這個字符,一個字節(jié),值是50,16進(jìn)制是32,“皖”這個漢字,兩個字節(jié),值是205和238,同樣是這兩個字符,作為字符串在內(nèi)存中都是兩個字節(jié),例如,“2”這個字符在內(nèi)存中16進(jìn)制值是0032。當(dāng)VB打開一個文件讀取文本內(nèi)容是,實(shí)際上自動進(jìn)行了上述轉(zhuǎn)換。

? ? ?plaintext?= StrConv(textline,?vbFromUnicode)

這兒進(jìn)行相反的轉(zhuǎn)換,就是將Unicode字符串轉(zhuǎn)換成ANSI模式,轉(zhuǎn)換結(jié)果必須以字節(jié)方式保存。

5、vbUnicode和vbFromUnicode用途

由于字符在內(nèi)存中的內(nèi)容和文件中的內(nèi)容不一致,所以必須要用到這種轉(zhuǎn)換,特別是系統(tǒng)間進(jìn)行數(shù)據(jù)交換、數(shù)據(jù)加密和解密,如果不做轉(zhuǎn)換可能導(dǎo)致得不到正確的結(jié)果。

比如,我們對一個文本文件進(jìn)行加密,這個文件是ANSI格式存儲的,當(dāng)從文件內(nèi)容讀入一行到內(nèi)存的時候,自動將內(nèi)容轉(zhuǎn)換成了Unicode格式,如果這時候?qū)ζ渥黾用苓\(yùn)算,其結(jié)果和文件中字符串加密結(jié)果是不一樣的,這樣的結(jié)果如果讓別人解密將無法得到正確的結(jié)果。如果對讀入內(nèi)存的內(nèi)容先做個轉(zhuǎn)換(textline是讀入內(nèi)容):

? ? ?plaintext?= StrConv(textline,?vbFromUnicode)

再對plaintext做加密,其結(jié)果就一樣了。

舉例(按行做加密和解密運(yùn)算,算法是AES+Base64):

[vb]?view plain?copy

Status?=?"Encrypting?File"

Open?FileName?For?Input?As?#1??????'?打開輸入文件。

Open?FileName2?For?Output?As?#2?????'?打開輸出文件。

Do?While?Not?EOF(1)

Line?Input?#1,?TextLine

plaintext?=?StrConv(TextLine,?vbFromUnicode)

Status?=?"Encrypting?Data"

m_Rijndael.SetCipherKey?pass,?KeyBits

m_Rijndael.ArrayEncrypt?plaintext,?ciphertext,?0

Status?=?"Converting?Text?to?Base64"

TextLine?=?Base64Encode(ciphertext)

Status?=?""

Print?#2,?TextLine????'?將字符串寫入文件。

Loop

Close

[vb]?view plain?copy

Status?=?"Decrypting?File"

Open?FileName?For?Input?As?#1??????'?打開輸入文件。

Open?FileName2?For?Output?As?#2????'?打開輸出文件。

Do?While?Not?EOF(1)

Line?Input?#1,?TextLine

Status?=?"Converting?Base64?to?Text"

ciphertext?=?Base64Decode(TextLine)

Status?=?"Decrypting?Data"

m_Rijndael.SetCipherKey?pass,?KeyBits

If?m_Rijndael.ArrayDecrypt(plaintext,?ciphertext,?0)??0?Then

Status?=?""

Exit?Sub

End?If

TextLine?=?StrConv(plaintext,?vbUnicode)

For?i?=?0?To?UBound(plaintext)

Debug.Print?plaintext(i)

Next?i

k?=?InStr(1,?TextLine,?Chr(0),?vbBinaryCompare)

If?k??0?Then?TextLine?=?Left(TextLine,?k?-?1)????'截掉加密時補(bǔ)的0

MsgBox?TextLine??"end"

Status?=?""

Print?#2,?TextLine????'?將字符串寫入文件。

Loop

Close

本文標(biāo)題:包含vb.net條碼128的詞條
本文路徑:http://muchs.cn/article48/doccsep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司營銷型網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)