これは奇妙なものです。IPとポートを使用してプリンタを設定しているので、プリンタに印刷ジョブを送信する必要があります。シリアルオーバーIP拒否コマンドと通信するMODBUS?
私はプリンタに接続することができましたが、何かを送信したときにプリンタでタイムアウトが発生するか、何もしないでそこに座っています。
私は、そのログに表示されているプリンタと話すことができます。私は次の操作を行う必要があり、マニュアルによると
_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
いくつかの追加情報、プリンタにはドライバーが付属していません私はそれがプリンタにシリアル接続を持っているが、シリアルケーブルが遠すぎるので、そこにイーサネット接続があります(私はそれがイーサネット上のシリアルと信じています)。 (|長さ2バイト| nバイトのデータ0 |チェックサム1バイトのIdent 1バイト) プリンタはACKを送信
一般原則ダイアログ のコンピュータは、ACK(1バイト)を送信し コンピュータがデータを送信ENQ(1バイト)プリンタを送ります(1バイト)
過去にシリアルを使用していたときに、データを送信するためにポート上の書き込み機能を使用しましたが、バッファにデータを取得してバッファをチェックして終了しましたが、どのように私はこのonver 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
"winforms"、 "modbus"、または "serial-port"とは何が関係していますか? TCPを介して実装されたシリアルプロトコルがあるかもしれませんが、あなたのプログラムはWinFormsベースのものだとは思いますが、Modbusはどこに入っていますか?私はModbusプリンタについて聞いたことがなく、あなたは確かにModbusプロトコルを実装していません。 – Gabe
これらの低レベルの通信をすべて自分で処理するのはなぜですか?そして、なぜあなたはこれを「奇妙なもの」と呼ぶのですか? –
@Gabe私は限られた経験をもってModbusだと信じていますが、私は不確かですから? – Neo