私は現在、HoneywellのC#、POS for .NETおよびPOS4NET Suiteを使用してHoneywell Genesis 7580Gスキャナを制御するプロジェクトに取り組んでいます。私は、現在のシリアルリードタイムアウトを取得したいと思いますので、私は次のようにPOS4NETからDIRECTIO()メソッドを呼び出し:POSIO for .NETでDirectIO()を使用してinquiryコマンドを送信する方法はありますか?
string command = "TRGSTO?.";
DirectIOData response = scanner.DirectIO(18, 1024, Encoding.ASCII.GetBytes(command));
byte[] buffer = (byte[])response.Object;
Console.WriteLine("$: Response: " + Encoding.ASCII.GetString(buffer));
このコードを印刷:
「TRGSTO20 $::レスポンス」
3つのゼロ(時間単位はミリ秒)と[ACK]文字が欠けています。私はこれを期待していた ...
私は、コマンドを変更した場合、 "$::応答TRGSTO20000 [ACK]"
しかし、別の設定を取得するには...
string command = "BEPPWR?.";
DirectIOData response = scanner.DirectIO(18, 1024, Encoding.ASCII.GetBytes(command));
byte[] buffer = (byte[])response.Object;
Console.WriteLine("$: Response: " + Encoding.ASCII.GetString(buffer));
コード期待どおりに動作し、プリント
"$:応答:BEPPWR1 [ACK]"DIRECTIOを使用して問い合わせコマンドを()を送信するための正しい方法は何ですか?
私は関連する仕様を調べました。 「Genesis 7580g User's Guide」の162ページの「Serial Trigger Mode:Read Time-Out」の項目を見ると、設定範囲は0〜300000なので、最大6桁ですが、コマンドは4桁です。 ただし、「ハンズフリータイムアウト」(163ページ)と同じ範囲の値を設定すると、コマンドの数値パラメータ部分は6桁になります。 "シリアルトリガモード:読み取りタイムアウト"の場合、ドキュメント/サービスオブジェクト/ファームウェアの1つが正しくない可能性があります。 ベンダーに正しいかどうか確認してください。 – kunif