新人求助,powerbuilder 列印條碼始終不行,用code128 條碼字體能打出來可是掃描不出來。懇求高手指點,萬分感謝!
uj5u.com熱心網友回復:
看看列印質量是不是太差,確定槍已經設定好,有些槍默認不能識別code128 ,需要設定。uj5u.com熱心網友回復:
試過換槍,手機掃描多不行,我是直接參考字體,是不是還要計算uj5u.com熱心網友回復:
分不夠,好心人給一份powerbuilder 條碼控制元件我吧,455791867@QQ。comuj5u.com熱心網友回復:
在前后面加上*,比如:112233 顯示條碼時用 *112233*uj5u.com熱心網友回復:
好像code39才要加
uj5u.com熱心網友回復:
條碼字體要加校驗碼才能掃的比如說你列印1234并不是把值賦為1234就可以了
參照下面的函式轉換
//函式名稱:f_getcode128()
//引數: as_sourcetext string 源字串
//回傳值: string 轉成code128碼后可列印的字串
//功能描述:取code128碼字串
//創建人: 康劍民
//創建日期:2008-12-10
//版本號: V1.0
//備注:要在PB中正常列印code128碼字串,必須使用PB10以上(支持Unicode碼)
//*******************************************************************/
//CODE128條碼基礎知識
//CODE128有三個版本
//CODE128A: 標準數字和字母, 控制符, 特殊字符
//CODE128B: 標準數字和字母, 小寫字母, 特殊字符
//CODE128C: [00]-[99]的數字對集合, 共100個
//本函式采用CODE128B版本
//條碼由開始位、資料位、校驗位、停止位組成
//計算程序:
//1.取各字符ASC碼乘以字符序號之和(以ASC=32為分界點,大于32減32,小于32加64)
//2.計算校驗碼
//3.組合條碼:開始位+資料位+校驗位+停止位
int li_asc_total = 104
int li_asc_tmp,i
char lc_start=char(204)//采用CODE128B版本
char lc_stop=char(206)
int li_check_digit
string ls_check_digit
//1.取各字符ASC碼乘以字符序號之和(以ASC=32為分界點,大于32減32,小于32加64)
For i = 1 To len(as_sourcetext)
li_asc_tmp = Asc(mid(as_sourcetext,i, 1))
If li_asc_tmp >= 32 Then
li_asc_total = li_asc_total + (li_asc_tmp - 32) * i
Else
li_asc_total = li_asc_total + (li_asc_tmp + 64) * i
End If
Next
//2.計算校驗碼
li_check_digit = mod(li_asc_total,103)
If li_check_digit >= 95 Then//特殊字符
li_check_digit = li_check_digit + 100
Else
li_check_digit = li_check_digit + 32
end if
ls_check_digit = char(li_check_digit)
//3.組合條碼:開始位+資料位+校驗位+停止位
Return lc_start + as_sourcetext + ls_check_digit + lc_stop
uj5u.com熱心網友回復:
非常感謝!成功后分享大家uj5u.com熱心網友回復:
也有可能是你條碼長寬比例有問題。。。。你可以用條碼列印機自帶的軟體打一個標準的條碼出來,跟你軟體的條碼進行對比。
如果能做到肉眼分辨不出差別,就不會有問題,如果存在差異,那只能說明你條碼還是有問題的
uj5u.com熱心網友回復:
