請教..透過TComm連接發票機的傳輸字串?? |
答題得分者是:領航天使
|
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
請教各方前輩........
小弟最近因為需要使用到發票機........
但.......因為我沒有相關的經驗....所以.......
經過多天的努力.....我試著使用TComm元件.......
但一直都沒法子送出正確的字串可以讓發票機動起來.......
所以冒味請教眾前輩們.......
不知道有沒有相關的經驗可以指導我.......
以下是我所試寫的程式.......但發票機就是毫無反應......
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
謝謝前輩的回覆........
我有照您的方式試過了........
可以確定的是...這台機器是有內建中文的........
但我試著用以下指令列印.....但機器依然是不會動的.....
Comm1.WriteCommData('測試科技股份有限公司',20);
然後我一直在try以下這種方式來列印......
PDStr:=Chr(27) Chr(64);
PDStr:=Chr(10) '12345678901234567890';
PDStr:=PDStr Chr(10) '測試科技股份有限公司1';
PDStr:=PDStr Chr(10) '測試科技股份有限公司2';
AssignFile(F, 'COM2');
Rewrite(F);
Write(F, PDStr);
CloseFile(F);
會出現
1.機器剛啟動時的前幾次列印都會出現亂碼....但..連續印個幾次....就正常了
2.當我連續列印時...有時候會這行'測試科技股份有限公司2'並不會列印出來
以上是我所遇到的怪異狀況.......
|
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
|
kkccgg
初階會員 發表:50 回覆:54 積分:30 註冊:2002-07-28 發送簡訊給我 |
以下幾點共參考:
1.確認PDStr傳出字串長度是否正確
2.可以去http://web2.moxa.com.tw/services/download/download_tw.asp
下載PComm Lite它提供rs232收送服務(很好用)
3.將傳出資料在接到本機pc rs232口.
以PComm Lite中之PComm terminal emulator
監看,看傳出是否為你要傳的資料,注意一些不可視位元監看(可以以16進制看),
4.設備未處理完成,載送資料,設備無緩衝功能
5.設備故障
|
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
超怪異的...........
用以下的方式......組合起來用.....
就.....就好了.......有那位前輩可以解答呢???
Comm1.StartComm;
Comm1.StopComm;
PrintWP520('12345678901234567890','COM2');
PrintWP520(Chr(10) '測試科技股份有限公司1','COM2');
PrintWP520(Chr(10) '測試科技股份有限公司2','COM2');
PrintWP520(Chr(10),'COM2');
PrintWP520(Chr(27) Chr(12),'COM2');
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 超怪異的........... 用以下的方式......組合起來用..... 就.....就好了.......有那位前輩可以解答呢??? Comm1.StartComm; Comm1.StopComm; PrintWP520('12345678901234567890','COM2'); PrintWP520(Chr(10) '測試科技股份有限公司1','COM2'); PrintWP520(Chr(10) '測試科技股份有限公司2','COM2'); PrintWP520(Chr(10),'COM2'); PrintWP520(Chr(27) Chr(12),'COM2');研判應該不用加上(27)就可以印出字串了 (27)應該是控制指令用的 (10)是換行字元 最好是採用(13)(10)來換行 (12)是跳頁字元 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
謝謝各方前輩的幫忙........
基本的問題都處理的差不多了.......
只是小弟都是用最原始的方式去處理Com Port的資料........
還是學不會用TComm元件來處理資料傳輸.........
只盼這個案子Close後,能有時間研究TComm元件的操作......
最後小弟再請教各位前輩一個問題.......
我後來把寫入Com Port的程式寫成Procedure.....
內容很簡單......如下
procedure TDataModule2.PrintWP520(String1,Port1:String);
Var F:TextFile;
begin
if Copy(String1,1,3) <> 'Chr' then
CheckLineCount;
Inc(InvoiceLineCount);
AssignFile(F, Port1);
Rewrite(F);
Write(F, String1);
CloseFile(F);
end;
但這個程式Run了一陣子.....就會出現stack overflow的錯誤訊息.....
我在想.....是不是因為我一直透過Com Port在輸出資料.......
所以......把Com Port塞爆了........我也只能朝這方向去想.....
但......我該怎麼把Com Port的資料釋放掉呢??
用CloseFile()應該有做到這個功能吧~~~
望各位前輩能再指導......
Thanks
|
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
sorry........
小弟找到問題了.......
if Copy(String1,1,3) <> 'Chr' then
CheckLineCount;
因為中間有一行在檢查行數的Procedure CheckLineCount
因為又會回來呼叫這個Procedure......
所以造成了stack overflow.........
真是不好意思.......問了一個笨問題......
還是謝謝三位前輩的大力幫助.......
讓我渡過了這次難關......Thanks
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |