列印前偵測USB熱感應式收據印表機是否開啟或缺紙 |
尚未結案
|
h5rong
一般會員 發表:32 回覆:44 積分:15 註冊:2003-08-27 發送簡訊給我 |
Hi !
因系統是放在室外,開放使用者自行交易刷卡繳費,管理員並未一直在電腦旁,故若使用者交易繳費後,當列印收據時,才發現印表機忘記開啟,或已無紙張可供列印收據,往往需麻煩使用者通知管理員補印收據,造成雙方困擾,故請問列印前,有無可能偵測USB熱感應式收據印表機是否開啟或缺紙? 曾閱讀USB熱感應式收據印表機技術手冊,提到只需送出 hex 0X1B 至印表機,即可判斷收據印表機目前狀態,但如何偵測 USB PORT,是虛擬的 USB001? 不知是否有相關經驗,可提供完整的方向? 謝謝。 Hrong_ |
monkeyhkn1
一般會員 發表:0 回覆:1 積分:0 註冊:2019-08-02 發送簡訊給我 |
|
h5rong
一般會員 發表:32 回覆:44 積分:15 註冊:2003-08-27 發送簡訊給我 |
monkeyhkn1: 您好!
我曾經想透過以下方式,取得 USB 的 PORT,但一直是空字串,故不知您是如何取得USB 的 PORT,可否舉個例子,感謝答覆。 Printer.PrinterIndex := -1; GetMem(Device, 255); GetMem(Driver, 255); GetMem(Port, 255); aPrinter := TPrinter.Create; try for I := 0 to Printer.Printers.Count - 1 do begin if Printer.Printers[I] = PrinterName then begin aprinter.PrinterIndex := I; aPrinter.getprinter(device, driver, port, HdeviceMode); StrCat(Device, ','); StrCat(Device, Driver); StrCat(Device, Port); WriteProfileString('windows', 'device', Device); StrCopy(Device, 'windows'); SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@Device)); end; end; finally aPrinter.Free; end; FreeMem(Device, 255); FreeMem(Driver, 255); FreeMem(Port, 255); |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |