private void BackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { _syncContext.Post(delegate { UpdateMsg("Process Completed"); }, null); _system.Stop(); if (_sensor.State == GoState.Ready) { _syncContext.Post(delegate { UpdateMsg("Please Stop System first"); }, null); } }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //생성 : //수정 : //목적 : 초기화 //설명 : ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public override bool HLInitialize(CDeviceCameraAbstract.CInitializeParameter objInitializeParameter) { bool bReturn = false; do { // 초기화 파라매터 복사 m_objInitializeParameter = ( CInitializeParameter )objInitializeParameter.Clone(); //m_objCamera = new Lmi3d.GoSdk.GoSensor(); KApiLib.Construct(); GoSdkLib.Construct(); m_objCameraSystem = new GoSystem(); iGCCollectCount = 0; // 카메라 접속 SetCameraConnect(); m_objCameraSystem.Stop(); // m_objCameraSystem.EnableData( true ); // m_objCameraSystem.SetDataHandler( ReceiveData ); // m_objCamera.Setup.GetSurfaceGeneration().GenerationType = GoSurfaceGenerationType.FixedLength; // m_objCamera.Setup.GetSurfaceGeneration().FixedLengthLength = 150; // m_objCamera.Setup.GetSurfaceGeneration().FixedLengthStartTrigger = GoSurfaceGenerationStartTrigger.Sequential; // 접속 스레드 시작 m_ThreadConnect = new Thread(ThreadConnect); m_ThreadConnect.Start(this); bReturn = true; } while(false); return(bReturn); }
private void StopButton_Click(object sender, RoutedEventArgs e) { _system.Stop(); string sts = _sensor.State.ToString(); updateMsg("sensor current state:" + sts); updateMsg("System stopped"); }
static int Main(string[] args) { try { KApiLib.Construct(); GoSdkLib.Construct(); GoSystem system = new GoSystem(); GoSensor sensor; GoDataSet dataSet = new GoDataSet(); KIpAddress ipAddress = KIpAddress.Parse(Constants.SENSOR_IP); sensor = system.FindSensorByIpAddress(ipAddress); sensor.Connect(); system.EnableData(true); GoSetup setup = sensor.Setup; setup.AlignmentType = GoAlignmentType.Stationary; setup.AlignmentStationaryTarget = GoAlignmentTarget.None; sensor.Align(); Console.WriteLine("Waiting for alignment calibration data to be collected..."); dataSet = system.ReceiveData(30000000); for (UInt32 i = 0; i < dataSet.Count; i++) { GoAlignMsg dataItem = (GoAlignMsg)dataSet.Get(i); if (dataItem.MessageType == GoDataMessageType.Alignment) { if (dataItem.Status == KStatus.Ok) { Console.WriteLine("Alignment calibration successful!"); } else { Console.WriteLine("Alignment calibration failed."); } } } system.Stop(); } catch (KException ex) { if (ex.Status == KStatus.ErrorTimeout) { Console.WriteLine("Failed to collect data for calibration within timeout limit..."); } else if (ex.Status != KStatus.Ok) { Console.WriteLine("Error:{0}", ex.Status); } } // wait for Enter key Console.WriteLine("\nPress ENTER to continue"); do { System.Threading.Thread.Sleep(100); } while (Console.Read() != (int)ConsoleKey.Enter); return(1); }
/// <summary> /// 停止监听 /// </summary> public void StopListen() { try { system.Stop(); } catch (Exception ex) { Console.WriteLine("StopListen Error:" + ex.Message); } }
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { // 释放资源用 accessor.Dispose(); mmf.Dispose(); // 退出时停止Gocator if (if_Gocator_init) { GC_system.Stop(); } }
public bool Disconnect() { if (FrameworkExtenion.IsSimulate) { return(true); } if (sensor == null) { return(false); } if (EnableAccelerator) { //accelerator.Detach(sensor); //accelerator.Stop(); //accelerator.Dispose(); } try { //sensor.Disconnect(); //sensor.Dispose(); //sensor = null; system.Stop(); system.EnableData(false); system.Dispose(); system = null; } catch (Exception) { return(false); } return(true); }
public void DisconnectSensor() //disconnectSensor and ReadDataStop { try { if (sensor_main.IsConnected()) { sensor_main.Disconnect(); sensor_main.Dispose(); } system_main.Stop(); } catch (Exception ex) { } }
/// <summary> /// initial api constructor and open data channel /// </summary> /// <returns></returns> public bool InitialDevice() { try { KApiLib.Construct(); GoSdkLib.Construct(); } catch (KException kEx) { Trace.WriteLine(kEx.ToString()); } _system = new GoSystem(); KIpAddress kIpAddress = KIpAddress.Parse(IPAddress); Trace.WriteLine($"Sonsor IP {IPAddress}"); _sensor = _system.FindSensorByIpAddress(kIpAddress); if (_sensor.State == GoState.Ready) { _sensor.Connect(); Trace.WriteLine("Sonsor Connected"); } else { return(false); } _system.EnableData(true); Trace.WriteLine("Data channel open"); _system.SetDataHandler(onData); if (_sensor.State == GoState.Running) { _system.Stop(); _system.Start(); } else { _system.Start(); Trace.WriteLine("Sysem Start"); } return(true); }
public bool Connect() { if (FrameworkExtenion.IsSimulate) { return(true); } try { system = new GoSystem(); system.Stop(); if (EnableAccelerator) { KIpAddress ipAddress = KIpAddress.Parse(AcceleratorIp); sensor = system.FindSensorByIpAddress(ipAddress); //accelerator = new GoAccelerator(); //accelerator.Start(); //accelerator.Attach(sensor); } else { KIpAddress ipAddress = KIpAddress.Parse(IpStr); sensor = system.FindSensorByIpAddress(ipAddress); } sensor.Connect(); } catch (Exception ex) { LastError = "ConnectError:" + ex.Message; return(false); } return(true); }
static int Main(string[] args) { try { KApiLib.Construct(); GoSdkLib.Construct(); GoSystem system = new GoSystem(); GoSensor sensor; KIpAddress ipAddress = KIpAddress.Parse(Constants.SENSOR_IP); sensor = system.FindSensorByIpAddress(ipAddress); sensor.Connect(); system.EnableData(true); system.SetDataHandler(onData); system.Start(); // wait for Enter key Console.WriteLine("\nPress ENTER to stop"); do { //System.Threading.Thread.Sleep(100); } while (Console.Read() != (int)ConsoleKey.Enter); system.Stop(); } catch (KException ex) { Console.WriteLine("Error: {0}", ex.Status); } // wait for Enter key Console.WriteLine("\nPress ENTER to continue"); do { System.Threading.Thread.Sleep(100); } while (Console.Read() != (int)ConsoleKey.Enter); return(1); }
public void StopGetPoint() { system.Stop(); }
static int Main(string[] args) { try { KApiLib.Construct(); GoSdkLib.Construct(); GoSystem system = new GoSystem(); GoSensor sensor; KIpAddress ipAddress = KIpAddress.Parse(Constants.SENSOR_IP); GoDataSet dataSet = new GoDataSet(); sensor = system.FindSensorByIpAddress(ipAddress); sensor.Connect(); system.EnableData(true); system.Start(); // refer to SetupMeasurement.cs for setting up of the measurement tools dataSet = system.ReceiveData(30000000); for (UInt32 i = 0; i < dataSet.Count; i++) { GoDataMsg dataObj = (GoDataMsg)dataSet.Get(i); switch (dataObj.MessageType) { case GoDataMessageType.Stamp: { GoStampMsg stampMsg = (GoStampMsg)dataObj; for (UInt32 j = 0; j < stampMsg.Count; j++) { GoStamp stamp = stampMsg.Get(j); Console.WriteLine("Frame Index = {0}", stamp.FrameIndex); Console.WriteLine("Time Stamp = {0}", stamp.Timestamp); Console.WriteLine("Encoder Value = {0}", stamp.Encoder); } } break; case GoDataMessageType.Measurement: { GoMeasurementMsg measurementMsg = (GoMeasurementMsg)dataObj; for (UInt32 k = 0; k < measurementMsg.Count; ++k) { GoMeasurementData measurementData = measurementMsg.Get(k); Console.WriteLine("ID: {0}", measurementMsg.Id); Console.WriteLine("Value: {0}", measurementData.Value); Console.WriteLine("Decision: {0}", measurementData.Decision); } } break; } } system.Stop(); } catch (KException ex) { Console.WriteLine("Error: {0}", ex.Status); } // wait for ESC key Console.WriteLine("\nPress ENTER to continue"); do { System.Threading.Thread.Sleep(100); } while (Console.Read() != (int)ConsoleKey.Enter); return(1); }
public static void takephoto(string name2) { try { KApiLib.Construct(); GoSdkLib.Construct(); GoSystem system = new GoSystem(); GoSensor sensor; KIpAddress ipAddress = KIpAddress.Parse(Constants.SENSOR_IP); GoDataSet dataSet = new GoDataSet(); sensor = system.FindSensorByIpAddress(ipAddress); sensor.Connect(); GoSetup setup = sensor.Setup; setup.ScanMode = GoMode.Surface; system.EnableData(true); system.Start(); Console.WriteLine("Waiting for Whole Part Data..."); dataSet = system.ReceiveData(30000000); //DataContext context = new DataContext(); for (UInt32 i = 0; i < dataSet.Count; i++) { GoDataMsg dataObj = (GoDataMsg)dataSet.Get(i); switch (dataObj.MessageType) { case GoDataMessageType.Stamp: { GoStampMsg stampMsg = (GoStampMsg)dataObj; for (UInt32 j = 0; j < stampMsg.Count; j++) { GoStamp stamp = stampMsg.Get(j); Console.WriteLine("Frame Index = {0}", stamp.FrameIndex); Console.WriteLine("Time Stamp = {0}", stamp.Timestamp); Console.WriteLine("Encoder Value = {0}", stamp.Encoder); } } break; case GoDataMessageType.UniformSurface: { GoUniformSurfaceMsg goSurfaceMsg = (GoUniformSurfaceMsg)dataObj; // 定义变量gosurfacemsg,类型gosurfacemsg long length = goSurfaceMsg.Length; //surface长度 long width = goSurfaceMsg.Width; //surface宽度 long bufferSize = width * length; double XResolution = goSurfaceMsg.XResolution / 1000000.0; //surface 数据X方向分辨率为nm,转为mm double YResolution = goSurfaceMsg.YResolution / 1000000.0; //surface 数据Y方向分辨率为nm,转为mm double ZResolution = goSurfaceMsg.ZResolution / 1000000.0; //surface 数据Z方向分辨率为nm,转为mm double XOffset = goSurfaceMsg.XOffset / 1000.0; //接收到surface数据X方向补偿单位um,转mm double YOffset = goSurfaceMsg.YOffset / 1000.0; //接收到surface数据Y方向补偿单位um,转mm double ZOffset = goSurfaceMsg.ZOffset / 1000.0; //接收到surface数据Z方向补偿单位um,转mm IntPtr bufferPointer = goSurfaceMsg.Data; int rowIdx, colIdx; SurfacePoints[] surfacePointCloud = new SurfacePoints[bufferSize]; short[] ranges = new short[bufferSize]; Marshal.Copy(bufferPointer, ranges, 0, ranges.Length); FileStream fs; string path = string.Format("D:\\Grasp\\Grasp\\EyeToHandData\\{0}.txt", name2); //if (!File.Exists(path)) //{ fs = new FileStream(path, FileMode.Create, FileAccess.Write); //else //{ // fs = new FileStream(path, FileMode.Append, FileAccess.Write); //} StreamWriter sr = new StreamWriter(fs); for (rowIdx = 0; rowIdx < length; rowIdx++) //row is in Y direction { for (colIdx = 0; colIdx < width; colIdx++) //col is in X direction { surfacePointCloud[rowIdx * width + colIdx].x = colIdx * XResolution + XOffset; //客户需要的点云数据X值 surfacePointCloud[rowIdx * width + colIdx].y = rowIdx * YResolution + YOffset; //客户需要的点云数据Y值 surfacePointCloud[rowIdx * width + colIdx].z = ranges[rowIdx * width + colIdx] * ZResolution + ZOffset; //客户需要的点云数据Z值 sr.WriteLine(surfacePointCloud[rowIdx * width + colIdx].x + "," + surfacePointCloud[rowIdx * width + colIdx].y + "," + surfacePointCloud[rowIdx * width + colIdx].z); //开始写入值 } } sr.Write("end"); //ushort[] ZValues = new ushort[ranges.Length]; //for (int k = 0; k < ranges.Length; k++) //{ // ZValues[k] = (ushort)(ranges[k] - short.MinValue); //} //for (UInt32 k = 0; k < bufferSize; k++) //{ // sr.WriteLine(surfacePointCloud[k].x.ToString() + "," + surfacePointCloud[k].y.ToString() + "," + surfacePointCloud[k].z.ToString());//开始写入值 //} sr.Close(); fs.Close(); } break; case GoDataMessageType.SurfaceIntensity: { GoSurfaceIntensityMsg surfaceMsg = (GoSurfaceIntensityMsg)dataObj; long width = surfaceMsg.Width; long height = surfaceMsg.Length; long bufferSize = width * height; IntPtr bufferPointeri = surfaceMsg.Data; Console.WriteLine("Whole Part Intensity Image received:"); Console.WriteLine(" Buffer width: {0}", width); Console.WriteLine(" Buffer height: {0}", height); byte[] ranges = new byte[bufferSize]; Marshal.Copy(bufferPointeri, ranges, 0, ranges.Length); } break; } } system.Stop(); } catch (KException ex) { Console.WriteLine("Error: {0}", ex.Status); } // wait for ESC key //Console.WriteLine("\nPress ENTER to continue"); //do //{ // System.Threading.Thread.Sleep(100); //} while (Console.Read() != (int)ConsoleKey.Enter); }
public void ReceiveData(KObject data) { // 데이터 들어오면 카메라 시스템 정지 var pDocument = DeepSight.CDocument.GetDocument; //if( CDefine.enumTrigger.TRIGGER_OFF == pDocument.GetTrigger( ( int )CDefine.enumCamera.CAMERA_1 ) ) return; m_objCameraSystem.Stop(); CImageData3D objImageData3D = new CImageData3D(); // 일단 해상도를 임의로 지정하자 GoDataSet dataSet = ( GoDataSet )data; pDocument.SetUpdateLog(CDefine.enumLogType.LOG_PROCESS, "GOCATOR RECEIVE DATA : " + dataSet.Count.ToString()); for (UInt32 i = 0; i < dataSet.Count; i++) { GoDataMsg dataObj = ( GoDataMsg )dataSet.Get(i); switch (dataObj.MessageType) { case GoDataMessageType.Stamp: { GoStampMsg stampMsg = ( GoStampMsg )dataObj; for (UInt32 j = 0; j < stampMsg.Count; j++) { GoStamp stamp = stampMsg.Get(j); Console.WriteLine("Frame Index = {0}", stamp.FrameIndex); Console.WriteLine("Time Stamp = {0}", stamp.Timestamp); Console.WriteLine("Encoder Value = {0}", stamp.Encoder); } } break; case GoDataMessageType.UniformSurface: { #pragma warning disable CS0618 // 형식 또는 멤버는 사용되지 않습니다. GoSurfaceMsg surfaceMsg = ( GoSurfaceMsg )dataObj; #pragma warning restore CS0618 // 형식 또는 멤버는 사용되지 않습니다. objImageData3D.iOffsetZ = surfaceMsg.ZOffset; objImageData3D.iResolutionX = surfaceMsg.XResolution; // * DEF_3D_DATA_MULTIPLE; objImageData3D.iResolutionY = surfaceMsg.YResolution; objImageData3D.iResolutionZ = surfaceMsg.ZResolution; int lWidth = objImageData3D.iWidth = ( int )surfaceMsg.Width; int lHeight = objImageData3D.iHeight = ( int )surfaceMsg.Length; int bufferSize = lWidth * lHeight; IntPtr bufferPointer = surfaceMsg.Data; Console.WriteLine("Whole Part Height Map received:"); Console.WriteLine(" Buffer width: {0}", lWidth); Console.WriteLine(" Buffer Height: {0}", lHeight); objImageData3D.objHeightDataOrigin = new short[bufferSize]; Marshal.Copy(bufferPointer, objImageData3D.objHeightDataOrigin, 0, objImageData3D.objHeightDataOrigin.Length); // SetDataToCsv("d:\\test.csv", objImageData3D.objHeightDataOrigin); } break; case GoDataMessageType.SurfaceIntensity: { GoSurfaceIntensityMsg surfaceMsg = ( GoSurfaceIntensityMsg )dataObj; long width = surfaceMsg.Width; long length = surfaceMsg.Length; long bufferSize = width * length; IntPtr bufferPointeri = surfaceMsg.Data; Console.WriteLine("Whole Part Intensity Image received:"); Console.WriteLine(" Buffer width: {0}", width); Console.WriteLine(" Buffer length: {0}", length); objImageData3D.objIntensityDataOrigin = new byte[bufferSize]; Marshal.Copy(bufferPointeri, objImageData3D.objIntensityDataOrigin, 0, objImageData3D.objIntensityDataOrigin.Length); // objImageData3D.objBitmapIntensity = CopyDataToBitmap( ( int )length, ( int )width, objImageData3D.objIntensityDataOrigin ); // objImageData3D.objBitmapIntensity.Save( "d:\\Intensity.bmp" ); } break; default: break; } } if (null != m_objCallback) { CImageData objData = new CImageData(); objData.bGrabComplete = true; objData.bitmapImage = objImageData3D.objBitmapIntensity; objData.objCameraData3D = objImageData3D; m_objCallback(objData); } iGCCollectCount++; if (1 < iGCCollectCount) { GC.Collect(); iGCCollectCount = 0; } }
static int Main(string[] args) { try { KApiLib.Construct(); GoSdkLib.Construct(); GoSystem system = new GoSystem(); GoSensor sensor; KIpAddress ipAddress = KIpAddress.Parse(Constants.SENSOR_IP); GoDataSet dataSet = new GoDataSet(); sensor = system.FindSensorByIpAddress(ipAddress); sensor.Connect(); system.EnableData(true); system.Start(); dataSet = system.ReceiveData(30000000); DataContext context = new DataContext(); for (UInt32 i = 0; i < dataSet.Count; i++) { GoDataMsg dataObj = (GoDataMsg)dataSet.Get(i); switch (dataObj.MessageType) { case GoDataMessageType.Stamp: { GoStampMsg stampMsg = (GoStampMsg)dataObj; for (UInt32 j = 0; j < stampMsg.Count; j++) { GoStamp stamp = stampMsg.Get(j); Console.WriteLine("Frame Index = {0}", stamp.FrameIndex); Console.WriteLine("Time Stamp = {0}", stamp.Timestamp); Console.WriteLine("Encoder Value = {0}", stamp.Encoder); } } break; case GoDataMessageType.UniformProfile: { GoResampledProfileMsg profileMsg = (GoResampledProfileMsg)dataObj; Console.WriteLine(" Resampled Profile Message batch count: {0}", profileMsg.Count); for (UInt32 k = 0; k < profileMsg.Count; ++k) { int validPointCount = 0; int profilePointCount = profileMsg.Width; Console.WriteLine(" Item[{0}]: Profile data ({1} points)", k, profileMsg.Width); context.xResolution = (double)profileMsg.XResolution / 1000000; context.zResolution = (double)profileMsg.ZResolution / 1000000; context.xOffset = (double)profileMsg.XOffset / 1000; context.zOffset = (double)profileMsg.ZOffset / 1000; short[] points = new short[profilePointCount]; ProfilePoint[] profileBuffer = new ProfilePoint[profilePointCount]; IntPtr pointsPtr = profileMsg.Data; Marshal.Copy(pointsPtr, points, 0, points.Length); for (UInt32 arrayIndex = 0; arrayIndex < profilePointCount; ++arrayIndex) { if (points[arrayIndex] != -32768) { profileBuffer[arrayIndex].x = context.xOffset + context.xResolution * arrayIndex; profileBuffer[arrayIndex].z = context.zOffset + context.zResolution * points[arrayIndex]; validPointCount++; } else { profileBuffer[arrayIndex].x = context.xOffset + context.xResolution * arrayIndex; profileBuffer[arrayIndex].z = -32768; } } Console.WriteLine("Received {0} Range Points", profilePointCount); Console.WriteLine("Valid Points {0}", validPointCount); } } break; case GoDataMessageType.ProfilePointCloud: { GoProfileMsg profileMsg = (GoProfileMsg)dataObj; Console.WriteLine(" Profile Message batch count: {0}", profileMsg.Count); for (UInt32 k = 0; k < profileMsg.Count; ++k) { int validPointCount = 0; long profilePointCount = profileMsg.Width; Console.WriteLine(" Item[{0}]: Profile data ({1} points)", i, profileMsg.Width); context.xResolution = profileMsg.XResolution / 1000000; context.zResolution = profileMsg.ZResolution / 1000000; context.xOffset = profileMsg.XOffset / 1000; context.zOffset = profileMsg.ZOffset / 1000; GoPoints[] points = new GoPoints[profilePointCount]; ProfilePoint[] profileBuffer = new ProfilePoint[profilePointCount]; int structSize = Marshal.SizeOf(typeof(GoPoints)); IntPtr pointsPtr = profileMsg.Data; for (UInt32 array = 0; array < profilePointCount; ++array) { IntPtr incPtr = new IntPtr(pointsPtr.ToInt64() + array * structSize); points[array] = (GoPoints)Marshal.PtrToStructure(incPtr, typeof(GoPoints)); } for (UInt32 arrayIndex = 0; arrayIndex < profilePointCount; ++arrayIndex) { if (points[arrayIndex].x != -32768) { profileBuffer[arrayIndex].x = context.xOffset + context.xResolution * points[arrayIndex].x; profileBuffer[arrayIndex].z = context.xOffset + context.xResolution * points[arrayIndex].y; validPointCount++; } else { profileBuffer[arrayIndex].x = -32768; profileBuffer[arrayIndex].z = -32768; } } Console.WriteLine("Received {0} Range Points", profilePointCount); Console.WriteLine("Valid Points {0}", validPointCount); } } break; case GoDataMessageType.ProfileIntensity: { GoProfileIntensityMsg profileMsg = (GoProfileIntensityMsg)dataObj; Console.WriteLine(" Profile Intensity Message batch count: {0}", profileMsg.Count); for (UInt32 k = 0; k < profileMsg.Count; ++k) { byte[] intensity = new byte[profileMsg.Width]; IntPtr intensityPtr = profileMsg.Data; Marshal.Copy(intensityPtr, intensity, 0, intensity.Length); } } break; } } system.Stop(); } catch (KException ex) { Console.WriteLine("Error: {0}", ex.Status); } // wait for ESC key Console.WriteLine("\nPress ENTER to continue"); do { System.Threading.Thread.Sleep(100); } while (Console.Read() != (int)ConsoleKey.Enter); return(1); }