Пример #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            int read_bytes;
            int total_read_bytes = 0;
            int total_bytes;

            SetSeriport();
            byte count = 0;

            byte[] buffer  = new byte[1008];
            byte   address = byte.Parse(textBox1.Text);
            ushort tmp;

            byte[] AllData = new byte[153600];
            int    len     = 1008;

            do
            {
                read_bytes = modbus.ReadBmpDataFromCamera(address, buffer, (byte)count, len);
                if (read_bytes < 6)
                {
                    return;
                }

                tmp = (ushort)(buffer[3] * 256 + buffer[2]);
                if (tmp != count)
                {
                    return;
                }
                //size = (ushort)(receiveBuf[5] * 256 + receiveBuf[4]);
                //if (size > ret)
                //    return 0;
                if (buffer[read_bytes - 2] != 0xAA)
                {
                    return;
                }
                if (buffer[read_bytes - 1] != 0x55)
                {
                    return;
                }

                for (int i = 0; i < read_bytes - 8; i++)
                {
                    AllData[count * 1000 + i] = buffer[i + 6];
                }

                total_read_bytes += read_bytes;
                total_bytes       = (int)(buffer[5] * 256 + buffer[4]);
                count++;
                if (total_bytes - total_read_bytes > 1008)
                {
                    len = 1008;
                }
                else
                {
                    len = total_bytes - total_read_bytes;
                }
            } while (total_bytes > total_read_bytes);
            //byte red;
            //byte green;
            //byte blue;
            //Bitmap bitmap = new Bitmap(320, 240,PixelFormat.Format16bppRgb565);
            //int color;
            //Color c;
            //for (int i = 0; i < 76800; i++)
            //{
            //    color = ((ushort)AllData[2 * i + 1] )*256 +(ushort)AllData[2 * i];
            //    red = (byte)((color >> 11) & 0x1f);
            //    green = (byte)((color >> 5) & 0x3f);
            //    blue = (byte)(color & 0x1f);
            //    red = (byte)((red << 3) | (red & 0x7));
            //    green = (byte)((green << 2) | (green & 0x3));
            //    blue = (byte)((blue << 3) | (blue & 0x7));
            //    c = Color.FromArgb(red, green, blue);
            //    bitmap.SetPixel(i/240, i/320, c);
            //}

            //for (int i = 0; i < 240; i++)
            //{
            //    for (int j = 0; j < 320; j++)
            //    {
            //        color = AllData[(i * 320 + j) * 2 + 1] * 256 + AllData[(i * 320 + j) * 2];

            //        red = (byte)((color >> 11) & 0x1f);
            //        green = (byte)((color >> 5) & 0x3f);
            //        blue = (byte)(color & 0x1f);
            //        red = (byte)((red << 3) | (red & 0x7));
            //        green = (byte)((green << 2) | (green & 0x3));
            //        blue = (byte)((blue << 3) | (blue & 0x7));
            //        c = Color.FromArgb(red, green, blue);
            //        bitmap.SetPixel(j, i, c);
            //    }
            //}

            string     filename = "D:\\" + DateTime.Now.ToBinary() + ".jpeg";
            FileStream stream   = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.Write | FileShare.Read);

            stream.SetLength(AllData.LongLength);
            stream.Write(AllData, 0, AllData.Length);
            stream.Close();
            pictureBox1.BackgroundImage = Bitmap.FromFile(filename);

            //bitmap.Save("C:\\1.bmp",ImageFormat.Bmp);
        }
Пример #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            SetSeriport();
            int count = 0;

            byte[] buffer;
            byte   address = byte.Parse(textBox1.Text);

            byte[] AllData = new byte[153600];
            while (count < 154)
            {
                if (count < 153)
                {
                    buffer = new byte[1000];
                }
                else
                {
                    buffer = new byte[600];
                }
                modbus.ReadBmpDataFromCamera(address, buffer, (byte)count);
                for (int i = 0; i < buffer.Length; i++)
                {
                    AllData[count * 1000 + i] = buffer[i];
                }
                count++;
            }
            byte   red;
            byte   green;
            byte   blue;
            Bitmap bitmap = new Bitmap(320, 240, PixelFormat.Format16bppRgb565);
            int    color;
            Color  c;

            //for (int i = 0; i < 76800; i++)
            //{
            //    color = ((ushort)AllData[2 * i + 1] )*256 +(ushort)AllData[2 * i];
            //    red = (byte)((color >> 11) & 0x1f);
            //    green = (byte)((color >> 5) & 0x3f);
            //    blue = (byte)(color & 0x1f);
            //    red = (byte)((red << 3) | (red & 0x7));
            //    green = (byte)((green << 2) | (green & 0x3));
            //    blue = (byte)((blue << 3) | (blue & 0x7));
            //    c = Color.FromArgb(red, green, blue);
            //    bitmap.SetPixel(i/240, i/320, c);
            //}

            for (int i = 0; i < 240; i++)
            {
                for (int j = 0; j < 320; j++)
                {
                    color = AllData[(i * 320 + j) * 2 + 1] * 256 + AllData[(i * 320 + j) * 2];

                    red   = (byte)((color >> 11) & 0x1f);
                    green = (byte)((color >> 5) & 0x3f);
                    blue  = (byte)(color & 0x1f);
                    red   = (byte)((red << 3) | (red & 0x7));
                    green = (byte)((green << 2) | (green & 0x3));
                    blue  = (byte)((blue << 3) | (blue & 0x7));
                    c     = Color.FromArgb(red, green, blue);
                    bitmap.SetPixel(j, i, c);
                }
            }
            pictureBox1.BackgroundImage = bitmap;
            string     filename = "C:\\1.bin";
            FileStream stream   = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.Write | FileShare.Read);

            stream.SetLength(AllData.LongLength);
            stream.Write(AllData, 0, AllData.Length);
            stream.Close();

            bitmap.Save("C:\\1.bmp", ImageFormat.Bmp);
        }