| | |
| | | var config = GetConfig(); |
| | | PARAM_BAR pARAM_BAR = new PARAM_BAR() |
| | | { |
| | | Height = config.BarHeight, |
| | | Width = config.BarWidth, |
| | | HoleCount = config.BarHoleCount, |
| | | HoleDiameter = config.BarHoleDiameter, |
| | | HoleDistance = config.BarHoleDistance, |
| | | DOF = config.BarDOF, |
| | | }; |
| | | SENSOR_POSITION stPosition = new SENSOR_POSITION |
| | | { |
| | | IsReverse = config.IsReverse, |
| | | IsOpposite = config.IsOpposite, |
| | | fStdDistance = config.fStdDistance, |
| | | fXCenter = config.fXCenter, |
| | | x = config.x, |
| | | y = config.y, |
| | | z = config.z, |
| | | xAngle = config.xAngle, |
| | | yAngle = config.yAngle, |
| | | zAngle = config.zAngle |
| | | }; |
| | | SysCalibration.SetSensorPosition(CaliEntry, Index, stPosition); |
| | | var roi = GetROICaliThkiness(roiTxt, config); |
| | |
| | | var config = GetConfig(); |
| | | PARAM_BAR param_bar = new PARAM_BAR() |
| | | { |
| | | Height = config.BarHeight, |
| | | Width = config.BarWidth, |
| | | HoleCount = config.BarHoleCount, |
| | | HoleDiameter = config.BarHoleDiameter, |
| | | HoleDistance = config.BarHoleDistance, |
| | | DOF = config.BarDOF, |
| | | }; |
| | | SENSOR_POSITION stPosition = new SENSOR_POSITION |
| | | { |
| | | IsReverse = config.IsReverse, |
| | | IsOpposite = config.IsOpposite, |
| | | fStdDistance = config.fStdDistance, |
| | | fXCenter = config.fXCenter, |
| | | x = config.x, |
| | | y = config.y, |
| | | z = config.z, |
| | | xAngle = config.xAngle, |
| | | yAngle = config.yAngle, |
| | | zAngle = config.zAngle |
| | | }; |
| | | SysCalibration.SetSensorPosition(CaliEntry, Index, stPosition); |
| | | var roi = GetROICaliThkiness(roiTxt, config); |
| | |
| | | var config = GetConfig(); |
| | | SENSOR_POSITION sENSOR_POSITION = new SENSOR_POSITION |
| | | { |
| | | IsReverse = config.IsReverse, |
| | | IsOpposite = config.IsOpposite, |
| | | fStdDistance = config.fStdDistance, |
| | | fXCenter = config.fXCenter, |
| | | x = config.x, |
| | | y = config.y, |
| | | z = config.z, |
| | | xAngle = config.xAngle, |
| | | yAngle = config.yAngle, |
| | | zAngle = config.zAngle |
| | | }; |
| | | SysCalibration.SetSensorPosition(CaliEntry, Index, sENSOR_POSITION);//设置传感器位置 |
| | | SysCalibration.SetRate(CaliEntry, Index, config.XAxisResolution / 1000, config.YResolution / 1000); |
| | |
| | | }); |
| | | return r; |
| | | } |
| | | |
| | | public async Task<float[,]> MeasureOutLineThickness() |
| | | { |
| | | var result = await Task.Run(() => |
| | | { |
| | | var config = GetConfig(); |
| | | SetTargetParam(config);//设置目标测量参数 |
| | | float[,] datas = new float[config.nPartitionX, config.nPartitionY]; |
| | | data = new float[config.nPartitionX * config.nPartitionY]; |
| | | int number = 0; |
| | | for (int i = 0; i < config.nPartitionX; i++) |
| | | { |
| | | for (int j = 0; j < config.nPartitionY; j++) |
| | | { |
| | | number++; |
| | | float measuredValue = SysCalibration.MeasureRoiHigh(CaliEntry, Index, number); |
| | | // 保留3位小数 |
| | | datas[i, j] = (float)Math.Round(measuredValue, 3); |
| | | } |
| | | } |
| | | |
| | | //lBCMap = SysCalibration.GetDepthMap(CaliEntry, Index, 4); |
| | | return datas; |
| | | }); |
| | | return result; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //二维图标定 |
| | | public async Task StartLiaghtAndDeepCali(CaliModel caliModel) |
| | | { |
| | | //LBLineDataZA lBLineDataZA = new LBLineDataZA(); |
| | | |
| | | SENSOR_POSITION sENSOR_POSITION = new SENSOR_POSITION |
| | | { |
| | | IsReverse = caliModel.IsReverse, |
| | | IsOpposite = caliModel.IsOpposite, |
| | | fStdDistance = caliModel.fStdDistance, |
| | | fXCenter = caliModel.fXCenter, |
| | | x = caliModel.x, |
| | | y = caliModel.y, |
| | | z = caliModel.z, |
| | | xAngle = caliModel.xAngle, |
| | | yAngle = caliModel.yAngle, |
| | | zAngle = caliModel.zAngle, |
| | | }; |
| | | var config = GetConfig(); |
| | | PARAM_BOARD pARAM_BOARD = new PARAM_BOARD() |
| | | { |
| | | //Height = config.Height, |
| | | //Width = config.Width, |
| | | //HoleDiameter = config.HoleDiameter, |
| | | //HoleDistance = config.HoleDistance, |
| | | //LocationHoleX1 = config.LocationHoleX1, |
| | | //LocationHoleX2 = config.LocationHoleX2, |
| | | //LocationHoleY1 = config.LocationHoleY1, |
| | | //LocationHoleY2 = config.LocationHoleY2, |
| | | }; |
| | | |
| | | |
| | | |
| | | SysCalibration.SetSensorPosition(CaliEntry, Index, sENSOR_POSITION);//设置传感器位置 |
| | | var roi = caliModel.Plane.Split(','); |
| | | |
| | | var roi1 = GetROI(caliModel.Plane, config); |
| | | var roi2 = GetROI(caliModel.Hole1, config); |
| | | var roi3 = GetROI(caliModel.Hole2, config); |
| | | var roi4 = GetROI(caliModel.Hole3, config); |
| | | |
| | | SysCalibration.SetRate(CaliEntry, Index, config.XAxisResolution / 1000, config.YResolution / 1000); |
| | | SysCalibration.SetFlatROI(CaliEntry, Index, roi1, true); |
| | | SysCalibration.SetHoleROI(CaliEntry, Index, 0, roi2, true); |
| | | SysCalibration.SetHoleROI(CaliEntry, Index, 1, roi3, true); |
| | | SysCalibration.SetHoleROI(CaliEntry, Index, 2, roi4, true); |
| | | SysCalibration.SetBoardParameter(CaliEntry, pARAM_BOARD); |
| | | SysCalibration.ClearData(CaliEntry, Index);//清除以前数据 |
| | | await Task.Run(() => |
| | | { |
| | | //修改此段代码 |
| | | //foreach (var item in GetLineDatas()) |
| | | unsafe |
| | | { |
| | | IntPtr pdata = IntPtr.Zero; |
| | | |
| | | //if (sline + eline != 0 && eline > sline) |
| | | //{ |
| | | // for (ulong i = sline; i < eline; i++) |
| | | // { |
| | | // bool useEncoder = false; |
| | | // if (config.LineScanTriggerSource == EnumLineScanTriggerSource.编码器) useEncoder = true; |
| | | // //使用了引用,什么时候完成使用?如果长时间,代码会有内存风险 |
| | | // pdata = GetLineDataByIndex(Entry, i); |
| | | // if (pdata == IntPtr.Zero) |
| | | // break; |
| | | // SysCalibration.AddLineDataArray(CaliEntry, Index, pdata, useEncoder, 1);//最后个参数是什么意思 |
| | | // } |
| | | //} |
| | | //else |
| | | { |
| | | ulong nindex = 0; |
| | | |
| | | while ((pdata = PHM6000Profiler.GetLineDataByIndex(Entry, nindex)) != IntPtr.Zero) |
| | | { |
| | | bool useEncoder = false; |
| | | if (config.LineScanTriggerSource == EnumLineScanTriggerSource.编码器) useEncoder = true; |
| | | //使用了引用,什么时候完成使用?如果长时间,代码会有内存风险 |
| | | SysCalibration.AddLineDataArray(CaliEntry, Index, pdata, useEncoder, 1);//最后个参数是什么意思 |
| | | nindex++; |
| | | } |
| | | } |
| | | } |
| | | SysCalibration.AlignmentMovingFlat(CaliEntry, Index);//下次打开程序时可能会序号错误 |
| | | //SysCalibration.SystemCalibration(caliEntry);//error没有真实的孔,就会卡进程 |
| | | }); |
| | | } |
| | | |
| | | |
| | | //测量厚度 |
| | | public async Task<float> MeasureDistance() |
| | | { |
| | | |
| | | var config = GetConfig(); |
| | | SENSOR_POSITION sENSOR_POSITION = new SENSOR_POSITION |
| | | { |
| | | //IsReverse = CaliModel.IsReverse, |
| | | //IsOpposite = CaliModel.IsOpposite, |
| | | //fStdDistance = CaliModel.fStdDistance, |
| | | //fXCenter = CaliModel.fXCenter, |
| | | //x = CaliModel.x, |
| | | //y = CaliModel.y, |
| | | //z = CaliModel.z, |
| | | //xAngle = CaliModel.xAngle, |
| | | //yAngle = CaliModel.yAngle, |
| | | //zAngle = CaliModel.zAngle, |
| | | }; |
| | | SysCalibration.SetSensorPosition(CaliEntry, Index, sENSOR_POSITION);//设置传感器位置 |
| | | SysCalibration.SetRate(CaliEntry, Index, config.XAxisResolution / 1000, config.YResolution / 1000); |
| | | SysCalibration.ClearData(CaliEntry, Index);//清除以前数据 |
| | | var r = await Task.Run<float>(() => |
| | | { |
| | | //输入新数据 |
| | | unsafe |
| | | { |
| | | IntPtr pdata = IntPtr.Zero; |
| | | |
| | | if (sline + eline != 0 && eline > sline) |
| | | { |
| | | for (ulong i = sline; i < eline; i++) |
| | | { |
| | | bool useEncoder = false; |
| | | if (config.LineScanTriggerSource == EnumLineScanTriggerSource.编码器) useEncoder = true; |
| | | //使用了引用,什么时候完成使用?如果长时间,代码会有内存风险 |
| | | pdata = PHM6000Profiler.GetLineDataByIndex(Entry, i); |
| | | if (pdata == IntPtr.Zero) |
| | | break; |
| | | SysCalibration.AddLineDataArray(CaliEntry, Index, pdata, useEncoder, 1);//最后个参数是什么意思 |
| | | } |
| | | } |
| | | else |
| | | { |
| | | ulong nindex = 0; |
| | | |
| | | while ((pdata = PHM6000Profiler.GetLineDataByIndex(Entry, nindex)) != IntPtr.Zero) |
| | | { |
| | | bool useEncoder = false; |
| | | if (config.LineScanTriggerSource == EnumLineScanTriggerSource.编码器) useEncoder = true; |
| | | //使用了引用,什么时候完成使用?如果长时间,代码会有内存风险 |
| | | SysCalibration.AddLineDataArray(CaliEntry, Index, pdata, useEncoder, 1);//最后个参数是什么意思 |
| | | nindex++; |
| | | } |
| | | } |
| | | } |
| | | SetTargetParam(config);//设置目标测量参数 |
| | | //var result = SysCalibration.MeasureDistance(CaliEntry); |
| | | float measuredValue = SysCalibration.MeasureTargetHigh(CaliEntry, Index); |
| | | var result = (float)Math.Round(measuredValue, 3); |
| | | return result; |
| | | }); |
| | | return r; |
| | | } |
| | | |
| | | public static ulong sline = 0; |
| | | public static ulong eline = 0; |
| | | |
| | | |
| | | public static IntPtr lBCMap = IntPtr.Zero; |
| | | public static float[] data = null; |
| | | |
| | | //测量凹凸 |
| | | public async Task<float[,]> MeasureUneven() |
| | | { |
| | | |
| | | var result = await Task.Run(() => |
| | | { |
| | | var config = GetConfig(); |
| | | //SENSOR_POSITION sENSOR_POSITION = new SENSOR_POSITION |
| | | //{ |
| | | // IsReverse = CaliModel.IsReverse, |
| | | // IsOpposite = CaliModel.IsOpposite, |
| | | // fStdDistance = CaliModel.fStdDistance, |
| | | // fXCenter = CaliModel.fXCenter, |
| | | // x = CaliModel.x, |
| | | // y = CaliModel.y, |
| | | // z = CaliModel.z, |
| | | // xAngle = CaliModel.xAngle, |
| | | // yAngle = CaliModel.yAngle, |
| | | // zAngle = CaliModel.zAngle, |
| | | //}; |
| | | //SysCalibration.SetSensorPosition(CaliEntry, Index, sENSOR_POSITION);//设置传感器位置 |
| | | //SysCalibration.SetRate(CaliEntry, Index, config.XAxisResolution / 1000, config.YResolution / 1000); |
| | | //SysCalibration.ClearData(CaliEntry, Index);//清除以前数据 |
| | | |
| | | ////输入新数据 |
| | | //unsafe |
| | | //{ |
| | | // IntPtr pdata = IntPtr.Zero; |
| | | |
| | | // if (sline + eline != 0 && eline > sline) |
| | | // { |
| | | // for (ulong i = sline; i < eline; i++) |
| | | // { |
| | | // bool useEncoder = false; |
| | | // if (config.LineScanTriggerSource == EnumLineScanTriggerSource.编码器) useEncoder = true; |
| | | // //使用了引用,什么时候完成使用?如果长时间,代码会有内存风险 |
| | | // pdata = GetLineDataByIndex(Entry, i); |
| | | // if (pdata == IntPtr.Zero) |
| | | // break; |
| | | // SysCalibration.AddLineDataArray(CaliEntry, Index, pdata, useEncoder, 1);//最后个参数是什么意思 |
| | | // } |
| | | // } |
| | | // else |
| | | // { |
| | | // ulong nindex = 0; |
| | | |
| | | // while ((pdata = GetLineDataByIndex(Entry, nindex)) != IntPtr.Zero) |
| | | // { |
| | | // bool useEncoder = false; |
| | | // if (config.LineScanTriggerSource == EnumLineScanTriggerSource.编码器) useEncoder = true; |
| | | // //使用了引用,什么时候完成使用?如果长时间,代码会有内存风险 |
| | | // SysCalibration.AddLineDataArray(CaliEntry, Index, pdata, useEncoder, 1);//最后个参数是什么意思 |
| | | // nindex++; |
| | | // } |
| | | // } |
| | | //} |
| | | SetTargetParam(config);//设置目标测量参数 |
| | | float[,] datas = new float[config.nPartitionX, config.nPartitionY]; |
| | | data = new float[config.nPartitionX * config.nPartitionY]; |
| | | int number = 0; |
| | | for (int i = 0; i < config.nPartitionX; i++) |
| | | { |
| | | for (int j = 0; j < config.nPartitionY; j++) |
| | | { |
| | | number++; |
| | | float measuredValue = SysCalibration.MeasureRoiHigh(CaliEntry, Index, number); |
| | | // 保留3位小数 |
| | | datas[i, j] = (float)Math.Round(measuredValue, 3); |
| | | } |
| | | } |
| | | |
| | | //lBCMap = SysCalibration.GetDepthMap(CaliEntry, Index, 4); |
| | | return datas; |
| | | }); |
| | | return result; |
| | | } |
| | | |
| | | |
| | | LB_ROI GetROI(string s, PHM6000SensorConfig config) |