Пример #1
0
        private void readImageLogButton_Click(object sender, EventArgs e)
        {
            if (m_DeviceType != BSSDK.BS_DEVICE_DSTATION && m_DeviceType != BSSDK.BS_DEVICE_XSTATION && m_DeviceType != BSSDK.BS_DEVICE_BIOSTATION2)
            {
                return; // Not Supported.
            }

            Cursor.Current = Cursors.WaitCursor;

            byte[] imageLog = new byte[Marshal.SizeOf(typeof(BSSDK.BSImageLogHdr)) + BSSDK.DF_LEN_MAX_IMAGE];

            int dataLen = 0, eventTime = 0, eventType = 0;

            for (int i = 0; i < logList.Items.Count; i++)
            {
                if (logList.Items[i].Selected == true)
                {
                    eventType = (int)System.Convert.ToDecimal(logList.Items[i].SubItems[5].Text);
                    eventTime = (int)System.Convert.ToDecimal(logList.Items[i].SubItems[6].Text);
                    break;
                }
            }

            int result = BSSDK.BS_ReadSpecificImageLog(m_Handle, eventTime, eventType, ref dataLen, imageLog);

            if (dataLen > Marshal.SizeOf(typeof(BSSDK.BSImageLogHdr)))
            {
                GCHandle            packet   = GCHandle.Alloc(imageLog, GCHandleType.Pinned);
                BSSDK.BSImageLogHdr imageHdr = (BSSDK.BSImageLogHdr)Marshal.PtrToStructure(packet.AddrOfPinnedObject(), typeof(BSSDK.BSImageLogHdr));
                int imageSize = (int)imageHdr.imageSize;
                packet.Free();

                if (imageSize > 0 && imageSize < BSSDK.DF_LEN_MAX_IMAGE)
                {
                    byte[] imageBytes = new byte[imageSize];
                    System.Buffer.BlockCopy(imageLog, Marshal.SizeOf(typeof(BSSDK.BSImageLogHdr)), imageBytes, 0, imageBytes.Length);

                    try
                    {
                        String       filename = "c:\\temp\\test.jpg";
                        FileStream   fs       = new FileStream(filename, FileMode.CreateNew, FileAccess.ReadWrite);
                        BinaryWriter write_fs = new BinaryWriter(fs);
                        write_fs.Write(imageBytes);
                        write_fs.Close();
                        fs.Close();

                        pictureBox1.Image = System.Drawing.Bitmap.FromFile(filename);
                    }
                    catch (Exception saveE)
                    {
                        MessageBox.Show(this, saveE.Message);
                    }
                }
            }
            Cursor.Current = Cursors.Default;
        }