線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4203
推到 Plurk!
推到 Facebook!

發票機的驅動,為何vb能而delphi不能呢?

缺席
mingking0947
一般會員


發表:30
回覆:32
積分:12
註冊:2005-07-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-30 13:15:54 IP:61.222.xxx.xxx 未訂閱
請問各位前輩: 本人用同樣程式碼控制發票機(LPT1 port),為何vb 可以列印而delphi卻一動也不能動呢? vb及delphi程式如下: -- vb 程式開始-- Private Sub Command1_Click() Dim hand As Long hand = FreeFile Open "LPT1" For Output As #hand Print #hand, Chr(27) "@" '啟動同步列印 Print #hand, Chr(27) "z" Chr$(1) '啟動同步列印 Print #hand, Chr(27) "PB1" & "頁:1" Print #hand, Chr(27) "PB1" "------------------------" Print #hand, Chr(27) "PB1" & "元" 'Print #hand, Chr(27) Chr(27) "VB" 'Print #hand, Chr(27) Chr(27) "G" Close #hand End Sub ------------ vb 程式結束-- ==== delphi 程式開始 ==== procedure TForm1.Button1Click(Sender: TObject); var F : TextFile; begin AssignFile(F, 'LPT1');//port可以設定(在一般設定裡設定) ReWrite(F); Write(F,chr(27) '@'); Write(F,chr(27) 'z' chr(1)); Write(F,chr(27) '123456'); Write(F,chr(27) '---------------'); CloseFile(f); end; ==== delphi 程式結束 ===== 請各位前輩幫忙,謝謝!
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-30 17:07:26 IP:147.8.xxx.xxx 未訂閱
I'm not good at VB  class="code">writeln(F,chr(27) '@'); ... etc ... http://pywong.hk.st
mingking0947
一般會員


發表:30
回覆:32
積分:12
註冊:2005-07-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-30 18:16:48 IP:61.222.xxx.xxx 未訂閱
謝謝william.不過試了後還是不行.
adam
一般會員


發表:5
回覆:20
積分:5
註冊:2002-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-30 23:03:41 IP:59.104.xxx.xxx 未訂閱
注意! 作業系統若為nt or xp 在delphi 中不能直接用
 
  AssignFile(F, 'LPT1');//port可以設定(在一般設定裡設定)      ReWrite(F);
因為不接受直接驅動i/o模式.
mingking0947
一般會員


發表:30
回覆:32
積分:12
註冊:2005-07-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-12-01 09:16:36 IP:61.222.xxx.xxx 未訂閱
我覺得這好像是問題的核心,因為我是用windows xp在開發. 請問有方法解決嗎?感淚不盡!
mingking0947
一般會員


發表:30
回覆:32
積分:12
註冊:2005-07-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-12-01 10:32:43 IP:61.222.xxx.xxx 未訂閱
另外補充一點,我試了在LPT1 port上若同樣程式碼去控制出單機則是可以列印的,但發票機卻不行...好奇怪吔!
Jack0323
初階會員


發表:22
回覆:70
積分:28
註冊:2002-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-12-10 15:22:21 IP:203.67.xxx.xxx 未訂閱
我的做法是用com Port來做 因為用LPT PORT做的話容易被廠商的驅動程式影響穩定性很差 所以我都是用RS232去丟資料的 目前也沒什麼問題 但我用的方式跟你有點不同 我是用OpenFile的方式做
mingking0947
一般會員


發表:30
回覆:32
積分:12
註冊:2005-07-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-12-13 12:32:35 IP:61.222.xxx.xxx 未訂閱
謝謝各位的幫忙,我已找到答案了. 若有遇到和我一樣的問題解決如下: 若使用LPT Port要印"test"的字串則字串前加上==> chr($1b) 'PB1' ex. Write(F,chr($1b) 'PB1test'); 若使用com port要印"test"的字串則字串前加上==> chr($1b) 'P' ex. Write(F,chr($1b) 'Ptest');
TWJack
一般會員


發表:3
回覆:13
積分:3
註冊:2006-11-01

發送簡訊給我
#9 引用回覆 回覆 發表時間:2006-07-11 15:55:58 IP:59.104.xxx.xxx 未訂閱

以前我曾試過用AssignFile(F, 'LPT1');
但是好像用LPT的話,會受限制於廠商的驅動程式
後來試過最好的方法是用COM Port
開檔的方法我不是用AssignFile,
而是用CreateFile,比AssignFile好用

aHandle := CreateFile( PChar(temp),
GENERIC_READ OR GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
0,
0 );

TWJack
一般會員


發表:3
回覆:13
積分:3
註冊:2006-11-01

發送簡訊給我
#10 引用回覆 回覆 發表時間:2006-07-11 15:57:21 IP:59.104.xxx.xxx 未訂閱

補充一下
temp := 'LPT1';
帥氣銀行
一般會員


發表:13
回覆:40
積分:15
註冊:2005-05-31

發送簡訊給我
#11 引用回覆 回覆 發表時間:2006-09-23 00:29:45 IP:61.219.xxx.xxx 未訂閱
其實還是可以的
使用環境 Win 2000 sp4
===================引 用 文 章===================
注意! 作業系統若為nt or xp 在delphi 中不能直接用
 
AssignFile(F, 'LPT1');//port可以設定(在一般設定裡設定)

ReWrite(F);
因為不接受直接驅動i/o模式.
系統時間:2017-12-14 12:26:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!