1

一度に32バイトのデータのチャンクとしてPCのシリアルポートに送られる画像を表示するのに問題があります。すべての着信バイトを同じメモリストリームに保持する方法、そしてこの画像を画像に表示するにはどうすればよいですか?箱

これがコードです

if (((int)header[0] == 0x76) && (header[1] == 0x00) && (header[2] == 0x32) && (header[3] == 0x00) && (header[4] == 0x00)) /// the header is true ,read the image bytes
{
    for (int i = 0; i < 32; i++)
        Jpg[i] = (byte)CamPort.ReadByte();

    fs.Write(Jpg, 0, Jpg.Length);

    for (int i = 1; i < Jpg.Length; i++)
    {
        if ((Jpg[i - 1] == 0xFF) && (Jpg[i - 0] == 0xD9))// reaching the last two bytes(FF D9) of Jpg //
        {
            EndFlag = true;
            MessageBox.Show("done");
            //OneSnap.Image = Image.FromStream(fs);
            fs.Close();
        }
    }
}
else
{
    MessageBox.Show("DONE");
}
4

1 に答える 1

2

ネストされたループを使用して、一度に32バイトをより大きな配列に追加します。

int offset = 0;
for(int i = 0; i < total; i++){
    for(int j = 0; j < 32; j++){
        offset = i * 32;
        jpg[offset + j] = (byte)CamPort.ReadByte();
    }
 }

そのようなものは、すべてのデータを1つの配列にまとめる必要があります。そうすれば、そのデータを使用して、またはそのデータに対して操作を行うことができます。そこから、好きな方法でデータを表示するのは比較的簡単なことです。

于 2013-01-27T20:50:26.187 に答える