/// <summary> /// 检测大于极限温度的值 /// </summary> /// <param name="values"></param> public List <ImgPosition> NewGetInfo( ) { try { list.Clear(); device = _DataDisplay.GetDevice(); cAMERA_INFO = device.GetCamInfo(); tempr = new int[cAMERA_INFO.intFPAHeight * cAMERA_INFO.intFPAWidth]; //可以优化,改成固定值 device.GetTemperatureData(tempr, (uint)(cAMERA_INFO.intFPAHeight * cAMERA_INFO.intFPAWidth), 1); //获取整帧图像热点 for (int x = 1; x <= cAMERA_INFO.intFPAWidth; x += Globals.DetectionAccuracy) //X轴 { for (int y = 1; y <= cAMERA_INFO.intFPAHeight; y += Globals.DetectionAccuracy) //Y轴 { float temper = tempr[x * y] * 0.001f; // device.GetTemperatureProbe((uint)x, (uint)y,(uint)Globals.DetectionAccuracy) * 0.001f;//获取温度 检测精度 1 有60*80的点 精度越高时间越长 if (temper >= LimitTmper) //如果大于等于极限温度 { img.tmper = temper; img.x = x; img.y = y; list.Add(img); } } } list.Sort(new ImgPosition()); // FormMain.GetOPCTaskInfo("一共有" + list.Count + "个点"); return(list); } catch (Exception ex) { throw ex; } }
/// <summary> /// 连接相机 /// </summary> /// <param name="cmaerIp">相机IP</param> void ConnectionCamer(uint cmaerIp) { if (_DataControl.IsLinkedByMyself(cmaerIp))//如果是我自己在使用 { return; } else if (_DataControl.IsLinkedByOthers(cmaerIp))//如果是其他人在使用 { DialogResult result = MessageBox.Show("相机正与其它终端连接,确信要抢占吗?", "连接相机", MessageBoxButtons.YesNo); if (result != DialogResult.Yes) { return; } } if (_DataControl.IsInvadedByOthers(cmaerIp)) //如果被别人抢了摄像头 { DislinkCamera(cmaerIp); //就断开连接 } FormDisplay display = _DataControl.GetCurrDisplayForm(); if (display != null) { MagDevice device = display.GetDateDisplay().GetDevice(); if (device.LinkCamera(cmaerIp, 2000)) //连接相机 { DataDisplay.CurrSelectedWndIndex = display.GetDateDisplay().WndIndex; //更新选中框 Globals.GetMainFrm().GetFormDisplayBG().Invalidate(false); } } }
/// <summary> /// 鼠标测温 /// </summary> /// <param name="graphic"></param> /// <param name="w"></param> /// <param name="h"></param> void DrawMouseTemp(Graphics graphic, int w, int h) { Point pt = MousePosition; Point ptLeftUp = this.PointToScreen(new Point(0, 0)); Point ptRightDown = this.PointToScreen(new Point(this.Width - 1, this.Height - 1)); if (pt.X > ptRightDown.X || pt.X < ptLeftUp.X || pt.Y > ptRightDown.Y || pt.Y < ptLeftUp.Y) { return; } MagDevice device = _DataDisplay.GetDevice(); GroupSDK.CAMERA_INFO info = device.GetCamInfo(); int intFPAx = _ptMouse.X * info.intFPAWidth / w; //鼠标X int intFPAy = info.intFPAHeight - _ptMouse.Y * info.intFPAHeight / h - 1; //鼠标Y int intTemp = device.GetTemperatureProbe((uint)intFPAx, (uint)intFPAy, 1); GroupSDK.FIX_PARAM param = new GroupSDK.FIX_PARAM(); device.GetFixPara(ref param); if (_DataDisplay.GetDisplayConfig().bEnableExtCorrect) { intTemp = device.FixTemperature(intTemp, param.fEmissivity, (uint)intFPAx, (uint)intFPAy); } string sText = (intTemp * 0.001f).ToString("0.0") + "坐标X:" + intFPAx + "坐标Y:" + intFPAy; int cx = (int)graphic.MeasureString(sText, this.Font).Width; int cy = (int)graphic.MeasureString(sText, this.Font).Height; int x = _ptMouse.X; int y = _ptMouse.Y - cy; //默认右上 if (_ptMouse.Y < cy) //处于上边沿 { y = _ptMouse.Y + 16; if (_ptMouse.X < cx)//处于左边沿 { x = _ptMouse.X + 16; } else { x = _ptMouse.X - cx; } } else if (_ptMouse.X > w - cx)//右边沿 { x = _ptMouse.X - cx; } graphic.FillRectangle(Brushes.White, new Rectangle(x, y, cx, cy)); graphic.DrawString(sText, this.Font, Brushes.Black, (float)x, (float)y); }
/// <summary> /// 断开摄像头连接 /// </summary> /// <param name="intCameraIP"></param> private void DislinkCamera(uint intCameraIP) { FormDisplay frmDisplay = _DataControl.GetBindedDisplayForm(intCameraIP); if (frmDisplay != null) { MagDevice device = frmDisplay.GetDateDisplay().GetDevice(); device.StopProcessImage(); device.DisLinkCamera(); frmDisplay.Invalidate(false); } }
public bool CreateDevice() { if (_MagDevice == null) { _MagDevice = new MagDevice(IntPtr.Zero); } if (NewFrame == null) { NewFrame = new GroupSDK.DelegateNewFrame(NewFrameCome); } return(_MagDevice.Initialize()); }
public FormDisplay GetCurrDisplayForm() { FormDisplay frmDisplay = Globals.GetMainFrm().GetFormDisplay(DataDisplay.CurrSelectedWndIndex); MagDevice device = frmDisplay.GetDateDisplay().GetDevice(); if (device.GetDevIPAddress() == 0) { return(frmDisplay); } else { return(GetFirstFreeDisplayForm()); } }
void OnDestroy() { MagDevice device = _DataDisplay.GetDevice(); if (device.IsProcessingImage()) { device.StopProcessImage(); } if (device.IsLinked()) { device.DisLinkCamera(); } _DataDisplay.DestroyDevice(); }
/// <summary> /// 是否被别人抢占了相机 /// </summary> /// <returns></returns> public bool IsInvadedByOthers(uint intUserIP) { uint max_wnd = Globals.GetMainFrm().GetMaxDeviceWnd(); for (uint i = 0; i < max_wnd; i++) { MagDevice device = Globals.GetMainFrm().GetFormDisplay(i).GetDateDisplay().GetDevice(); if (device.GetDevIPAddress() != 0 && intUserIP != _MagService.GetLocalIp()) { return(true); } } return(false); }
public bool IsLinkedByMyself(uint intCameraIP) { uint max_wnd = Globals.GetMainFrm().GetMaxDeviceWnd(); for (uint i = 0; i < max_wnd; i++) { MagDevice device = Globals.GetMainFrm().GetFormDisplay(i).GetDateDisplay().GetDevice(); if (device.IsLinked() && device.GetDevIPAddress() == intCameraIP) { return(true); } } return(false); }
public FormDisplay GetFirstFreeDisplayForm() { uint max_wnd = Globals.GetMainFrm().GetMaxDeviceWnd(); for (uint i = 0; i < max_wnd; i++) { FormDisplay frmDisplay = Globals.GetMainFrm().GetFormDisplay(i); MagDevice device = frmDisplay.GetDateDisplay().GetDevice(); if (device.GetDevIPAddress() == 0) { return(frmDisplay); } } return(null); }
private void buttonLink_Click(object sender, EventArgs e) { int index = comboBoxOnlineDevice.SelectedIndex; if (index < 0) { return; } MagService service = _DataControl.GetService(); uint dev_num = service.GetTerminalList(_LstEnumInfo, MAX_ENUMDEVICE); if (_DataControl.IsLinkedByMyself(_LstEnumInfo[index].intCamIp)) { return; } else if (_DataControl.IsLinkedByOthers(_LstEnumInfo[index].intUsrIp)) { DialogResult result = MessageBox.Show("相机正与其它终端连接,确信要抢占吗?", "连接相机", MessageBoxButtons.YesNo); if (result != DialogResult.Yes) { return; } } if (_DataControl.IsInvadedByOthers(_LstEnumInfo[index].intUsrIp)) { DislinkCamera(_LstEnumInfo[index].intCamIp); } FormDisplay display = _DataControl.GetCurrDisplayForm(); if (display != null) { MagDevice device = display.GetDateDisplay().GetDevice(); if (device.LinkCamera(_LstEnumInfo[index].intCamIp, 2000)) { DataDisplay.CurrSelectedWndIndex = display.GetDateDisplay().WndIndex;//更新选中框 Globals.GetMainFrm().GetFormDisplayBG().Invalidate(false); } } RefreshOnlineDevice(); }