0

これは奇妙なことです。IPとそれがリッスンするポートを備えたプリンターセットアップがあり、次に印刷ジョブをプリンターに送信する必要があります。

なんとかプリンターに接続できましたが、何かを送信すると、プリンターでタイムアウトが発生するか、何もせずにそのままになります。

ログに表示されているプリンタと通信できることはわかっています。

これまでのところ、私は次のものを持っています:

_Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
_Socket.Connect("192.168.1.52", 2123);
byte Enq = 0x05;
byte Ack = 0x06;
byte[] tran;
tran = new byte[] { Enq };
_Socket.Send(tran, 1, SocketFlags.None);

tran = new byte[] { 0x30 };
_Socket.Send(tran, 1, SocketFlags.None);

tran = new byte[] { 0x00, 0x01 };
_Socket.Send(tran, 2, SocketFlags.None);

tran = new byte[] { 0xFF };
_Socket.Send(tran, 1, SocketFlags.None);

マニュアルによると、私は次のことをする必要があります:

send 1 byte Identifier 30h
send 2 bytes length 00h, 01h
send data (action to be performed) 1 byte FFh

おそらくお分かりのように、私はこれを達成する方法がわからないので、すべての人が歓迎します

Edit

いくつかの追加情報、プリンターにはドライバーが付属していないので、生データをプリンターに送信する必要があると私が言えることから、プリンターにはシリアル接続がありますが、シリアルケーブルには遠すぎるためイーサネット接続ですそこにあります(イーサネット経由のシリアルだと思います)。

ダイアログの一般原理コンピューターはENQ(1バイト)を送信しますプリンターはACK(1バイト)を送信しますコンピューターはデータを送信します(同一1バイト|長さ2バイト|データ0〜nバイト|チェックサム1バイト)プリンターはAck(1バイト)を送信します

過去にシリアルを使用したことがある場合、ポートで書き込み機能を使用してデータを送信し、データをバッファーに入れ、受信が終了したらバッファーをチェックしましたが、IPでこれをどのように行うかについてはわかりません?

Identifier (1 hexadecimal byte)
Specific to each command.
 Length (2 hexadecimal bytes)
The length is a hexadecimal value representing the number of bytes present after the
two length bytes and not including the check byte (Checksum).
In general, the maximum value is 2044 bytes or 07h FCh.
For transmission of a message for printing, the maximum value is 4092 bytes or 0Fh
FCh.
Note: The check byte is not checked by the printer if b7 of the first length byte is set
to 1. In this case the data in the frame received is not checked.
Data (0 to n bytes)
Zero bytes for a general request from the computer to the printer.
n bytes representing the instructions needed to define a function.
Checksum (1 hexadecimal byte)
This corresponds to an exclusive OR of all preceding bytes (identifier, length and data
bytes
4

1 に答える 1

1

ソケットの代わりに TCPClass を使用するようにシステムを変更したところ、期待どおりに動作するようになりました。技術担当者は役に立たなかったのですが、少なくとも営業担当者が来て、プリンターの他の問題について知っていることを手伝ってくれました。そこの。すべては、ドキュメントに不足している情報に要約されます

于 2012-05-16T09:58:18.590 に答える