public void Delelet(ProCommon.Communal.CameraProperty camProperty) { if (_list.ContainsKey(camProperty.ID)) { _list.Remove(camProperty.ID); } }
public void Add(ProCommon.Communal.CameraProperty camProperty) { if (!_list.ContainsKey(camProperty.ID)) { _list.Add(camProperty.ID, camProperty); } }
/// <summary> /// 系统自检完成后资源配置 /// </summary> private void InitExternal() { //加载本地配置文件到内存 ProLaminator.Config.CfgManager.Instance.Load(); _cfgSys = ProLaminator.Config.CfgManager.Instance.CfgSys; int count = 0; #region 分配项目用设备 //分配相机 _cfgCam = ProLaminator.Config.CfgManager.Instance.CfgCam; if (_cfgCam != null) { count = _cfgCam.PropertyList.Count; ProCommon.Communal.CameraProperty camPro = null; for (int i = 0; i < count; i++) { camPro = _cfgCam.PropertyList[i]; //分配玻璃工位相机 if (_cfgSys.GlassStationName == camPro.StationName) { CamPropertyForGlass = camPro; } //分配膜1工位相机 if (_cfgSys.Membrane1StationName == camPro.StationName) { CamPropertyForMembrane1 = camPro; } //分配膜2工位相机 if (_cfgSys.Membrane2StationName == camPro.StationName) { CamPropertyForMembrane2 = camPro; } //分配其他功能相机 } } ProLaminator.Device.CameraManager.Instance.CfgMgr = ProLaminator.Config.CfgManager.Instance; //分配其他设备 #endregion _sysLogFilePath = ProLaminator.Config.CfgManager.Instance.CfgSys.SystemLogFilePath; _excpLogFilePath = ProLaminator.Config.CfgManager.Instance.CfgSys.ExceptionLogFilePath; }
public ProCommon.Communal.CameraProperty this[string camPropertyID] { get { ProCommon.Communal.CameraProperty cam = null; if (_list.ContainsKey(camPropertyID)) { cam = (ProCommon.Communal.CameraProperty)_list[camPropertyID]; } return(cam); } }
public ProCommon.Communal.CameraProperty this[int indx] { get { ProCommon.Communal.CameraProperty cam = null; if (_list.Count > 0 && indx >= 0 && indx < _list.Count) { cam = (ProCommon.Communal.CameraProperty)_list.GetByIndex(indx); } return(cam); } }
private void OnCameraImageGrabbed(ProCommon.Communal.CameraProperty cam, HalconDotNet.HObject hoImage) { if (hoImage != null && hoImage.IsInitialized()) { if (HoImage != null && HoImage.IsInitialized()) { HoImage.Dispose(); } HoImage = hoImage; if (ImageGrabbedEvt != null) { ImageGrabbedEvt(cam, HoImage); } } }
public CameraAPI(ProCommon.Communal.CameraProperty camProperty) { if (camProperty != null) { _cameraProperty = camProperty; switch (camProperty.Brand) { case ProCommon.Communal.DeviceBrand.Baumer: break; case ProCommon.Communal.DeviceBrand.Dalsa: break; case ProCommon.Communal.DeviceBrand.Imaging: break; case ProCommon.Communal.DeviceBrand.MindVision: ProDriver.Driver.CameraDriver_MindVision camdriver_mindvision = new ProDriver.Driver.CameraDriver_MindVision(camProperty); ICameraDriverable = (camdriver_mindvision as ProDriver.Driver.ICameraDriver); break; case ProCommon.Communal.DeviceBrand.Basler: ProDriver.Driver.CameraDriver_Basler camdriver_basler = new ProDriver.Driver.CameraDriver_Basler(camProperty); ICameraDriverable = (camdriver_basler as ProDriver.Driver.ICameraDriver); break; case ProCommon.Communal.DeviceBrand.HikVision: ProDriver.Driver.CameraDriver_HikVision camdriver_hikvision = new ProDriver.Driver.CameraDriver_HikVision(camProperty); ICameraDriverable = (camdriver_hikvision as ProDriver.Driver.ICameraDriver); break; case ProCommon.Communal.DeviceBrand.DaHua: ProDriver.Driver.CameraDriver_DaHua camdriver_dahua = new ProDriver.Driver.CameraDriver_DaHua(camProperty); ICameraDriverable = (camdriver_dahua as ProDriver.Driver.ICameraDriver); break; default: break; } } }
public CameraDriver_MindVision(ProCommon.Communal.CameraProperty cam) : base(cam) { _grabber = IntPtr.Zero; _deviceRef = 0; _SDKImageGrabbedDel = new pfnCameraGrabberFrameCallback(OnSDKImageGrabbed); }
/// <summary> /// 检测配置文件 /// </summary> /// <param name="fileDirectory"></param> /// <param name="fileName"></param> /// <param name="bkgrdWorker"></param> private bool CheckConfigFile(string fileDirectory, string fileName, System.ComponentModel.BackgroundWorker bkgrdWorker) { SysChkStepNumber += 1; bool rt = false; if (!System.IO.File.Exists(fileDirectory + "\\" + fileName)) { try { switch (fileName) { #region 系统配置 case ProLaminator.Config.CfgManager.SYSTEM_CONFIG_FILE_NAME: { _cfgSysTmp = new ProLaminator.Config.CfgSystem(); _cfgSysTmp.LanguageVersion = ProCommon.Communal.Language.Chinese; _cfgSysTmp.EnableAutoLaunch = false; _cfgSysTmp.GlassStationName = "GLASS"; _cfgSysTmp.Membrane1StationName = "UPMEMBRANE"; _cfgSysTmp.Membrane2StationName = "DOWNMEMBRANE"; _cfgSysTmp.SerialPortNameForPlc = "COM1"; _cfgSysTmp.SpeedLow = 10.0f; _cfgSysTmp.SpeedMedium = 30.0f; _cfgSysTmp.SpeedHigh = 60.0f; _cfgSysTmp.ToolCenterOffsetX = 0.0f; _cfgSysTmp.ToolCenterOffsetY = 0.0f; _cfgSysTmp.ClientName = "深圳市智显科技有限公司"; _cfgSysTmp.CtrllerCategoryArray = new ProCommon.Communal.DeviceCategory[] { ProCommon.Communal.DeviceCategory.Camera, //ProCommon.Communal.DeviceCategory.Board, ProCommon.Communal.DeviceCategory.SerialPort //ProCommon.Communal.DeviceCategory.Socket, //ProCommon.Communal.DeviceCategory.Web }; _cfgSysTmp.EnableLastRoutine = false; //运行软件时不启用上次生产程式 _cfgSysTmp.LastRoutinePath = null; //上次生产程式(默认为空) _cfgSysTmp.RoutineDirectory = null; //生产程式目录(转到默认) _cfgSysTmp.DataBaseDirectory = null; //数据和日志目录(数据库,转到默认) _cfgSysTmp.RunDataSheetName = null; //流水结果表名称(转到默认) _cfgSysTmp.EnableSaveRunData = false; _cfgSysTmp.SaveRunDataDays = 7; _cfgSysTmp.DisplayRunDataCount = 10; _cfgSysTmp.RunLogSheetName = null; //流水日志表名称(转到默认) _cfgSysTmp.EnableSaveRunLog = false; _cfgSysTmp.SaveRunLogDays = 7; _cfgSysTmp.DisplayRunLogCount = 15; _cfgSysTmp.AlarmLogSheetName = null; //报警日志表名称(转到默认) _cfgSysTmp.EnableSaveAlarmLog = false; _cfgSysTmp.SaveAlarmLogDays = 7; _cfgSysTmp.SystemLogFilePath = null; //系统日志文件路径(转到默认) _cfgSysTmp.ExceptionLogFilePath = null; //异常日志文件路径(转到默认) ProCommon.Communal.CfgAPI.Save <ProLaminator.Config.CfgSystem>(_cfgSysTmp, ProLaminator.Config.CfgManager.ConfigDirectory + "\\" + ProLaminator.Config.CfgManager.SYSTEM_CONFIG_FILE_NAME); } break; #endregion #region 用户配置 case ProLaminator.Config.CfgManager.ACCOUNT_CONFIG_FILE_NAME: { //新增加账户时,按照如下规则:账户列表中最后一个账户的Number,然后加1 ProCommon.Communal.Account acc = new ProCommon.Communal.Account(0, "ACC_0000"); acc.Name = "Admin"; acc.Authority = ProCommon.Communal.AccountAuthority.Administrator; acc.PassWord = ProCommon.Communal.DESEncrypt.Encrypt("123"); ProLaminator.Config.CfgAccount cfgAcc = new Config.CfgAccount(); cfgAcc.AccList.Add(acc); ProCommon.Communal.CfgAPI.Save <ProLaminator.Config.CfgAccount>(cfgAcc, ProLaminator.Config.CfgManager.ConfigDirectory + "\\" + ProLaminator.Config.CfgManager.ACCOUNT_CONFIG_FILE_NAME); } break; #endregion #region 报警配置 case ProLaminator.Config.CfgManager.ALARM_CONFIG_FILE_NAME: break; #endregion #region 相机配置 case ProLaminator.Config.CfgManager.CAMERA_CONFIG_FILE_NAME: { if (_cfgSysTmp != null && _cfgSysTmp.CtrllerCategoryArray != null) { bool isCreate = false; foreach (ProCommon.Communal.DeviceCategory cc in _cfgSysTmp.CtrllerCategoryArray) { if (cc == ProCommon.Communal.DeviceCategory.Camera) { isCreate = true; break; } } if (isCreate) { if (_cfgCam == null) { _cfgCam = new Config.CfgCamera(); } _defaultCameraName = "玻璃工位"; //根据项目需要,创建建默的相机配置文件 //新增加相机属性时,按照如下规则:相机属性列表中最后一个相机属性的Number,然后加1 ProCommon.Communal.CameraProperty camProGlass = new ProCommon.Communal.CameraProperty(ProCommon.Communal.DeviceBrand.HikVision, 0, "Cam_00"); camProGlass.Name = _defaultCameraName; camProGlass.ExposureTime = 0.5f; camProGlass.FPS = 15; camProGlass.Gain = 1.0f; camProGlass.ReconnectInterval = 500; camProGlass.SerialNo = "00D22898505"; camProGlass.StationName = _cfgSysTmp.GlassStationName; _cfgCam.PropertyList.Add(camProGlass); _defaultCameraName = "左片工位"; ProCommon.Communal.CameraProperty camProMembrane1 = new ProCommon.Communal.CameraProperty(ProCommon.Communal.DeviceBrand.HikVision, 1, "Cam_01"); camProMembrane1.Name = _defaultCameraName; camProMembrane1.ExposureTime = 0.35f; camProMembrane1.FPS = 15; camProMembrane1.Gain = 1.0f; camProMembrane1.ReconnectInterval = 500; camProMembrane1.SerialNo = "00D22898327"; camProMembrane1.StationName = _cfgSysTmp.Membrane1StationName; _cfgCam.PropertyList.Add(camProMembrane1); _defaultCameraName = "右片工位"; ProCommon.Communal.CameraProperty camProMembrane2 = new ProCommon.Communal.CameraProperty(ProCommon.Communal.DeviceBrand.HikVision, 2, "Cam_02"); camProMembrane2.Name = _defaultCameraName; camProMembrane2.ExposureTime = 0.35f; camProMembrane2.FPS = 15; camProMembrane2.Gain = 1.0f; camProMembrane2.ReconnectInterval = 500; camProMembrane2.SerialNo = "00D22898383"; camProMembrane2.StationName = _cfgSysTmp.Membrane2StationName; _cfgCam.PropertyList.Add(camProMembrane2); ProCommon.Communal.CfgAPI.Save <ProLaminator.Config.CfgCamera>(_cfgCam, ProLaminator.Config.CfgManager.ConfigDirectory + "\\" + ProLaminator.Config.CfgManager.CAMERA_CONFIG_FILE_NAME); } } } break; #endregion #region 标定方案配置 case ProLaminator.Config.CfgManager.CALIBRATIONSOLUTION_CONFIG_FILE_NAME: { if (_cfgSysTmp != null && _cfgSysTmp.CtrllerCategoryArray != null) { bool isCreate = false; foreach (ProCommon.Communal.DeviceCategory cc in _cfgSysTmp.CtrllerCategoryArray) { if (cc == ProCommon.Communal.DeviceCategory.Camera) { isCreate = true; } } if (isCreate) { ProLaminator.Config.CfgCalibration cfgCal = new ProLaminator.Config.CfgCalibration(); //根据项目需要,创建建默的标定方案配置文件 //新增加标定方案时,按照如下规则:标定方案ID与相机ID一致 if (_cfgCam != null && _cfgCam.PropertyList != null) { int cnt = _cfgCam.PropertyList.Count; for (int i = 0; i < cnt; i++) { ProVision.Communal.CalibrationSolution calSl = new ProVision.Communal.CalibrationSolution(ProVision.Communal.CalibrationType.CALIBRATION_UNIT, _cfgCam.PropertyList[i].Name, _cfgCam.PropertyList[i].ID); calSl.IsActive = true; calSl.IsEffective = true; calSl.RowUnit = 0.0f; calSl.ColUnit = 0.0f; cfgCal.CalSolutionList.Add(calSl); } } ProCommon.Communal.CfgAPI.Save <ProLaminator.Config.CfgCalibration>(cfgCal, ProLaminator.Config.CfgManager.ConfigDirectory + "\\" + ProLaminator.Config.CfgManager.CALIBRATIONSOLUTION_CONFIG_FILE_NAME); } } } break; #endregion #region 控制卡配置 case ProLaminator.Config.CfgManager.BOARD_CONFIG_FILE_NAME: { if (_cfgSysTmp != null && _cfgSysTmp.CtrllerCategoryArray != null) { bool isCreate = false; foreach (ProCommon.Communal.DeviceCategory cc in _cfgSysTmp.CtrllerCategoryArray) { if (cc == ProCommon.Communal.DeviceCategory.Board) { isCreate = true; break; } } if (isCreate) { if (_cfgBoard == null) { _cfgBoard = new ProLaminator.Config.CfgBoard(); } //根据项目需要,创建建默的控制卡配置文件 //新增加控制卡属性时,按照如下规则:控制卡属性列表中最后一个控制卡属性的Number,然后加1 ProCommon.Communal.BoardProperty boardPro = new ProCommon.Communal.BoardProperty(ProCommon.Communal.DeviceBrand.ZMotion, 0, "Brd_0000"); boardPro.IsConnected = false; boardPro.ReconnectInterval = 500; boardPro.EtherNetIP = "192.168.1.30"; boardPro.EtherNetPort = 8089; boardPro.ReconnectInterval = 50; boardPro.Name = "BrdForShller"; boardPro.StationName = _cfgSysTmp.GlassStationName; //创建硬件配置时的板卡轴配置 ProCommon.Communal.AxisList axisList = new ProCommon.Communal.AxisList(); CreateAxesInstance(ref axisList); for (int i = 0; i < axisList.Count; i++) { boardPro.AxisList.Add(axisList[i]); } _cfgBoard.PropertyList.Add(boardPro); ProCommon.Communal.CfgAPI.Save <ProLaminator.Config.CfgBoard>(_cfgBoard, ProLaminator.Config.CfgManager.ConfigDirectory + "\\" + ProLaminator.Config.CfgManager.BOARD_CONFIG_FILE_NAME); } } } break; #endregion #region 通信Socket配置 case ProLaminator.Config.CfgManager.COMSOCKET_CONFIG_FILE_NAME: { if (_cfgSysTmp != null && _cfgSysTmp.CtrllerCategoryArray != null) { bool isCreate = false; foreach (ProCommon.Communal.DeviceCategory cc in _cfgSysTmp.CtrllerCategoryArray) { if (cc == ProCommon.Communal.DeviceCategory.Socket) { isCreate = true; break; } } if (isCreate) { //根据项目需要,创建建默的Socket配置文件 //新增加Socket属性时,按照如下规则:Socekt属性列表中最后一个Socket属性的Number,然后加1 ProLaminator.Config.CfgSocket cfgSkt = new ProLaminator.Config.CfgSocket(); ProCommon.Communal.SocketProperty sktPro = new ProCommon.Communal.SocketProperty(ProCommon.Communal.DeviceBrand.Microsoft, 0, "Skt_0000"); sktPro.IP = "192.168.1.11"; sktPro.Name = "测试网口"; sktPro.StationName = _cfgSysTmp.GlassStationName; cfgSkt.PropertyList.Add(sktPro); ProCommon.Communal.CfgAPI.Save <ProLaminator.Config.CfgSocket>(cfgSkt, ProLaminator.Config.CfgManager.ConfigDirectory + "\\" + ProLaminator.Config.CfgManager.COMSOCKET_CONFIG_FILE_NAME); } } } break; #endregion #region 通信Serial配置 case ProLaminator.Config.CfgManager.COMSERIAL_CONFIG_FILE_NAME: { if (_cfgSysTmp != null && _cfgSysTmp.CtrllerCategoryArray != null) { bool isCreate = false; foreach (ProCommon.Communal.DeviceCategory cc in _cfgSysTmp.CtrllerCategoryArray) { if (cc == ProCommon.Communal.DeviceCategory.SerialPort) { isCreate = true; break; } } if (isCreate) { ProLaminator.Config.CfgSerialPort cfgSrlPt = new ProLaminator.Config.CfgSerialPort(); //根据项目需要,创建建默的SerialPort配置文件 //新增加SerialPort属性时,按照如下规则:SerialPort属性列表中最后一个SerialPort属性的Number,然后加1 ProCommon.Communal.SerialPortProperty srlPro = new ProCommon.Communal.SerialPortProperty(ProCommon.Communal.DeviceBrand.Microsoft, 0, "Srl_0000"); srlPro.ReceiveTimeOut = 500; srlPro.ReconnectInterval = 1000; srlPro.SendTimeOut = 500; srlPro.HandShake = System.IO.Ports.Handshake.None; srlPro.BaudRate = 115200; srlPro.DataBits = 8; srlPro.StopBits = System.IO.Ports.StopBits.One; srlPro.Parity = System.IO.Ports.Parity.Even; srlPro.DtrEnable = true; srlPro.RtsEnable = true; srlPro.ReceivedBytesThreshold = 8; srlPro.NewLine = "/r/n"; srlPro.StationName = _cfgSysTmp.SerialPortNameForPlc; cfgSrlPt.PropertyList.Add(srlPro); ProCommon.Communal.CfgAPI.Save <ProLaminator.Config.CfgSerialPort>(cfgSrlPt, ProLaminator.Config.CfgManager.ConfigDirectory + "\\" + ProLaminator.Config.CfgManager.COMSERIAL_CONFIG_FILE_NAME); } } } break; #endregion #region 通信WebService配置 case ProLaminator.Config.CfgManager.COMWEB_CONFIG_FILE_NAME: { if (_cfgSysTmp != null && _cfgSysTmp.CtrllerCategoryArray != null) { bool isCreate = false; foreach (ProCommon.Communal.DeviceCategory cc in _cfgSysTmp.CtrllerCategoryArray) { if (cc == ProCommon.Communal.DeviceCategory.Web) { isCreate = true; break; } } if (isCreate) { //根据项目需要,创建建默的Web配置文件 //新增加Web属性时,按照如下规则:Web属性列表中最后一个Web属性的Number,然后加1 ProLaminator.Config.CfgWeb cfgWb = new ProLaminator.Config.CfgWeb(); ProCommon.Communal.WebProperty webPro = new ProCommon.Communal.WebProperty(ProCommon.Communal.DeviceBrand.Microsoft, 0, "Web_00"); webPro.Name = "测试网络"; webPro.StationName = _cfgSysTmp.GlassStationName; cfgWb.PropertyList.Add(webPro); ProCommon.Communal.CfgAPI.Save <ProLaminator.Config.CfgWeb>(cfgWb, ProLaminator.Config.CfgManager.ConfigDirectory + "\\" + ProLaminator.Config.CfgManager.COMWEB_CONFIG_FILE_NAME); } } } break; #endregion #region 视觉参数配置 case ProLaminator.Config.CfgManager.VISIONPARA_CONFIG_FILE_NAME: { ProLaminator.Config.CfgVisionPara cfgVsPara = new ProLaminator.Config.CfgVisionPara(); ProCommon.Communal.CfgAPI.Save <ProLaminator.Config.CfgVisionPara>(cfgVsPara, ProLaminator.Config.CfgManager.ConfigDirectory + "\\" + ProLaminator.Config.CfgManager.VISIONPARA_CONFIG_FILE_NAME); } break; #endregion #region 运控参数配置 case ProLaminator.Config.CfgManager.MOTIONPARA_CONFIG_FILE_NAME: { } break; #endregion default: break; } SysChkError = ChkLangIsChinese?("创建文件[" + fileName + "]成功!") : ("Create file[" + fileName + "]successfully!"); if (bkgrdWorker != null) { bkgrdWorker.ReportProgress(SysChkStepNumber, SysChkError); } rt = true; } catch (System.Exception ex) { SysChkError = (ChkLangIsChinese?("创建文件[" + fileName + "]失败!异常描述:\r\n") : ("Create file[" + fileName + "]failed!Description:\r\n")) + ex.Message; if (bkgrdWorker != null) { bkgrdWorker.ReportProgress(SysChkStepNumber, SysChkError); } } } else { //若系统配置文件存在,加载系统配置文件,为其他依赖系统配置的配置做准备 if (fileName == ProLaminator.Config.CfgManager.SYSTEM_CONFIG_FILE_NAME) { _cfgSysTmp = ProCommon.Communal.CfgAPI.Load <ProLaminator.Config.CfgSystem>(ProLaminator.Config.CfgManager.ConfigDirectory + "\\" + ProLaminator.Config.CfgManager.SYSTEM_CONFIG_FILE_NAME); } SysChkError = ChkLangIsChinese ?("找到文件[" + fileName + "]"): ("Find file[" + fileName + "]"); if (bkgrdWorker != null) { bkgrdWorker.ReportProgress(SysChkStepNumber, SysChkError); } rt = true; } return(rt); }
public CameraDriver_Halcon(ProCommon.Communal.CameraProperty camProperty) : base(camProperty) { }
private ThridLibray.IDevice _deviceRef; //当前设备的资源引用 public CameraDriver_DaHua(ProCommon.Communal.CameraProperty cam) : base(cam) { }
public Camera(ProCommon.Communal.CameraProperty camPro) { Property = camPro; API = new ProDriver.API.CameraAPI(Property); CalSolutionList = new ProVision.Communal.CalibrationSolutionList(); }