2012-04-27 2 views
0

これは奇妙なものです。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 
+0

"winforms"、 "modbus"、または "serial-port"とは何が関係していますか? TCPを介して実装されたシリアルプロトコルがあるかもしれませんが、あなたのプログラムはWinFormsベースのものだとは思いますが、Modbusはどこに入っていますか?私はModbusプリンタについて聞いたことがなく、あなたは確かにModbusプロトコルを実装していません。 – Gabe

+0

これらの低レベルの通信をすべて自分で処理するのはなぜですか?そして、なぜあなたはこれを「奇妙なもの」と呼ぶのですか? –

+0

@Gabe私は限られた経験をもってModbusだと信じていますが、私は不確かですから? – Neo

答えて

1

私が代わりにソケットのTCPClassを使用するようにシステムを変更し、期待どおりに機能するようになりました、彼らのハイテク連中は無用だったが、少なくとも彼らの頭の売上高の男が来て、彼が持つ他の問題について知っていることを手伝いましたプリンターは最終的にそこに到達することができました。すべての情報が文書に欠けている情報になっています

関連する問題