2

背景情報:
Mac OS X Lion 10.7.3 (11D50b)
EPL: http://en.wikipedia.org/wiki/Eltron_Programming_Language
EPL マニュアル: http://www.geksagon.ru/i/2/EPL2_Manual.pdf

2 ポート シリアル - イーサネット サーバー経由でプリンターに接続しています。

プリンター構成の読み出し:

UKQ1935H U UPS V4.14   
S/N: 64A024100181
Serial port:96,N,8,1
Image buffer size:0245K
Fmem:001.0K,059.9K avl
Gmem:000K,0058K avl
Emem:010K,0058K avl
I8,C,001 rY
S4 D10 R000,000 ZT UN
q832 Q609,24
Option:D
oUs,t,u
10 19 29 

PHPを使用して、コマンドを EPL プリンターに送信できます。バーコードと ASCIIラインを問題なく
送信できます。 画像を保存して、後でそれらの画像を使用できます。

問題:

バイナリデータを他のコマンドと混ぜると、奇妙なことに壊れます。

例:

<?php
    $filename = WWW_ROOT . 'img/labels/mylogo.pcx';
    $handle = fopen( $filename , 'r' );
    $image = fread( $handle , filesize( $filename ) );
    $bytes = strlen( $image );
    fclose( $handle );

    # Store the image.
    # Delete twice when dealing with Printer Flash
    $commands = array(
        'GK"MYLOGO"', # Del
        'GK"MYLOGO"', # Del
        'GM"MYLOGO"' . $image_bytes, # Store
        $image_data # Binary data
    );
?>

それ自体はうまく機能します。

これも問題なく動作します - 別の REQUEST で実行する場合:

<?php
    $commands = array(
        '', # <-- As per the manual, a blank line prior to a new label.
        'N', # Clear Image Buffer, New Label
        'GG30,10,"MYLOGO"', # Get image variable MYLOGO
        'P' # Print
    );
?>

そのため、画像が保存された後、MYLOGO は保存されたロゴを印刷することになります。

しかし、私がこれを行うと:

<?php
     $commands = array(
        'GK"MYLOGO"', # Del
        'GK"MYLOGO"', # Del
        'GM"MYLOGO"' . $image_bytes, # Store
        $image_data, # Binary data
        '', # <-- As per the manual, a blank line prior to a new label.
        'N', # Clear Image Buffer, New Label
        'GG30,10,"MYLOGO"', # Get image variable MYLOGO
        'P' # Print

     );
?>

ロゴを印刷しますが、ハングアップし始めます。
ASCII 命令があると、正常に完了しません。

プリンターからダンプを実行すると、コマンドの最初のシーケンスが実行されることが示されますが、バイナリ データに入ると受信が開始され、バイナリ データの MIDDLE と END で次の一連のコマンドの実行が試行されます ( ASCII コマンド)、バイナリが続行されます。

もちろん、これは印刷されないことを意味します...画像データの後に P コマンドが受信されなかったためです。

なぜこれを行うのですか?

つまり、いつ HTTP リクエストが作成され、コマンド セットが個別に発行されますか (新しいソケット接続)。
コマンドの両方のセットが同じ HTTP 要求にある場合は機能しません。

バイナリ データが他のコマンドで作成された場合、プリンタは「奇妙な」状態になり、コマンドの受信を再開するには電源を入れ直す必要があります。

最終目標: 他のコマンドでバイナリ データを渡すことができるようになり、設定がなくなります。

コード例: https://gist.github.com/de3a1ba2f0decc36b6e6

画像

ダンプに入る: http://imageshack.us/photo/my-images/193/photo1any.jpg/

ダンプのトップ: http://imageshack.us/photo/my-images/37/photo2ln.jpg/

ダンプの真ん中に現れる: http://imageshack.us/photo/my-images/820/photosaz.jpg/

「あるべき」外観: http://imageshack.us/photo/my-images/832/photo5uc.jpg/

ASCII とバーコードだけでどのように見えるか: http://imageshack.us/photo/my-images/23/photo4ucf.jpg/

めちゃくちゃに見えるもの: http://imageshack.us/photo/my-images/708/photo3si.jpg/


更新 1: 他の開発者が何かを試してみましたが、うまくいった可能性があります。さらにテストを行う必要がありますが、...何らかの理由で...イメージを保存した後に 4 つの新しい行を使用するとうまくいくようです...これはマニュアルに記載されていません.

更新 2: さらにテストした結果、新しい行を追加すると状況が「改善」されたように見えますが、修正されません。

更新 3: さらにテストした結果、問題を次のように絞り込むことができると思います。

STORE コマンドを 1 回実行すれば、すべて問題ありません。再度実行すると、発作が発生します。

更新 4: これは、プリンター自体またはアプリケーションへのネットワーク接続に問題があるようです。顧客に電話してリモートで印刷したところ、完璧に機能しているようです。

4

1 に答える 1

0

更新 #4 によると、これはプリンター自体またはアプリケーションへのネットワーク接続方法に問題があるようです。顧客に電話してリモートで印刷したところ、完璧に機能しているようです。

于 2012-03-22T22:49:52.623 に答える