src/Bro.Common.Device/DeviceBase/CameraBase.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.Common.Device/DeviceBase/MotionCardBase.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.Device.GTSCard/GTSCardDriver.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.M071.Process/M071Process.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.Process/Bro.Process.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/Bro.Common.Device/DeviceBase/CameraBase.cs
@@ -912,11 +912,11 @@ autoDisposeTimer.Change(-1, -1); autoDisposeTimer.Dispose(); Image?.Dispose(); Image = null; //Image?.Dispose(); //Image = null; HImage?.Dispose(); HImage = null; //HImage?.Dispose(); //HImage = null; } #endregion } src/Bro.Common.Device/DeviceBase/MotionCardBase.cs
@@ -22,6 +22,7 @@ public event Action<DateTime, IDevice, IWarningSet> OnMonitorAlarm; public event Action<int, string> OnAxisAlarmRaised; public event Action<int, int, int> OnAxisStatusChanged; public event Action<int, int> OnAxisPositionChanged; public void AxisAlarmRaised(int axisIndex, string msg) { @@ -33,8 +34,22 @@ OnAxisStatusChanged?.Invoke(axisIndex, preStatus, curStatus); } public void AxisPositionChanged(int axisIndex, int currentPosition) { OnAxisPositionChanged?.Invoke(axisIndex, currentPosition); } protected override void Start() { AxisStatusList = IConfig.AxisSettings.Where(a => a.IsAxisEnabled).ToList().ConvertAll(a => { AxisMovingStatus axisSts = new AxisMovingStatus(); axisSts.AxisIndex = a.AxisIndex; axisSts.AxisName = a.AxisName; return axisSts; }); Task.Run(() => { Monitor(); src/Bro.Device.GTSCard/GTSCardDriver.cs
@@ -99,6 +99,9 @@ { AllAxisOn(); MonitorPosition(); MonitorAxisStatus(); base.Start(); } @@ -1131,7 +1134,6 @@ return axisMovingStatusesList; } public List<IOItem> GetMonitorValues() { var result = new List<IOItem>(); @@ -1164,6 +1166,79 @@ return result; } SpinWait _positionWait = new SpinWait(); private async void MonitorPosition() { await Task.Run(() => { while (CurrentState != EnumHelper.DeviceState.DSClose && CurrentState != EnumHelper.DeviceState.DSExcept && CurrentState != EnumHelper.DeviceState.DSUninit) { try { if (!IConfig.IsEnableMonitor) return; AxisStatusList.ForEach(a => { int curPosition = (int)GetPrfPosition(a.AxisIndex); if (a.CurPosition != curPosition) { a.CurPosition = curPosition; AxisPositionChanged(a.AxisIndex, curPosition); } }); _positionWait.SpinOnce(); } catch (Exception ex) { if (CurrentState == DeviceState.DSOpen) { LogAsync(DateTime.Now, $"{this.Name}监听轴信息异常", ex.GetExceptionMessage()); } } } }); } SpinWait _statusWait = new SpinWait(); private async void MonitorAxisStatus() { await Task.Run(() => { while (CurrentState != EnumHelper.DeviceState.DSClose && CurrentState != EnumHelper.DeviceState.DSExcept && CurrentState != EnumHelper.DeviceState.DSUninit) { try { if (!IConfig.IsEnableMonitor) return; AxisStatusList.ForEach(a => { int curStatus = GetAxisStatus(a.AxisIndex); if (a.AxisStatus != curStatus) { int temp = a.AxisStatus; a.AxisStatus = curStatus; AxisStatusChanged(a.AxisIndex, temp, curStatus); } }); _statusWait.SpinOnce(); } catch (Exception ex) { if (CurrentState == DeviceState.DSOpen) { LogAsync(DateTime.Now, $"{this.Name}监听轴信息异常", ex.GetExceptionMessage()); } } } }); } public async override void Monitor() { await Task.Run(() => @@ -1176,9 +1251,9 @@ return; var newValues = GetMonitorValues(); var newAxisMovingStatus = GetAxisMovingStatus(); //var newAxisMovingStatus = GetAxisMovingStatus(); if (newValues == null || newValues.Count == 0 || newAxisMovingStatus == null || newAxisMovingStatus.Count == 0) if (newValues == null || newValues.Count == 0 ) continue; //Stopwatch sw = new Stopwatch(); @@ -1192,14 +1267,14 @@ MonitorCheckAndInvoke(tempNew, tempOld); } if (AxisStatusList.Count == newAxisMovingStatus.Count) { var tempNew = new List<AxisMovingStatus>(newAxisMovingStatus);//clone var tempOld = new List<AxisMovingStatus>(AxisStatusList); AxisStatusCheck(tempNew, tempOld); } //if (AxisStatusList.Count == newAxisMovingStatus.Count) //{ // var tempNew = new List<AxisMovingStatus>(newAxisMovingStatus);//clone // var tempOld = new List<AxisMovingStatus>(AxisStatusList); // AxisStatusCheck(tempNew, tempOld); //} AxisStatusList = new List<AxisMovingStatus>(newAxisMovingStatus); //AxisStatusList = new List<AxisMovingStatus>(newAxisMovingStatus); MonitorValues = new List<IOItem>(newValues); //sw.Stop(); src/Bro.M071.Process/M071Process.cs
@@ -1085,6 +1085,13 @@ //string fileName = Path.Combine(Config.ImageSaveFolder, "BeforeRun", $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.tif"); //imgSet.HImage.WriteImage("tiff", 0, fileName); if (imgSet.HImage == null) { LogAsync(DateTime.Now, $"{snapshotName}图片为空对象", ""); keyBindCollection.ForEach(k => k.FillKeyValues(null)); return; } _halconToolDict[toolKey].InputImageDic["INPUT_Image"] = imgSet.HImage; if (!_halconToolDict[toolKey].RunProcedure(out string error)) { @@ -1187,6 +1194,7 @@ } //); imgSet.HImage.Dispose(); images.Dispose(); //if (count.I != 1) //{ src/Bro.Process/Bro.Process.csproj
@@ -128,7 +128,9 @@ </ItemGroup> <ItemGroup> <None Include="packages.config" /> <None Include="Setting.json" /> <None Include="Setting.json"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> </ItemGroup> <ItemGroup> <EmbeddedResource Include="Forms\Calibration\FrmCalibration_9P.resx">