最近的案子指定要用標籤印表機列印圓型標籤,還指定每張標籤要印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後按確定,裝好驅動程式

20100306-13  

 

光碟片內有許多電子手冊,需要的是TSCLIB.DLL函式庫使用說明(中文)和TSPL/TSPL2 Programming Language(英文)

 

TSCLIB.DLL函式庫使用說明有附VB範例程式,直接改寫成LabVIEW程式即可。要列印條碼或其他文字圖形的命令語法全在那本英文手冊中,用的語法是TSPL語言

 

這次的案子只要求列印文字,條碼和圖形都沒有,只使用到用作業系統字型列印功能,很簡單

 


完成的程式要在其他程式當SubVI使用

 

 

 

完成程式面板如下圖:

20100306-01  

 

依順序為: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標籤機會亮錯誤紅燈

 

 

 

完成的全部程式碼如下圖:

20100306-12  

 

依順序為: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函數庫,用來設定電腦輸出埠名稱

20100306-02  

 

在輸入項目那邊新增


PrinterName,Type設定為String(文字),String format設定為C String Pointer,電腦輸出埠名稱就是標籤機安裝後在印表機和傳真那邊顯示的名稱

20100306-03  

 

 

第2個setup函數庫,用來設定標籤機參數

20100306-04  

 

在輸入項目那邊新增


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,感應器左右偏差間距

20100306-05  

 

 

第3個clearbuffer函數庫,用來清除上一筆列印暫存資料。這個函數庫沒有輸出入項目,不需設定

20100306-06  

 

 

第4個windowsfont函數庫,使用作業系統安裝的字型列印文字

20100306-07  

 

在輸入項目那邊新增


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,要列印的文字

20100306-08  

 

 

第5個printlabel函數庫,設定列印參數列印,這函數執行時會標籤機會依照設定開始列印

20100306-09  

 

在輸入項目那邊新增


NumberOfSet → Type設定為String(文字),String format設定為C String Pointer,列印式數


NumberOfCopy → Type設定為String(文字),String format設定為C String Pointer,列印份數

20100306-10  

 

 

第6個closeport函數庫,用來關閉輸出埠。這個函數庫沒有輸出入項目,不需設定

20100306-11  

, ,

未出師的小工程師 發表在 痞客邦 PIXNET 留言(0) 人氣()