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); }
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); }