全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2338
推到 Plurk!
推到 Facebook!

教你如何控制標籤機透過LPT port

 
arliang
一般會員


發表:2
回覆:9
積分:2
註冊:2002-06-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-15 11:08:31 IP:61.222.xxx.xxx 未訂閱
我大略說明這一天的心得 1. 公司要我用程式控制RING 的4008標籤機 2. 要用DELPHI 3. 原廠有提供指令碼, 並且指導我一定要接LPT port, 並且先安裝EPSON LQ1000C, 4. 我將以下列指令碼做示範, 拋磚引玉, 說不定其他的廠牌也是這樣用 5. 列印的結果將會出現三行字 都是ABC1234 6. 指令碼如下 FMT(1,60,40,0,0,1) SFM(1) ACL() DMD(0) PIT(0) CFL(1,1,1,1,1,1) DAT(1,ABC1234) CFL(2,1,5,1,1,1) DAT(2,ABC1234) CFL(3,1,10,1,1,1) DAT(3,ABC1234) PRT(1,0,1) 第一, 我把指令碼全部寫成文字檔(aa.TXT), 並且打入DOS Command copy aa.TXT > LPT1 結論: 成功!! 可以列出標籤 第二 我把指令碼全部寫成Delphi指令, 透過TPRINT元件印出 printer.BeginDoc; LineSpace := printer.PageHeight div 60; printer.Canvas.TextOut(0,LineSpace*0,'FMT(1,60,40,0,0,1)'); printer.Canvas.TextOut(0,LineSpace*1,'SFM(1)'); printer.Canvas.TextOut(0,LineSpace*2,'ACL()'); printer.Canvas.TextOut(0,LineSpace*3,'DMD(0)'); printer.Canvas.TextOut(0,LineSpace*4,'PIT(0)'); printer.Canvas.TextOut(0,LineSpace*5,'CFL(1,1,1,1,1,1)'); printer.Canvas.TextOut(0,LineSpace*6,'DAT(1,ABC1234)'); printer.Canvas.TextOut(0,LineSpace*7,'CFL(2,1,5,1,1,1)'); printer.Canvas.TextOut(0,LineSpace*8,'DAT(2,ABC1234)'); printer.Canvas.TextOut(0,LineSpace*9,'CFL(3,1,10,1,1,1)'); printer.Canvas.TextOut(0,LineSpace*10,'DAT(3,ABC1234)'); printer.Canvas.TextOut(0,LineSpace*11,'PRT(1,0,1)'); printer.EndDoc; 結論: 失敗!! 因為windows 會做列印語言轉譯的動作, 既使你安裝的是老古董點矩陣印表機, 他還是以圖形向量指令印出去, 這對呆呆的標籤機來說, 根本看不懂 第三 我把指令碼全部寫成Delphi指令, 透過LPT port印出 var F:TEXTFILE; ASSIGNFILE(F,'LPT1'); REWRITE(F); WRITELN(F,'FMT(1,60,40,0,0,1)'); WRITELN(F,'SFM(1)'); WRITELN(F,'ACL()'); WRITELN(F,'DMD(0)'); WRITELN(F,'PIT(0)'); WRITELN(F,'CFL(1,1,1,1,1,1)'); WRITELN(F,'DAT(1,ABC1234)'); WRITELN(F,'CFL(2,1,5,1,1,1)'); WRITELN(F,'DAT(2,ABC1234)'); WRITELN(F,'CFL(3,1,10,1,1,1)'); WRITELN(F,'DAT(3,ABC1234)'); WRITELN(F,'PRT(1,0,1)'); CLOSEFILE(F); 結論: 成功!! 可以列出標籤
gene
一般會員


發表:0
回覆:1
積分:0
註冊:2003-11-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-16 15:25:16 IP:203.75.xxx.xxx 未訂閱
之前我一直是將Control code 存成文字檔再透過 ShellExecute() 執行 "type aa.txt > lpt1" 來列印標籤。 本來都是 OK 的,沒想到最近不知道是那一個環境改變了,本來可以在 Win98 下列印 label的程式,竟然失效了,而且只有某一支程式~~。苦思不得其解下,看到你的方法,真是十分好用。感謝了~~
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-17 09:34:26 IP:220.130.xxx.xxx 未訂閱
引言: 之前我一直是將Control code 存成文字檔再透過 ShellExecute() 執行 "type aa.txt > lpt1" 來列印標籤。 本來都是 OK 的,沒想到最近不知道是那一個環境改變了,本來可以在 Win98 下列印 label的程式,竟然失效了,而且只有某一支程式~~。苦思不得其解下,看到你的方法,真是十分好用。感謝了~~
gene 您好 : 利用 ShellExecute() , lpOperation -> "print" , LPCTSTR lpFile -> 在 Win2000 以上系統有效 (應該 98/ME/NT 也有效才對,沒實際試過) .. 關於 arliang 兄提到的第二點,應該不一定,若新型的 Label 機有支援 postscript 格式,便可以列印圖形,否則只能當作文字矩陣印表機列印文字,其實,Label 也是印表機... 第三點有一點風險,就是如果接到非 LPT1 (雖然現在的電腦 LPT 通常只有一個),另外若 LPT1 的 symbolic name (可能性極低)改變了,也會造成程式失效.. PS. arliang 兄提供的方法也是一種將資料轉向至 LPT1 的方法.. ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ----
系統時間:2024-06-26 23:36:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!