條形碼源碼
㈠ 怎樣用C語言做一個條形碼
一、條形碼的讀取
用過鍵盤口式的掃條碼工具的朋友就知道,它就如同在鍵盤上按下數字鍵一樣,基本不需任何編程和處理。但如果你使用的是其它介面的話,可能你就要為該設備編寫通訊代碼了。以下有一段簡單的25針串口的條碼讀取器通訊代碼。
Option Explicit
Dim sData As String
Private Sub Form_Load()
With MSComm1
.CommPort = 3 '設為COM3,試運行的系統而定,你可提供一個Combox讓用戶選擇。
.PortOpen = True '打開通訊埠
End With
End Sub
Private Sub MSComm1_OnComm()
Dim EndPos As Integer
Select Case MSComm1.CommEvent
Case comEvReceive '當有數據傳送過來時
sData = sData & Trim(MSComm1.Input)
'檢索回車,通常讀卡機每組數據結尾都返回一個回車作為結束符
EndPos = InStr(1, sData, Chr(13))
If EndPos = 0 Then '如果未結束就繼續努力
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 '關閉埠
End
End Sub
二、條形碼的生成
看完以上關於條碼讀取的代碼是否覺得很容易呢?對,在VB上編程本來就不難。以下關於條形碼生成的代碼也是很容易理解,只需使用一個OFFICE的附帶的BarCode控制項就可以輕松列印出11種不同標準的條形碼,足以滿足我們的要求。想起我書架上的一本書中的一篇用Turbo C編寫條形碼列印程序文章,長篇大論,那時不知看了n天,打了n小時字結果也不盡人意,現在真是幸福多了:)。廢話說完,得回歸正題。且看條形碼生成的代碼及有關說明。
源代碼主要由兩個窗體(frmMain主窗體和frmOption條碼設置窗體)和兩個模塊組成(modGetScreen.bas、SysDLG32.bas)。考慮到篇幅,這里只列出部分較為關鍵的代碼。
新建一個標准工程,添加一個名為(Microsoft Access BarCode Control9)的條形碼部件,並添加一個條碼控制項到窗口,並將窗口改名為frmMain,如圖所示。由於控制項比較多,這里不便細說,詳細內容請看源代碼。
模塊modGetScreen.bas代碼如下:
Option Explicit
'聲明BitBlt、GetDesktopWindow、GetWindowDC、ReleaseDC這幾個API函數略
Public RegUser As Boolean
Sub GetObjImage1(Obj As Object, OwnerForm As PictureBox, Picture1 As PictureBox)
'hDC
Dim hWndDesk As Long
Dim hDCDesk As Long
'區域表達變數
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標記
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
條形碼設置窗體frmOption.frm代碼如下:
Option Explicit
'條形碼設置模塊
Private Sub cboBig_Click()
BarCode1.Style = cboBig.ListIndex '改變標准
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 '是否顯示數據
End Sub
Private Sub cmdChange_Click()
'設置長、寬大小
BarWidth = BarCode1.Height
BarHeight = BarCode1.Width
cmdRefresh_Click
End Sub
Private Sub cmdOK_Click()
'傳送條形碼設定到主界面
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() '初始化選項
LoadBigClass cboBig
LoadSmallClass cboSmall
LoadLineSize cboLine
LoadDirection cboDirection
End Sub
Sub LoadBigClass(cbo As ComboBox) '條碼標准
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
許多人在編寫資料庫應用程序時,都想要加上條形碼功能加強工作效率,尤其是銷售管理,圖書館管理這類流量大的應用軟體,但由於條形碼技術難以掌握、標誰又多以及過去的技術種種原因,使得許多人望而卻步。本文介紹的一套簡單實用的條形碼解決方法,希望能幫助各位完善軟體系統的功能。文章源代碼可以發信到[email protected]索取。
random庫帶有一個choice方法可以從列表中隨機選擇一個元素
Python
mylist = ['z', 'y', 'x', 'v', 'u']
from random import choice
print choice(mylist)
㈢ 我想具體知道一下條形碼的生成方法,那裡有源代碼漢字也可以生成的那種。萬分火急,謝謝,拜託。
列印條形碼標簽,有許多方法.
1 最原始是用指令方式:
這時一定要用條形碼列印機(不是辦公列印機), 你要向廠家拿到該列印機的指令技術資料,
然後編輯指令(一串字元串), 最後把指令發給列印機埠
(比如, 列印機接並口LPT1, 則發給LPT1, 把列印機埠當作文件名稱一樣打開讀寫,
然後把指令COPY 指令文件 LPT1),
這種方式兼容性差,就是說找個指令只能這種型號列印機能用;
2 用列印機畫布
根據條形碼編碼演算法,把數字轉換成圖形,然後在畫布畫好,
然後把列印畫布即可,這個估計你理解不了,因為轉換成圖形的演算法很復雜.
不過,我們有封裝了一個動態庫dll,可以很方便調用,不過是要錢的;
3 最簡單的是用第三方控制項
比如 最好用的應該是FastReport(報表設計工具),直接拖拉條形碼控制項到報表設計面板,
填入你要列印的條形碼數值,它就自動生成了,然後調用fastReport的列印方法即可;
網上資料也很多.
4 還有一種方法是條形碼字體
網上可以找到code128或code39的條形碼字體,填入數值就可以生成條形碼,
然後像列印其他普通的內容一樣去編程即可,當然這種條形碼字體一般條形碼
圖形的精度不是很高,識別起來有時會比較不敏捷.
5 要能包含中文的條形碼只能用二維碼,比如QR碼 。
_______________________________________
廣州溯源:物聯網,企業移動應用,條形碼軟體
㈣ android裡面 條形碼掃描 應該是怎麼做的,有沒有源碼 什麼的,發一個給我啊
1、下載ZBar官方SDK程序(下載鏈接:http://zbar.sourceforge.net/index.html),並打開項目,如下圖:
㈤ 最近需要一些條形碼解碼的源代碼 圖像到字元的 C++語言的或是C#實現的都可以,請各位高手賜教
你說的條形碼不是依靠掃描槍的條碼嗎?掃描槍的條碼解碼演算法一般都是掃描槍產品驅動里邊封裝好了,直接會給你一個字元串,不需要自己做。
如果是僅僅一個圖片的解碼就比較麻煩了,圖像識別技術當前還不是很成熟,沒有聽說有什麼特別可靠的演算法,不然像那種網站驗證碼就沒有意義了。。。
自己寫的話沒有思路,只能一個像素點一個像素點的判斷,很難受,很慢。
㈥ 求條形碼識別源碼
C#語言:public string bar_code(object str, int ch, int cw, int type_code)
{
string strTmp=str.ToString();
string code=strTmp;
strTmp=strTmp.ToLower();
int height=ch;
int width=cw;
strTmp=strTmp.Replace("0", "_|_|__||_||_|");;
strTmp=strTmp.Replace("1", "_||_|__|_|_||");
strTmp=strTmp.Replace("2", "_|_||__|_|_||");
strTmp=strTmp.Replace("3", "_||_||__|_|_|");
strTmp=strTmp.Replace("4", "_|_|__||_|_||");
strTmp=strTmp.Replace("5", "_||_|__||_|_|");
strTmp=strTmp.Replace("7", "_|_|__|_||_||");
strTmp=strTmp.Replace("6", "_|_||__||_|_|");
strTmp=strTmp.Replace("8", "_||_|__|_||_|");
strTmp=strTmp.Replace("9", "_|_||__|_||_|");
strTmp=strTmp.Replace("a", "_||_|_|__|_||");
strTmp=strTmp.Replace("b", "_|_||_|__|_||");
strTmp=strTmp.Replace("c", "_||_||_|__|_|");
strTmp=strTmp.Replace("d", "_|_|_||__|_||");
strTmp=strTmp.Replace("e", "_||_|_||__|_|");
strTmp=strTmp.Replace("f", "_|_||_||__|_|");
strTmp=strTmp.Replace("g", "_|_|_|__||_||");
strTmp=strTmp.Replace("h", "_||_|_|__||_|");
strTmp=strTmp.Replace("i", "_|_||_|__||_|");
strTmp=strTmp.Replace("j", "_|_|_||__||_|");
strTmp=strTmp.Replace("k", "_||_|_|_|__||");
strTmp=strTmp.Replace("l", "_|_||_|_|__||");
strTmp=strTmp.Replace("m", "_||_||_|_|__|");
strTmp=strTmp.Replace("n", "_|_|_||_|__||");
strTmp=strTmp.Replace("o", "_||_|_||_|__|");
strTmp=strTmp.Replace("p", "_|_||_||_|__|");
strTmp=strTmp.Replace("r", "_||_|_|_||__|");
strTmp=strTmp.Replace("q", "_|_|_|_||__||");
strTmp=strTmp.Replace("s", "_|_||_|_||__|");
strTmp=strTmp.Replace("t", "_|_|_||_||__|");
strTmp=strTmp.Replace("u", "_||__|_|_|_||");
strTmp=strTmp.Replace("v", "_|__||_|_|_||");
strTmp=strTmp.Replace("w", "_||__||_|_|_|");
strTmp=strTmp.Replace("x", "_|__|_||_|_||");
strTmp=strTmp.Replace("y", "_||__|_||_|_|");
strTmp=strTmp.Replace("z", "_|__||_||_|_|");
strTmp=strTmp.Replace("-", "_|__|_|_||_||");
strTmp=strTmp.Replace("*", "_|__|_||_||_|");
strTmp=strTmp.Replace("/", "_|__|__|_|__|");
strTmp=strTmp.Replace("%", "_|_|__|__|__|");
strTmp=strTmp.Replace(" ", "_|__|_|__|__|");
strTmp=strTmp.Replace(".", "_||__|_|_||_|");
strTmp=strTmp.Replace("_", "<span style='height:" height ";width:" width ";background:#FFFFFF;'></span>");
strTmp=strTmp.Replace("|", "<span style='height:" height ";width:" width ";background:#000000;'></span>");
if(type_code==1)
{
return strTmp "<BR>" code;
}
else
{
return strTmp;
}
}參考地址: http://www.7747.net/kf/201009/74759.html