0

バーコードから読み書きするプログラムの作成に取り組んでいます書き込み時の問題(コマンドをバーコードに送信)

画像をキャプチャするコマンドが IMGSNP であることを PDF メーカーのバーコードで読み取ったので、次のように書き込み関数に渡します serialPortObj.write ("IMGSNP")

しかし、コマンドに応答するバーコードがないのはなぜですか? 画像をキャプチャしませんでした:(これは間違った方法ですか(場合によっては画像を撮る必要があるかもしれません。バーコード自体ではなく、パスポートや製品などの画像です。バーコードは含まれていません)バーコードの製造元はHandHeld( 4800p) 助けてくれてありがとう

ここに私のコードがあります

    private  SerialPort Com ;        
    private delegate void DataReadDel(string Text);

    private void Form1_Load(object sender, EventArgs e)
    {
        Com = new SerialPort("COM4");
        Com.Open();
        Com.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
    }
    private void port_DataReceived(object sender,SerialDataReceivedEventArgs e)
    {
        Com.Encoding = Encoding.Default;
        this.BeginInvoke(new DataReadDel(DataReceived), new object[] {Com.ReadExisting() });
    }
    private void DataReceived(string dR)
    {
        textBox1.Text = dR;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        if (! Com.IsOpen )
        {
            Com.Open();
        }
        Com.Write("IMGSNP1B1L");
        Com.Write("IMGSHP");
        string imgbytes = Com.ReadExisting();// return ""
    }
4

4 に答える 4

2

スキャナで画像をキャプチャして送信するには、IMGSNP コマンドとともにシリアル コマンド ヘッダーを送信する必要があります。ヘッダーは 3 つの ASCII 文字です: SYN M CR (ASCII 22、77、13)。

于 2010-05-25T12:02:48.120 に答える
1

デバイスがリクエストの取り込みを検討する前に、まずSYNMCRを送信する必要があります。

次の情報は、私自身のバーコードリーダーを使用して、非常によく似た処理を実行しようとしているときに取得されたものです。

IMGSHPを使用する場合、デバイスはSYN(0x16)の後に0xfe [4バイトのデータ長、リトルエンディアン]0x0d[一部のデータ]0x1d[画像データ]で応答します。

于 2012-01-28T03:34:21.153 に答える
1

バーコード リーダーが画像をキャプチャしていませんか? ドキュメントによると:

イメージ スナップ ( IMGSNP ) コマンドが処理されると、イメージが取得されます。最後の画像は常にメモリに保存されます。IMGSHPコマンドを使用して、イメージを「出荷」することができます。

したがって、 IMGSNPを使用して画像を取得している可能性がありますが、起こっていることは、画像をメモリに保存し、応答として送り返していないことだけです。IMGSHPコマンドを発行してみて、シリアル ポートから読み取るデータがあるかどうかを確認してください。

于 2009-10-18T17:12:17.277 に答える
0

コマンド自体と同様に、終了文字を提供する必要がありますか?

一般的な方法は、コマンド パケットを STX および ETX 文字でラップして、バーコード リーダーが完全なコマンドを受信したことを認識できるようにするか、キャリッジ リターン (CR) とラインフィード文字 (LF) で終了することです。スペックを確認する必要があります。

また、文字列を送信しているため、エンコードが重要になる可能性があり、バーコード リーダーには ASCII 文字を送信する必要があると思いますが、ユニットを確認する必要があります。

コマンドを送信する最も簡単な方法は、バイトの配列として送信することだと思います。これにより、必要に応じて STX、ETX、CR、または LF 文字を使用しやすくなります。これらは印刷できない文字であり、次の値を持つためです。

STX = 0x02、ETX = 0x03、CR = 0x0D、LF = 0x0A

于 2009-10-19T16:42:39.193 に答える