最近的案子指定要用標籤印表機列印圓型標籤,還指定每張標籤要印3行字,公司採購的是TSC TTP-343 Plus這一型的標籤印表機
很奇怪的是照著手冊寫程式測試,VB可以成功控制列印,LabVIEW 7.1版就是有問題,在執行指定電腦輸出埠那邊就會出錯誤訊息,改用LabVIEW 8.6版去寫卻完全正常。要是有人知道LabVIEW 7.1版會出錯的原因請mail告知,萬分感謝
採購來的標籤印表機有附光碟片,按照說明手冊把TSCActiveX.dll和TSCLIB.dll這2個檔案複製到C:\windows\system資料夾內,然後在開始功能表的執行那邊輸入Regsvr32 TSCActiveX.dll後按確定,裝好驅動程式
光碟片內有許多電子手冊,需要的是TSCLIB.DLL函式庫使用說明(中文)和TSPL/TSPL2 Programming Language(英文)
TSCLIB.DLL函式庫使用說明有附VB範例程式,直接改寫成LabVIEW程式即可。要列印條碼或其他文字圖形的命令語法全在那本英文手冊中,用的語法是TSPL語言
這次的案子只要求列印文字,條碼和圖形都沒有,只使用到用作業系統字型列印功能,很簡單
完成的程式要在其他程式當SubVI使用
完成程式面板如下圖:
依順序為:error in→標籤機參數→列印設定~第1列內容→每行間距→第2~3列內容→列印參數→error out
1.標籤機參數:
a.標籤帶寬度:設定的是圓形標籤紙帶的總寬度,不是手冊所寫的標籤寬度
b.標籤紙高度:設定的是圓形標籤到標籤的中心距離,不是手冊所寫的標籤高度
c.列印速度:單位是吋/每秒,設定為3每秒3吋左右即可
d.列印濃度:從0~15,數字越大越黑,設定為8~10之間即可,設為15有可能燒壞印字頭
e.感應器類型:設為0使用內定的垂直間距感測器
f.垂直間距和偏移距離:設定的是垂直間距感測器的位置偏差量,使用一般標籤紙時全設定為0
2.列印設定:
a.x起點和y起點:設定的是列印起始點,要注意的是x起點是從標籤紙帶的邊緣開始算,y起點是從垂直間距感測器的定位點開始算
b.字體高度:TSC TTP-343 Plus解析度是300dpi,每12dpi等於1mm
c.旋轉角度:以逆時針計算,有0、90、180、270
d.字體外型:從0~3,依序為標準、粗體、斜體、粗斜體
e.加底線:設0不加底線、設1加底線
f.字型名稱:這裡要輸入作業系統有安裝的字型名稱(例如:標楷體)
g.列印內容:第1列要印出的內容。要注意中文字等全形字高等於寬,英文字等半形字寬只有一半,總字數的寬度不要超過標籤可印範圍,要仔細計算
3.行間距:
設定第2、第3列和第1列間的間距,注意間距必需大於等於字高,否則列印的字會重疊,而重疊部分不會印出
4.2-3列內容:
第2列、第3列要印出的內容。要注意中文字等全形字高等於寬,英文字等半形字寬只有一半,總字數的寬度不要超過標籤可印範圍,要仔細計算
5.列印參數:
a.列印式數:設1只印1張,設3會連印3張標籤
b.列印份數:使用一般標籤紙時設定為1即可,大於1標籤機會亮錯誤紅燈
完成的全部程式碼如下圖:
依順序為:error in→開通訊埠(openport)→標籤機參數(setup)→清除上一筆列印暫存資料(clearbuffer)→列印設定(windowsfont)~第1列內容→第2列間距→第2列內容→第3列間距→第3列內容→列印參數(printlabel)→關通訊埠(closeport)→error out
列印設定之所以要串連3個是因為要列印3行字
以下依序說明每個函數的設定:
在LabVIEW中要叫用DLL檔案要使用Call Library Function Node元件
在Call Library Function Node元件的設定項目Function那一頁,Library name or path那一項選擇C:\windows\system\TSCLIB.dll,底下Function name可選擇能使用的函數庫
在Call Library Function Node元件的設定項目Parameters那一頁,可以設定輸入和輸出的項目,輸入和輸出的項目名稱可自訂,自己知道意思就好,我底下的設定名稱是按照VB的範例
其中一開始就有基本的return type這一項,因為這個TSCLIB.dll每項函數庫都沒有執行狀況的訊息輸出,Type保持為Void無輸出即可
第1個openport函數庫,用來設定電腦輸出埠名稱
在輸入項目那邊新增
PrinterName,Type設定為String(文字),String format設定為C String Pointer,電腦輸出埠名稱就是標籤機安裝後在印表機和傳真那邊顯示的名稱
第2個setup函數庫,用來設定標籤機參數
在輸入項目那邊新增
LabelWidth → Type設定為String(文字),String format設定為C String Pointer,標籤帶寬度
LabelHeight → Type設定為String(文字),String format設定為C String Pointer,標籤帶高度
Speed → Type設定為String(文字),String format設定為C String Pointer,列印速度
Density → Type設定為String(文字),String format設定為C String Pointer,列印濃度
Sensor → Type設定為String(文字),String format設定為C String Pointer,感應器類型
Vertical → Type設定為String(文字),String format設定為C String Pointer,感應器垂直偏差間距
Offset → Type設定為String(文字),String format設定為C String Pointer,感應器左右偏差間距
第3個clearbuffer函數庫,用來清除上一筆列印暫存資料。這個函數庫沒有輸出入項目,不需設定
第4個windowsfont函數庫,使用作業系統安裝的字型列印文字
在輸入項目那邊新增
X → Type設定為Numeric(數值),Data type設定為Signed 32-bit Integer,列印起點距離標籤紙帶的偏移量,單位為DPI
Y → Type設定為Numeric(數值),Data type設定為Signed 32-bit Integer,列印起點距離垂直間距感測器定位點的偏移量,單位為DPI
FontHight → Type設定為Numeric(數值),Data type設定為Signed 32-bit Integer,字體高度,單位為DPI
Rotation → Type設定為Numeric(數值),Data type設定為Signed 32-bit Integer,字體旋轉角度
FontStyle → Type設定為Numeric(數值),Data type設定為Signed 32-bit Integer,字體外觀
FontUnderLine → Type設定為Numeric(數值),Data type設定為Signed 32-bit Integer,字體加底線
FaceName → Type設定為String(文字),String format設定為C String Pointer,字型名稱
TextContent → Type設定為String(文字),String format設定為C String Pointer,要列印的文字
第5個printlabel函數庫,設定列印參數列印,這函數執行時會標籤機會依照設定開始列印
在輸入項目那邊新增
NumberOfSet → Type設定為String(文字),String format設定為C String Pointer,列印式數
NumberOfCopy → Type設定為String(文字),String format設定為C String Pointer,列印份數
第6個closeport函數庫,用來關閉輸出埠。這個函數庫沒有輸出入項目,不需設定
留言列表