2017-01-03 25 views
1

これは私の初めてのstackoverflowへの投稿です。C# - シリアルポート経由でKPLコマンドをzebra ttp 2010プリンタに送信

私は、zebra ttp 2010プリンタが接続されているシリアルポート(この場合はCOM1)に接続する必要があるWindowsフォーム(C#)アプリケーションを使用して、プリンタが理解して印刷できるKPLコマンドを送信しますが欲しいです。私はこのコードを実行すると、何も印刷されていないが、私は、プリンタ側で物理的な「フィード」ボタンを押すと、排出

serialPort1.PortName = "COM1"; 
serialPort1.Open(); 

//command that prints a EAN barcode 
//i have tested the command using the zebra toolbox.exe and works as intended 
string str = "<ESC>BS<0><0><h 48><0><0><00><0><h 40><0><2><02><ESC>BW<00>123456789<00><LF><RS>"; 

serialPort1.Write(str); 
serialPort1.Close(); 

:私はこの非常に単純なコードをやっている時点では

紙にはコマンドの結果ではなく文字列が書かれています。

また、文字列をバイト配列に変換しようとしましたが、最終結果は同じです。

byte[] toBytes = Encoding.ASCII.GetBytes(str); 
serialPort1.Write(toBytes, 0, toBytes.Length); 
serialPort1.Close(); 

は、だから私は、プリンタの印刷に受信されたデータを作成することができるというわけではないだけでなく、プリンタがKPLコマンドとしてデータを処理されていません。

誰かが私が間違っていることを知っています。どうすれば修正できますか?

**** EDIT ***** 私は間違っていたことを理解しました。 KPLコマンド(例:"<ESC>")を16進表現に変換しないため、テキストをバイト配列に変換することはできません。私は、例えば改行コマンドが「0A」で表現されていることを発見したCOMポートを盗聴することにより

ので、私はこれを行うとき:

byte[] toSend = { 0x1B, 0x74, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x50, 0x61, 0x72, 0x6B, 0x4E, 0x61, 0x6D, 0x65, 0x00, 0x0A, 0x0A, 0x0D, 0x1E }; 
sp.Write(toSend, 0, toSend.Length); 

プリンタが自動的に印刷を開始し、それはず

答えて

0
として

チケットの長さが最低限必要なようです。サーマルプリンタは、典型的には、印刷すべき最小ライン数または現在および/またはカットが実行される前のタイムアウトを有する。 ESC/POS(使用しているプロトコル)には、チケットをいつ、どのように表示するかを制御できる一連のコマンドがあります。ベンダーごとにいくつかのバリエーションがありますが、あなたのプリンターはこれらのコマンドの少なくとも一部をサポートしています。

<ESC> |#fP - Feed # of lines and cut paper 
<ESC> |#lF - Feed # of line and do not cut 

https://www.zebra.com/content/dam/zebra/manuals/en-us/printer/kiosk-opos-driverguide-en.pdfを参照してください。

+0

印刷するラインを増やしても、フィードボタンを押さない限り、プリンタは印刷しません。また、コマンドを送信した後にそのボタンを押すと、結果ではなくコマンドが印刷されます。 (例えば、プリンタのプリントは、この:「トン<10 2><20 2><0> ParkName <0>」の代わりに:私は私が間違って何をやっていた発見した「ParkName」 – AndreB

+0

が、私は単にGetBytesメソッド()を使用してバイトにコマンドを変換するカントので、それはちょうどます各文字を16進表現に変換する byte [] toSend = {0x0A、0x0D、0x1E}; sp.Write(toSend、0、toSend.Length); 私はプリンタの印刷を管理していますデータを受け取ると自動的に – AndreB

関連する問題