private void butOpen_Click(object sender, EventArgs e) { int CamNum = 0; //获取相机个数 MVSTATUS_CODES r = MVGigE.MVGetNumOfCameras(out CamNum); if (CamNum == 0) { MessageBox.Show("没有找到相机,请确认连接和相机IP设置"); return; } //打开第0个相机 r = MVGigE.MVOpenCamByIndex(0, out m_hCam); if (m_hCam == IntPtr.Zero) { if (r == MVSTATUS_CODES.MVST_ACCESS_DENIED) { MessageBox.Show("无法打开相机,可能正被别的软件控制"); return; } } int w, h; //获取图像宽 r = MVGigE.MVGetWidth(m_hCam, out w); if (CamNum == 0) { MessageBox.Show("取得图像宽度失败"); return; } //获取图像高 r = MVGigE.MVGetHeight(m_hCam, out h); if (CamNum == 0) { MessageBox.Show("取得图像高度失败"); return; } //获取图像像素格式 r = MVGigE.MVGetPixelFormat(m_hCam, out m_PixelFormat); if (CamNum == 0) { MessageBox.Show("取得图像颜色模式失败"); return; } //创建图像 if (m_PixelFormat == MVAPI.MV_PixelFormatEnums.PixelFormat_Mono8) { m_hImage = MVAPI.MVImage.MVImageCreate(w, h, 8); } else { m_hImage = MVAPI.MVImage.MVImageCreate(w, h, 24); } this.butOpen.Enabled = false; this.butGrab.Enabled = true; this.butClose.Enabled = false; }
private void butGrab_Click(object sender, EventArgs e) { MVAPI.TriggerModeEnums mode; //获取相机触发模式 MVGigE.MVGetTriggerMode(m_hCam, out mode); //如果相机不是连续采集模式 if (mode != MVAPI.TriggerModeEnums.TriggerMode_Off) { //设置相机为连续采集模式 MVGigE.MVSetTriggerMode(m_hCam, MVAPI.TriggerModeEnums.TriggerMode_Off); } //为StreamCBDelegate委托注册StreamCB方法 StreamCBDelegate += new MVAPI.MV_SNAPPROC(StreamCB); //开始采集 MVSTATUS_CODES r = MVGigE.MVStartGrab(m_hCam, StreamCBDelegate, this.Handle); this.butOpen.Enabled = false; this.butGrab.Enabled = false; this.butClose.Enabled = true; m_bRun = true; }