2012-03-12 91 views
2

我有一個錢箱連接到Epson TM-T20上,連接到USB端口。 我發現一個例子here並應用於他們的想法與here到打印機的代碼:打開連接到USB打印機的錢箱

echo -en "\033\160\040\025" | lp -d "USB_TM-T20" -o raw 

但這似乎並沒有工作。由於epson提供了一個java庫,我決定查看並反編譯它。

protected byte[] getOpenDrawerCommand() 
{ 
    byte[] arrayOfByte = new byte[5]; 
    if (this.m_objDrawerPort.isSupportRealTimeCommand()) 
    { 
    arrayOfByte[0] = 16; 
    arrayOfByte[1] = 20; 
    arrayOfByte[2] = 1; 
    arrayOfByte[3] = (byte)this.m_objDrawerSettings.getPinNumber(); // seems to be 0 
    arrayOfByte[4] = (byte)this.m_objDrawerSettings.getOnTime(true); // between 1 and 8 
    } 
    else 
    { 
    arrayOfByte[0] = 27; 
    arrayOfByte[1] = 112; 
    arrayOfByte[2] = (byte)this.m_objDrawerSettings.getPinNumber(); // seems to be 0 
    arrayOfByte[3] = (byte)this.m_objDrawerSettings.getOnTime(false); // [1, 255] 
    arrayOfByte[4] = (byte)this.m_objDrawerSettings.getOffTime(false); // [1, 255] 
    } 
    return arrayOfByte; 
} 

我們看到keyfile中的值似乎是正確的(至少前兩個)。不幸的是,我無法找到它發送數據的代碼。 你有一個想法,我可以找到更多的信息?愛普生網站似乎很少見。

編輯: 事實證明,連接電纜已損壞,需要重新連接新電纜才能連接打印機。

回答

1

根據手冊頁,bashecho命令以及獨立的echo需要八進制字符常量以前導零開頭。這從C

略有不同

所以,儘量

echo -en '\033\0160\040\025' 

或只使用十六進制。

它也看起來像你發送4個字節,而Java代碼段表明5是必要的。

+0

是的,我也觀察過。但我也觀察到,打印機驅動程序不知怎的不喜歡我的原始命令: 「/ usr/lib/cups/backend/epsontm失敗」 我會嘗試解決這個問題,然後再進行更多測試。 – Pascal 2012-03-12 16:37:26

+0

發現安裝了錯誤的ppd。我用另一個替換了它。但是這並沒有解決問題。現在,我正在用Windows試一下。 – Pascal 2012-03-13 10:17:51

0

我也有一個愛普生TM-T20,發現這個答案,並鏈接到主要解決我的問題,但我查了手冊,發現該代碼打開抽屜被ESC p m t1 t2

這翻譯成:

echo -en '\033p011' | lp -d EPSON_TM_T20 -o raw 

我用lpstat -p來找到正確的打印機名稱來使用。