討論區快速選單
知識庫快速選單
網路投保旅行平安險 掌握Salesforce雲端管理秘訣
[ 回上頁 ] [ 討論區發言規則 ]
如何併排列印出兩個QRC
更改我的閱讀文章字型大小
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2018/12/29 下午 10:19:21
請問各位前輩,如何用wpt810的指令,列印出如電子發票那樣兩個並排的QRC.目前只能印出上下兩個QRC,懇請賜教,謝謝!
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2018/12/30 下午 05:39:53
A little suggestion
You may try to understand the settings of print mode .
V/H .
for example ,
Command GS \ nL nH
Code (Hex) 1D 5C nL nH
Name Set relative vertical print position in page
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2018/12/30 下午 08:09:01
先謝謝ozzy兄,但我目前的問題是 :
1.以下的指令我都有反覆使用過,結果都解決不了我的問題
    Moves the printing position absolutely along the row Hex 1B 24 nL nH

    Moves the printing position relatively along the row Hex 1B 5C nL nH

    Defines horizontal tab positions Hex 1B 44 n1…nk 00

    Moves the printing position to the next horizontal tab position Hex 09

2.我覺得是由於當印完第一個 QRC 後,游標已跑到下面去,而上面那些指令只是使第二個 QRC 往右移一段距離(由 nL來設定)後印出來.
3.所以應該是要找出那一個指令能在印完第一個 QRC 後,將列印的游標往上移,使第二個 QRC 能夠在第一個 QRC 右邊印出來.也許就是上面某一個指令,因所有指令中就只有這幾個跟水平與垂直有關,我目前都只會設 nL 等於 \x20 (往右移一段距離,當然也可以設其他距離),而 nH 都設為 0.
4.所以若真是用上面某一個指令,那麼 nL與nH要設多少就能使第二個 QRC 印在第一個的右邊,而不是印在下面.
所以請 ozzy 兄明白告訴我如何設定 nL與nH,當然若有其他前輩知道如何解決我的問題,懇請不吝賜教,給我指點指點,我就感激不盡了!
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2018/12/30 下午 08:26:27
對了ozzy兄,你說的
Command GS \ nL nH
Code (Hex) 1D 5C nL nH
應該是 1B 5C nL nH 吧,因我在所有指令中好像找不到 1D 5C nL nH,若是我搞錯,就請告訴我,當然最好再詳細說明 nL 與 nH 要如何設定能使列印的游標上移到第一個 QRC 的位置,謝謝!
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2018/12/30 下午 10:52:41
Okay .
I will study related instructions and discuss with you .
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2018/12/31 上午 10:29:59
謝謝ozzy兄的幫忙,再一次感謝你!
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2018/12/31 下午 11:44:35
https://www.health365.com.tw/upload/%E9%9B%BB%E5%AD%90%E7%99%BC%E7%A5%A8%E7%B3%BB%E7%B5%B1/%E9%9B%BB%E5%AD%90%E7%99%BC%E7%A5%A8%20WPT810%20(DLL+USBKEY)/how.pdf

please refer to above document. I think that you may try to use 4th parameter - vPatCnt in function - elcinv() of the DLL.
this is my little suggestion. for you reference.
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/1 上午 10:21:41
ozzy兄你好,這個資料我早已得到,對方也有提供elcinv.dll給我,但卻沒有提供elcinv.h 與 elcinv.lib,所以我才上來請教各位前輩,如何取得這兩個 .h與 .lib檔,最後一無所獲,但同時覺得wpt810已提供那麼多指令,若能直接使用這些指令來解決問題,應該是最佳選擇,所以研究至今,已能夠印出 QRC ,就只剩下如何併排印出兩個 QRC 與列印商標(.bmp或.jpg).
目前已經可以將商標上傳到wpt810中去,而且也看過別人不用再將圖案的資料先轉成一大堆16進位碼,就可以列印出來,只是別人的方法,我無法應用到程式中去,但應該可以肯定列印兩個 QRC 與商標,必定是使用那些指令.
所以我總覺得設法找出所需的指令來解決這兩個問題,絕對比用別人的 .dll 來得好,況且這個 elcinv.dll 目前缺乏另外兩個檔案也無法使用.
最後還是拜託 ozzy兄或其他對wpt810有使用過的前輩幫幫忙,給我這個晚輩再提拔一下,在此先謝謝大家幫忙了!謝謝!
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/1 下午 08:57:12
okay. please describe your problems in detail and I try to understand them.
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/1 下午 09:21:09
我目前列印一個qrc是沒問題,假如列印前先執行<set relative print position \x1b\x5c\xe0\x00這個指令>是會讓qrc右移一段距離後才列印.所以這個指令是沒問題.
但當我要連續列印兩個qrc,在兩個qrc中間加入<\x1b\x5c\xe0\x00這個指令>,本以為印完第一個後,會水平移一段距離後再印第二個,可是結果是第二個會先移到第一個的下面,然後再移一段距離後才印出來,而不是跟第一個在同一列上面.
我覺得應該是當第一個印完後,列印的游標已經跑到第一個的下面,然後當執行<\x1b\x5c\xe0\x00這個指令>就會位移一段距離後才印出第二個.使得這兩個qrc是上下排列,而不是在同一列上面.如電子發票那樣.
所以只要能找到那一個指令能讓印完第一個後,列印的游標會回到第一個的水平,而不是在它的下面,那麼我的問題就可以解決了.
最後就懇請ozzy兄,幫我找看看要用那個指令來解決問題,拜託你了,謝謝!
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/2 上午 10:50:21
ozzy兄你好,我將我前面所說的程式列寫如下,可能你就會比較了解,更希望你就能夠告訴我如何解決我的問題,拜託你了!謝謝!
// Select QRC model
    dat[0] = 0x1d;
    dat[1] = 0x28;
    dat[2] = 0x6b;
    dat[3] = 0x04;
    dat[4] = 0x00;
    dat[5] = 0x31;
    dat[6] = 0x41;
    dat[7] = 0x32;
    dat[8] = 0x00;
// Set QRC model size
    dat[9] = 0x1d;
    dat[10] = 0x28;
    dat[11] = 0x6b;
    dat[12] = 0x03;
    dat[13] = 0x00;
    dat[14] = 0x31;
    dat[15] = 0x43;
    dat[16] = 0x03;
// Define data for QRC
    dat[17] = 0x1d;
    dat[18] = 0x28;
    dat[19] = 0x6b;
    dat[20] = 0X06;
    dat[21] = 0x00;
    dat[22] = 0x31;
    dat[23] = 0x50;
    dat[24] = 0x30;
    WriteFile(handle,dat,25,&dwWrite,0);
// 列印資料
    strcpy(Buffer,"123");
    WriteFile(handle,&Buffer,lstrlen(Buffer),&dwWrite,0);
// Print pre-rendered QRC
    dat[0] = 0x1d;
    dat[1] = 0x28;
    dat[2] = 0x6b;
    dat[3] = 0x03;
    dat[4] = 0x00;
    dat[5] = 0x31;
    dat[6] = 0x51;
    dat[7] = 0x30;
    WriteFile(handle,dat,8,&dwWrite,0);
//Set relative print position
    dat[0] = 0x1b;
    dat[1] = 0x5c;
    dat[2] = 0xe0;
    dat[3] = 0x00;
    WriteFile(handle,dat,4,&dwWrite,0);
//
    dat[0] = 0x1d;
    dat[1] = 0x28;
    dat[2] = 0x6b;
    dat[3] = 0x04;
    dat[4] = 0x00;
    dat[5] = 0x31;
    dat[6] = 0x41;
    dat[7] = 0x32;
    dat[8] = 0x00;
//
    dat[9] = 0x1d;
    dat[10] = 0x28;
    dat[11] = 0x6b;
    dat[12] = 0x03;
    dat[13] = 0x00;
    dat[14] = 0x31;
    dat[15] = 0x43;
    dat[16] = 0x03;
//
    dat[17] = 0x1d;
    dat[18] = 0x28;
    dat[19] = 0x6b;
    dat[20] = 0X06;
    dat[21] = 0x00;
    dat[22] = 0x31;
    dat[23] = 0x50;
    dat[24] = 0x30;
    WriteFile(handle,dat,25,&dwWrite,0);
//
    strcpy(Buffer,"ABC");
    WriteFile(handle,&Buffer,lstrlen(Buffer),&dwWrite,0);
//
    dat[0] = 0x1d;
    dat[1] = 0x28;
    dat[2] = 0x6b;
    dat[3] = 0x03;
    dat[4] = 0x00;
    dat[5] = 0x31;
    dat[6] = 0x51;
    dat[7] = 0x30;
    WriteFile(handle,dat,8,&dwWrite,0);
作者 : ice_emissary(燃燒的大地) 貼文超過200則
[ 貼文 408 | 人氣 0 | 評價 1890 | 評價/貼文 4.63 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/2 上午 11:21:13
這臺印表機是熱感應紙列印機,理論上並沒有移動的列印頭,所以不存在游標的問題。
我沒有這臺機器,但看照片,應該和我以前用過的 POS 機列印機相似,
那麼紙張是只能夠往一個方向捲動、只能不斷往外捲出的,沒有辦法回捲。
以上這些叫作機器特性,若機器硬體做不到的事情,光改軟體是不可能做到的,請記得這個前提!

如果你照原本的方式把一個 QRC 印在左邊,那麼可以肯定你絕對沒有辦法把另一個 QRC 印在水平的右邊,
因為已經捲出去的紙無法回捲,所以最後只能被印在右下的位置。
了解這一點之後,你應該就可以知道不用再找什麼指令了,沒有的!
除非這臺印表機存在有一個指令可以同時列印左右兩個 QRC。

並不是說這個問題無法解決,因為我們之前就做過(但不是和你一樣的機器),
只是提醒你,試圖透過印表機的什麼指令、什麼參數來解決這個問題是完全找錯方向,
就算用他的 DLL 也沒辦法,因為他的 DLL 也只是把那些指令封裝器來而已。

最終,你問題的解決方法也很簡單。
點陣圖可以列印吧?
那你把你要列印的東西先自己拼在一個點陣圖上面,再把整張點陣圖送給印表機不就好了?
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/2 下午 12:37:20
謝謝燃燒兄的說明!我之所以說列印的游標只是譬喻而已,我也有想到當第一個qrc印完後當然不可能將紙回轉回去再印第二個qrc.但我以前用普通列印機印報表時,好像是有試過給列印機的指令是先印後面的資料,再印前面的資料,結果印表機就一直往前將整份報表印出來.我覺得應該是列印機列印前已經將程式所下的命令先存在buffer中,當然要印的資料也就排好順序,結果便是依序的印出來了;第二個理由就是電子發票就是有併排印出兩個qrc,所以這是做得到的事情.
結論就是若wpt810如我所說的列印機在印以前能先將兩個qrc的資料先存入buffer,然後再同時印出兩個qrc,若真如此,就是要找到那個指令.
當然若wpt810根本沒這樣的功能,燃燒兄所建議的先將那兩個qrc的資料轉成圖案,然後用印圖檔的指令來印出來.但困難就在於如何將那兩個qrc的資料轉成一張圖檔.看樣子恐怕要拜託燃燒兄,再指點我如何下手將兩個qrc的資料轉成一個圖檔,是不是還要再將這個圖檔轉成一大堆的16進位的資料,再用列印圖檔的指令來印出來.
作者 : ice_emissary(燃燒的大地) 貼文超過200則
[ 貼文 408 | 人氣 0 | 評價 1890 | 評價/貼文 4.63 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/2 下午 02:14:56
> 但我以前用普通列印機印報表時,好像是有試過給列印機的指令是先印後面的資料,再印前面的資料,
> 結果印表機就一直往前將整份報表印出來.
> 我覺得應該是列印機列印前已經將程式所下的命令先存在buffer中,當然要印的資料也就排好順序,結果便是依序的印出來了;

這表示你之前使用的印表機有先做好這樣的功能,而現在這臺未必會做出這樣的功能。如果沒有,那當然只好自己做了。

> 第二個理由就是電子發票就是有併排印出兩個qrc,所以這是做得到的事情.

電子發票有沒有要求併排列印,和機器內建有沒有併排列印功能,這是兩件事情,不能混為一談。
不是要告訴你機器一定沒有這個功能,只是目測判斷沒有該功能的機率蠻高。

> 如何下手將兩個qrc的資料轉成一個圖檔,

這是我隨便找的,可以參考看看:
https://fukuchi.org/works/qrencode/index.html.en
https://github.com/ricmoo/QRCode

> 是不是還要再將這個圖檔轉成一大堆的16進位的資料,再用列印圖檔的指令來印出來.

答對了,對印表機的部份完全比照列印圖片處理。
這時通訊的資料量會有點大,請在資料校驗、傳輸速度上要拿捏好!
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/2 下午 02:29:22
謝謝燃燒兄的提供,我會好好研究看看.謝謝你!
作者 : ma_hty(白老鼠(Gary))討論區板主 OpenGL卓越專家DirectX優秀好手C++頂尖高手貼文超過2000則人氣指數超過70000點
[ 貼文 2189 | 人氣 89850 | 評價 10120 | 評價/貼文 4.62 | 送出評價 79 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/2 下午 08:43:29
燃燒的大地兄, 你是真好耐性呢. 可是, 你是不是 對樓主犯的超低級錯誤 太溫柔了?

算算字串呀, 資料類型轉換呀, 圖檔讀寫+基本編輯呀, 陣列呀... 這些犯錯了,
可說是 樓主從沒好好上C++的課 或是 新生自學中. 出言不遜,
也勉強可說成是 因為學識太差, 差到誤以為基礎認知是 "尖端科技" .

沒人生下來就啥也懂的, 樓主學識差, 你苦口婆心指正, 算是給樓主循循善誘吧.

只是, 當樓主的妄想昇華到以為 "自己能找到軟體指令去改造硬件" 的時候,
你還不吐糟啊... 這是太溫柔了吧.

閒逛到此+先讀這貼 的網友們, 只怕都要猶豫 "是否編程人員都是患上妄想症的笨蛋" 了.
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/2 下午 10:16:12
http://www.smp-soft.com/products/freeqrcreator.html#.XCzC8lwzZRZ
above tool that provides a way of converting qrcode to various graphics formats. you may try to download it . totally free !
again , please find the instruction - how to print out a bitmap file.
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/3 上午 10:27:02
謝謝ozzy兄的提供,謝謝!
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/3 上午 10:48:23
ozzy兄你好,你所提供的網站,好像是將輸入的資料轉成一個qrc,而不是你所說會將一個或兩個併排的qrc轉成圖檔.
還有我所列寫出來的程式不知道你有看出那裡有問題,燃燒兄所提供的方法,恐怕要花很長時間才會有結果,不知道你有沒有更好的方法提供給我.
還有一個問題,就是我上次說過可以將一個圖案上傳到wpt810發票機中去,我使用<Prints a predefined bit image from none-volatile (NV) memory Hex 1C 70 n m>這個指令,卻印不出來,恐怕又是錯用指令了.請ozzy兄順便告訴我到底要如何才能將wpt810中的圖案印出來,因我確實有看過別人印得出來的,只是他的方法,我無法用在我的程式中,拜託ozzy兄了.謝謝!
作者 : ice_emissary(燃燒的大地) 貼文超過200則
[ 貼文 408 | 人氣 0 | 評價 1890 | 評價/貼文 4.63 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/3 上午 11:47:19
> ozzy兄你好,你所提供的網站,好像是將輸入的資料轉成一個qrc,而不是你所說會將一個或兩個併排的qrc轉成圖檔.
> 燃燒兄所提供的方法,恐怕要花很長時間才會有結果,不知道你有沒有更好的方法提供給我.

這我不同意你的說法了!類似的東西我以前做過,我提供的方法就是我認為應該要有的方法。
也許你試了其他一千種方法後,可能最後還是發現這個方法最可行、最可靠、最快,
這條路子我們走過了,告訴你,你不信,其實也沒關係。因為學習本來就是要多方嘗試摸索。

如果你認為照這調路坐起來要很久,很不幸的這是你的問題,是你的能力的問題。
我基本認為用其他方法來做可能會更久、更耗力,或者做不出來。
但其實真的沒關係,學程式本來就是要多方嘗試摸索。

我提供的方法大致步驟是這樣:

1. 將資訊字串轉換為 QR code。
這不用自己寫,因為有很多程式庫(像我提供的那些)和工具程式(像 ozzy 提供的那些)可以用,
你只需要學習如何使用他們即可。

2. 將 QR codes 貼在一張圖片上。

3. 將那張圖片送印表機印出來,我想這個步驟你已經會了。

關於合併圖檔這件事,很不幸的你必須要自己來。
為什麼印表機不容易內建這個功能?因為這功能太雜了,所以通常都留給應用開發人員自己做。
怎麼說?丟一張圖給印表機,它就印出來就是,通常直接印中間。
那如果丟兩張圖,兩張圖要怎麼排版?靠左靠右?左右要不要留邊距?距離多少?這恐怕不同的應用會有不同的喜好。
兩圖片中間要不要間距?間距多少?又回到一樣的問題。
兩張圖不一樣大怎麼辦?靠上靠下對齊還是中間對齊?
兩張圖加起來太寬怎麼辦?要拒絕列印還是就讓他們交疊列印?
既然可以一次印兩張圖,那是不是就會有客戶希望可以一次印三張圖、四張圖…
最後就是,算了!讓應用開發人員自己處理。

如果你對圖形處理有困難的話,是有一些現成的圖形庫可以使用,比如說 OpenCV,只是你要能接受它的龐大複雜。
即便如此,你如果沒有足夠的圖像陣列知識、指標操作知識、位元操作知識,即使有圖像程式庫仍然要花不少時間學習。
至於你有沒有圖像相關知識,這就是另外一個問題了!

> 還有我所列寫出來的程式不知道你有看出那裡有問題,

基本上你寫的程式全部都是問題,我和老鼠都已經不想管了,反正你做的出來就好!
作者 : ice_emissary(燃燒的大地) 貼文超過200則
[ 貼文 408 | 人氣 0 | 評價 1890 | 評價/貼文 4.63 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/3 下午 01:00:17
剛剛看了一下 ozzy 提供的程式,和我想的不一樣。
我原本以為這是一個指令程式,可以輸入資料後產出圖檔,結果錯了,這是一個純的 GUI 程式。
這拿來玩玩還可以,但做成產品?別傻了!
難道你的 POS 機要列印發票的時候,還要跳出一個程式,讓收銀員手動輸入資料後還要手動轉存圖片,然後才能列印嗎?

所以最後,正常的 POS 機終究還是需要使用程式庫來產生 QR code,然後再自己合併圖片。
如果你覺得這樣做很耗時間,我覺得繞了一圈之後又回來同樣的路子並沒有比較快啊!反而延後了開始工作的時間!
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/3 下午 01:22:48
先感謝燃燒兄真的耐著性子循循善誘的說明,但我有點迷糊 :

<我提供的方法大致步驟是這樣:

1. 將資訊字串轉換為 QR code。
這不用自己寫,因為有很多程式庫(像我提供的那些)和工具程式(像 ozzy 提供的那些)可以用,
你只需要學習如何使用他們即可。

2. 將 QR codes 貼在一張圖片上。

3. 將那張圖片送印表機印出來,我想這個步驟你已經會了。>

我目前是用程式已能印出qrc,只是印不出併排的qrc,但依你上面所說,好像是我先將發票的資料利用ozzy兄提供的方法先分別產生兩個qrc,再印出來,然後貼在一張圖片上,最後用wpt810再將這張圖片印出來.難道打一張發票就要如此操作嗎?希望是我誤會你的意思?
以我來看是不是在程式中將輸入的發票資料先產生兩個qrc的資料,先不要印出來,而是變成兩個併列的圖檔資料,也許還要再轉成一大堆的16進位資料,最後再用印圖案的指令將這個圖檔(兩個併列的qrc圖檔)印出來
作者 : ice_emissary(燃燒的大地) 貼文超過200則
[ 貼文 408 | 人氣 0 | 評價 1890 | 評價/貼文 4.63 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/3 下午 01:57:27
> 但依你上面所說,好像是我先將發票的資料利用ozzy兄提供的方法先分別產生兩個qrc,再印出來,然後貼在一張圖片上,
> 最後用wpt810再將這張圖片印出來.難道打一張發票就要如此操作嗎?希望是我誤會你的意思?
> 以我來看是不是在程式中將輸入的發票資料先產生兩個qrc的資料,先不要印出來,而是變成兩個併列的圖檔資料,
> 也許還要再轉成一大堆的16進位資料,最後再用印圖案的指令將這個圖檔(兩個併列的qrc圖檔)印出來

我是說「產生圖片」沒叫你真的印出來再拿醬糊貼在一張只上!
你的理解基本上完全沒錯,就是這樣子,只不過全部的懂西都是在軟體裡面的資料操作,最後的成品圖才送印表機列印。

另外,你現在產生的 QR code 是怎麼產生的?也就是怎麼從字串變成 QR 圖的?
是印表機自己產生的還是其他?
若你已經可以自己產生圖片的話,那唯一需要攻克的問題就只剩下併圖或貼圖這件事了!
若你還不能自己產生圖片的話,請不要用 ozzy 的程式來做,你應該研究我給的那些程式庫或其他相似的程式庫才是正途;
當然你堅持要用那個執行檔來產圖的話一定也是可以的,只是我想慎重的拜託你一件事:
你做出來的 POS 機一定要讓我觀摩一下,我超想看看用那個執行檔來產圖的 POS 機長什麼樣子?以及該如何操作?
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/3 下午 02:19:58
燃燒兄你好,下面就是列印出qrc的程式,全部是wpt810的指令:
// Select QRC model
    dat[0] = 0x1d;
    dat[1] = 0x28;
    dat[2] = 0x6b;
    dat[3] = 0x04;
    dat[4] = 0x00;
    dat[5] = 0x31;
    dat[6] = 0x41;
    dat[7] = 0x32;
    dat[8] = 0x00;
// Set QRC model size
    dat[9] = 0x1d;
    dat[10] = 0x28;
    dat[11] = 0x6b;
    dat[12] = 0x03;
    dat[13] = 0x00;
    dat[14] = 0x31;
    dat[15] = 0x43;
    dat[16] = 0x03;
// Define data for QRC
    dat[17] = 0x1d;
    dat[18] = 0x28;
    dat[19] = 0x6b;
    dat[20] = 0X06;
    dat[21] = 0x00;
    dat[22] = 0x31;
    dat[23] = 0x50;
    dat[24] = 0x30;
    WriteFile(handle,dat,25,&dwWrite,0);
// 列印資料
    strcpy(Buffer,"123");
    WriteFile(handle,&Buffer,lstrlen(Buffer),&dwWrite,0);
// Print pre-rendered QRC
    dat[0] = 0x1d;
    dat[1] = 0x28;
    dat[2] = 0x6b;
    dat[3] = 0x03;
    dat[4] = 0x00;
    dat[5] = 0x31;
    dat[6] = 0x51;
    dat[7] = 0x30;
    WriteFile(handle,dat,8,&dwWrite,0);
我是有點不了解,若wpt810根本沒提供併排列印兩個qrc的指令,為什麼大家都印出兩個qrc,印一個不是就好嗎,應該不會為了好玩勞師動眾的將qrc轉成圖案,然後再用印圖案的指令來印出來,除非一個qrc的資料容量有限制.
作者 : ice_emissary(燃燒的大地) 貼文超過200則
[ 貼文 408 | 人氣 0 | 評價 1890 | 評價/貼文 4.63 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/3 下午 02:37:21
刪……

程式碼你自己欣賞就好,我看的頭皮發麻!

> 我是有點不了解,若wpt810根本沒提供併排列印兩個qrc的指令,為什麼大家都印出兩個qrc,印一個不是就好嗎,
> 應該不會為了好玩勞師動眾的將qrc轉成圖案,然後再用印圖案的指令來印出來,除非一個qrc的資料容量有限制.

其實印兩個 QR code 並沒有勞師動眾,如果有人覺得這樣很勞師動眾…
我說過我們之前做過類似的東西吧?那是一臺 Arm 7 機器,記憶體只有 8 MB,你看有很難嗎?
做這種工作又簡單、又好玩、還可以領錢,還有什麼好抱怨的?

至於為什麼要印兩個 QR code?當然是因為有兩個不同的資訊需要承載啊!你有去稍微了解一下自己發票的 QR code 內容都是些什麼嗎?
如果要印兩個 QR code,請問是垂直排列比較節省紙張還是水平排列?這不用解釋了吧!
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/3 下午 04:47:25
好吧,就依你建議的方向去研究吧,再一次謝謝你!
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/4 下午 02:40:06
okay. There’s something that needs clarication.
you wanna print two same qrc graphics and one locates at left side and the other locates at right side.
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/4 下午 03:39:26
A LITTLE SUGGESTION for YOU REFERENCE

http://www.ekka.com.ua/files/MANUALS/ma501_4421_00_rev14.pdf
please read above document , especially p63, p66 , and p67.
maybe you may realize those instructions and observe printer behaviors and actions .
 

have fun
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/5 上午 09:31:38
謝謝ozzy兄的提供,那份指令說明檔好像你以前有給過我,而你所說的那幾個指令,我都有測試過,我上次上傳那段程式中就已經有用過,但結果就是發現只要當第一個qrc印完後,第二個qrc就只會印在下面而不是跟第一個qrc併排在一起,而你所說的那些指令只是讓第二個右移一段距離後才印而已.
所以燃燒兄才建議我先將要印的那兩個qrc先轉成圖案,再轉成一大堆16進位碼,最後用列印圖案的指令將它印出來.這當然對我來說是一個很大的工程,但也只好一步步往前走.
本來最開始是想用elcinv.dll來印發票,由於欠缺elcinv.h 與 elcinv.lib 這些檔案,同時又發現用wpt810的指令之所以印不出圖案與qrc是因參數中有 0x00 導致後面的資料不理會,但現在才發現印併排的qrc才是困難所在,所以若ozzy兄能夠告訴我那裡可以找到elcinv.h 與 elcinv.lib 這些檔案,可能會比較好解決我的問題,因已發現有人使用elcinv就能正常印出發票.那就麻煩ozzy兄幫我這個忙,拜託!謝謝!
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/5 下午 10:47:25
http://webcache.googleusercontent.com/search?q=cache:9plYvcBdUbgJ:www.goldencode.com.tw/download_s.html%3Fds%3D112+&cd=8&hl=zh-TW&ct=clnk&gl=tw

above usage of instructions for you reference. Basically, you may adjust related parameters and try to print .

its instructions should be similar with wtp810s.

have fun
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/5 下午 10:48:47
http://www.vectronix.com.tw/front/bin/ptdetail.phtml?Part=WP-810

wtp810 specification
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/6 上午 10:12:36
謝謝ozzy兄的提供,我會好好研究,有問題再向你請教,謝謝!
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/6 下午 10:18:10
F. 定位 在 PAGE MODE 下將文字/圖檔/Barcode/QRCode 在頁面內位置定位指令


GS $= Set absolute vertical print position in page mode (定位 Y 軸)
GS $ nL Nh如果定義列印位置離起印位置往下 6cm 則60mm/0.125 mm = 480 = 256 *1 + 224= 256*nH+nL
nH = 1
nL = 224


ESC $= Set absolute print position(定位 X 軸)
ESC $ nL nH如果定義列印位置離左邊界 1cm 則10mm/0.125 mm = 80 = 256*0 + 80= 256*nH+nL
nH = 0
nL = 80

maybe above instructions are available for relocating. try it !

have fun
作者 : sha(sha) 貼文超過200則人氣指數超過10000點
[ 貼文 272 | 人氣 21340 | 評價 120 | 評價/貼文 0.44 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2019/1/7 上午 10:16:29
我也正在研究這個指令,希望確實研究後,真能解決我的問題,再一次謝謝ozzy兄的教導!
 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 11070 
2 Raymond 10090 
3 Clier 7630 
4 小約翰 2500 
5 Cog 2030 
6 coco 1870 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.265625