0

COM1 経由で DOS コマンドをレシート プリンターに送信するにはどうすればよいですか?

現在、キャッシュ レジスタ ソフトウェアを開発していますが、レシート プリンターを使用して問題が発生しました。DOS 経由で 16 進数のコマンドをプリンターに送信できるようにする必要があります。

これまでのところ、次のことを試みました。

Open CMD 入力 Copy con: com1 16 進数を入力 Ctrl + Z を押します Enter を押します

これは、私が読んだことによると、16進数をコマンドとしてプリンターに送信する必要があります。代わりに、数値を文字列として送信し、テキストを出力するだけです。

TPG A794レシートプリンターを使用しているプリンターに関する情報。プリンターのマニュアルはこちらにあります: http://www.cognitivetpg.com/downloads/A794%20Spec%20Sheet.pdf

私はすべてを試しましたが、何もうまくいかないようです。

4

1 に答える 1

1

16 進コードを入力しないでください。10 進数の ASCII コードが必要です。例: 0xF を書き込むcopy con: com1には、10 進値を 3 桁 ( 015 ) で入力している間に 'ALT' を押して (押し続ける)、10 進数 (15) に変換し、'ALT' を離す必要があります。HexNumber が複数あるコマンドの場合は、次の値に進みます。終了したら、Ctrl-Z を押します。

「コマンド」をテキストファイルに書き込んでから、それらを com1 にコピーすると、より使いやすくなる場合があります。次に例を示します。

copy linefeed com1:

(テストするシリアルデバイスはありませんが、動作するはずです)

で試してみました

copy con bell.txt

次に、 007 (= 0x07、これは Bell です)、Ctrl-Zを入力しました。これにより、長さ= 1バイトのテキストファイルが得られます

Type bell.txt

ビープ音が鳴ります。

編集 "1B" は、いわゆる "エスケープ シーケンス" (マルチバイト コマンド) のコードです。"70" はコマンド自体であり、3 つのパラメーター (n、p1、p2) が必要です。したがって、完全なシーケンスの長さは 5 バイトです。「n」、「p1」、「p2」を適切な数字に置き換える必要があります。それらはシリアルデバイスのマニュアルにあります(「1B」はいわゆる「エスケープシーケンス」(マルチバイトコマンド)のコードです)「70」はコマンド自体であり、あなたが説明したように、には 3 つのパラメータ (n、p1、p2) が必要です。したがって、完全なシーケンスは 5 バイトの長さです。"n"、"p1"、"p2" を適切な数字に置き換える必要があります。シリアルのマニュアルに記載されています。デバイス ( http://www.cognitivetpg.com/downloads/189-9200250C.pdf)、ページ 69. P1 と P2 は時間を説明しているようで、引き出しを開く必要があります/cose) N は、どの引き出しと話しているかを説明します。

EDIT2 コマンドごとに 1 つのファイルを作成します。例えば。「open1.bin」「close1.bin」など。最初の回答で説明したように作成します。最初に「単純な」コマンド (1 バイト コマンド) を試して、これが正常に機能することを確認する必要があります。コマンドを実行するには、 を使用してコマンドを com 1 に送信しますcopy open1.bin com1:。マルチバイト コマンドcopy con: file.txtの場合は、「alt」を押したまま最初の値を入力し、「alt」を放して、もう一度押して 2 番目の値を入力するというように、それらを作成します。

于 2013-06-05T17:13:06.467 に答える