Exemplo n.º 1
0
        /// <summary>
        /// draw cicle with dots
        /// </summary>
        /// <param name="laser"></param>
        /// <param name="rtc"></param>
        /// <param name="radius"></param>
        /// <param name="durationMsec"></param>
        private static bool DrawCircleWithDots(ILaser laser, IRtc rtc, float radius, float durationMsec)
        {
            if (rtc.CtlGetStatus(RtcStatus.Busy))
            {
                return(false);
            }
            Console.WriteLine("WARNING !!! LASER IS BUSY ... DrawCircleWithDots");
            timer = Stopwatch.StartNew();
            bool success = true;

            success &= rtc.ListBegin(laser);
            for (float angle = 0; angle < 360; angle += 1)
            {
                double x = radius * Math.Sin(angle * Math.PI / 180.0);
                double y = radius * Math.Cos(angle * Math.PI / 180.0);
                success &= rtc.ListJump(new Vector2((float)x, (float)y));
                //laser signal on during specific time (지정된 짧은 시간동안 레이저 출사)
                success &= rtc.ListLaserOn(durationMsec);
                if (!success)
                {
                    break;
                }
            }
            success &= rtc.ListEnd();
            if (success)
            {
                success &= rtc.ListExecute(true);
            }
            Console.WriteLine($"Processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s");
            return(success);
        }
Exemplo n.º 2
0
        private static bool DrawCircle(ILaser laser, IRtc rtc)
        {
            bool success     = true;
            var  rtcDualHead = rtc as IRtcDualHead;

            //리스트 시작
            success &= rtc.ListBegin(laser);
            //리스트 명령으로 오프셋 및 회전 처리 방법
            //rtcDualHead.ListHeadOffset(ScannerHead.Primary, new Vector2(5, 0), 0);
            //rtcDualHead.ListHeadOffset(ScannerHead.Secondary, new Vector2(-5, 0), 0);
            for (int i = 0; i < 10; i++)
            {
                //직선을 그립니다.
                success &= rtc.ListJump(new Vector2(0, 0));
                success &= rtc.ListMark(new Vector2(10, 0));

                success &= rtc.ListJump(new Vector2((float)10, 0));
                success &= rtc.ListArc(new Vector2(0, 0), 360.0f);
                if (!success)
                {
                    break;
                }
            }
            //리스트 명령으로 오프셋 및 회전 처리 방법
            //rtcDualHead.ListHeadOffset(ScannerHead.Primary, Vector2.Zero, 0);
            //rtcDualHead.ListHeadOffset(ScannerHead.Secondary, Vector2.Zero, 0);
            //리스트 종료
            if (success)
            {
                success &= rtc.ListEnd();
                //나머지 데이타 가공 완료 대기
                success &= rtc.ListExecute(true);
            }
            return(success);
        }
Exemplo n.º 3
0
 /// <summary>
 /// 지정된 반지름을 갖는 원 그리기
 /// </summary>
 /// <param name="rtc"></param>
 /// <param name="radius"></param>
 private static void DrawCircle(ILaser laser, IRtc rtc, double radius)
 {
     rtc.ListBegin(laser);
     rtc.ListJump(new Vector2((float)radius, 0));
     rtc.ListArc(new Vector2(0, 0), 360.0);
     rtc.ListEnd();
 }
Exemplo n.º 4
0
        /// <summary>
        /// 레이어 안에 있는 모든 객체들을 마킹하기 (3x3 의 나선 객체가 마킹됨)
        /// </summary>
        /// <param name="rtc"></param>
        /// <param name="doc"></param>
        private static bool DrawForFieldCorrection(ILaser laser, IRtc rtc, IDocument doc)
        {
            bool success = true;

            rtc.ListBegin(laser);
            ///레이어 순회
            foreach (var layer in doc.Layers)
            {
                /// 해당 레이어의 개체들을 순회
                foreach (var entity in layer)
                {
                    var markerable = entity as IMarkerable;
                    ///해당 개체가 레이저 가공이 가능한지를 판별
                    if (null != markerable)
                    {
                        success &= markerable.Mark(rtc);    ///개체 가공
                    }
                    if (!success)
                    {
                        break;
                    }
                }
                if (!success)
                {
                    break;
                }
            }
            if (success)
            {
                rtc.ListEnd();
            }
            return(success);
        }
Exemplo n.º 5
0
        private static void DrawCircleWithPosition(ILaser laser, IRtc rtc)
        {
            var motf = rtc as IRtcMOTF;
            /// RTC 15핀 커넥터에 있는 /START , /STOP 입력핀을 시작, 중지 트리거로 사용합니다.
            ///turn on external /start
            ///turn on reset encoder when external start
            var extCtrl = new RtcExternalControlMode();

            extCtrl.Add(RtcExternalControlMode.Signal.EncoderReset);
            extCtrl.Add(RtcExternalControlMode.Signal.ExternalStart);
            extCtrl.Add(RtcExternalControlMode.Signal.ExternalStartAgain);
            motf.CtlExternalControl(extCtrl);


            rtc.ListBegin(laser);
            ///직선을 그립니다. (엔코더 입력과 무관합니다)
            rtc.ListJump(new Vector2(0, 0));
            rtc.ListMark(new Vector2(10, 0));
            /// ListMOTFBegin 부터 ListMOTFEnd 사이의 모든 list 명령어는 엔코더증감값이 적용됩니다
            motf.ListMOTFBegin();
            /// 엔코더 X 값이  10mm 가 넘을때(Over) 까지 리스트 명령을 대기
            motf.ListMOTFWait(RtcEncoder.EncX, 10, EncoderWaitCondition.Over);//wait until encoder x position over 10.0mm
            ///엔코더 X 값이 위 조건을 만족한이후 원 을 그린다
            rtc.ListJump(new Vector2((float)10, 0));
            rtc.ListArc(new Vector2(0, 0), 360.0f);
            /// MOTF 중지및 0,0 위치(스캐너 중심 위치)로 jump 실시
            motf.ListMOTFEnd(Vector2.Zero);

            rtc.ListEnd();
            ///외부 트리거(/START)에 의해 시작되므로 execute 호출은 하지 않는다
            ///rtc.ListExecute(); /// its not need to call because its started by external trigger
        }
Exemplo n.º 6
0
    private void OnTriggerEnter2D(Collider2D col)
    {
        ILaser laser = col.gameObject.GetComponent <ILaser>();

        if (laser == null)
        {
            return;
        }

        float degree = 0;

        switch (laser.GetCurrentDir())
        {
        case Direction.UP:
            degree = 180;
            break;

        case Direction.Right:
            degree = 90;
            break;

        case Direction.Down:
            degree = 0;
            break;

        case Direction.Left:
            degree = -90;
            break;
        }

        EffectManager.Instance.CallEffect(col.transform.position, degree, 1);

        laser.OnCollisionWall(ObjectType.Wall);
    }
Exemplo n.º 7
0
        /// <summary>
        /// 지정된 문서(Document)를 지정된 RTC 제어기로 가공하기
        /// </summary>
        /// <param name="laser"></param>
        /// <param name="rtc"></param>
        /// <param name="doc"></param>
        static void DoBegin(ILaser laser, IRtc rtc, IDocument doc)
        {
            var  timer   = Stopwatch.StartNew();
            bool success = true;

            rtc.ListBegin(laser);
            ///레이어를 순회
            foreach (var layer in doc.Layers)
            {
                ///레이어 내의 개체(Entity)들을 순회
                foreach (var entity in layer)
                {
                    var markerable = entity as IMarkerable;
                    ///레이저 가공이 가능한 개체(markerable)인지를 판단
                    if (null != markerable)
                    {
                        success &= markerable.Mark(rtc);    /// 해당 개체(Entity) 가공
                    }
                    if (!success)
                    {
                        break;
                    }
                }
                if (!success)
                {
                    break;
                }
            }
            if (success)
            {
                rtc.ListEnd();
                rtc.ListExecute(true);
            }
            Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s");
        }
Exemplo n.º 8
0
        /// <summary>
        /// 레이어 안에 있는 모든 객체들을 마킹하기
        /// </summary>
        /// <param name="laser"></param>
        /// <param name="rtc"></param>
        /// <param name="doc"></param>
        private static bool Draw(ILaser laser, IRtc rtc, IDocument doc)
        {
            var markerArg = new MarkerArgDefault()
            {
                Document = doc,
                Rtc      = rtc,
                Laser    = laser,
            };
            bool success = true;

            success &= rtc.ListBegin(laser);
            foreach (var layer in doc.Layers)
            {
                success &= layer.Mark(markerArg);
                // or
                //foreach (var entity in layer)
                //{
                //    var markerable = entity as IMarkerable;
                //    if (null != markerable)
                //        success &= markerable.Mark(markerArg);
                //}
                if (!success)
                {
                    break;
                }
            }
            if (success)
            {
                success &= rtc.ListEnd();
                success &= rtc.ListExecute(true);
            }
            return(success);
        }
Exemplo n.º 9
0
        /// <summary>
        /// 내부 리스트 메모리에 등록된 폰트를 이용한 시리얼 번호
        /// </summary>
        /// <param name="laser"></param>
        /// <param name="rtc"></param>
        private static bool MarkToSerial(ILaser laser, IRtc rtc)
        {
            if (rtc.CtlGetStatus(RtcStatus.Busy))
            {
                return(false);
            }
            bool success    = true;
            var  rtcCharSet = rtc as IRtcCharacterSet;

            //초기값: 1000, 증가값: 1
            rtcCharSet.CtlSerialReset(1000, 1);
            success &= rtc.ListBegin(laser, ListType.Single);
            success &= rtc.ListJump(new Vector2(-10, -20));
            success &= rtcCharSet.ListSerial(4, SerialFormat.LeadingWithZero);
            success &= rtc.ListJump(new Vector2(-10, 0));
            success &= rtcCharSet.ListSerial(4, SerialFormat.LeadingWithZero);
            success &= rtc.ListJump(new Vector2(-10, 20));
            success &= rtcCharSet.ListSerial(4, SerialFormat.LeadingWithZero);
            if (success)
            {
                success &= rtc.ListEnd();
                success &= rtc.ListExecute();
            }
            return(success);
        }
Exemplo n.º 10
0
        /// <summary>
        /// 선 그리기 = 실제 속도 기반 레이저 신호 (주파수 변조) 제어
        /// iDRIVE 기반 스캐너 필요
        /// 가공 출력 조건 = 50KHz (최소 40KHz, 최대 60KHz)
        /// </summary>
        private static bool DrawLine3(ILaser laser, IRtc rtc, float x1, float y1, float x2, float y2)
        {
            var alc = rtc as IRtcAutoLaserControl;

            if (null == alc)
            {
                return(false);
            }
            bool success = true;

            alc.AutoLaserControlByPositionFileName = string.Empty;
            //target frequency : 100KHz
            //lower cut off frequency : 50KHz
            //upper cut off frequency : 120KHz
            success &= alc.CtlAutoLaserControl <float>(AutoLaserControlSignal.Frequency, AutoLaserControlMode.ActualVelocity, 50 * 1000, 40 * 1000, 60 * 1000);
            success &= rtc.ListBegin(laser);
            success &= rtc.ListJump(new Vector2(x1, y1));
            success &= rtc.ListMark(new Vector2(x2, y2));
            if (success)
            {
                success &= rtc.ListEnd();
                success &= rtc.ListExecute(true);
            }
            return(success);
        }
Exemplo n.º 11
0
        public static ILaser CreateLaserController(LaserConfig laserPara, TcpClientStream tcpClient)
        {
            ILaser laser   = null;
            string typeStr = laserPara.LaserType.ToString();

            switch (typeStr)
            {
            case "Raycus":
                if (laserPara.ControlType == LaserControlTypes.Extern)
                {
                    laser = new LaserController(tcpClient, laserPara.MaxVoltage);
                }
                else
                {
                    var serialPortStream = new SerialPortStream(laserPara.PortName, 9600);
                    laser = new RaycusLaserController(serialPortStream);
                }
                break;

            case "Other":
                laser = new LaserController(tcpClient, laserPara.MaxVoltage);
                break;

            default:
                throw new Exception("LaserFactory: not support!");
            }

            return(laser);
        }
Exemplo n.º 12
0
        private static bool DrawByMarkerWithOffset(IDocument doc, IRtc rtc, ILaser laser)
        {
            var marker = new MarkerDefault(0);

            marker.Name = "marker #2";
            //가공 완료 이벤트 핸들러 등록
            marker.OnFinished += Marker_OnFinished;

            var markerArg = new MarkerArgDefault()
            {
                Document = doc,
                Rtc      = rtc,
                Laser    = laser,
            };

            // 9개의 오프셋 정보를 추가한다
            markerArg.Offsets.Clear();
            markerArg.Offsets.Add(new Offset(-20.0f, 20.0f, -90f));
            markerArg.Offsets.Add(new Offset(0.0f, 20.0f, 0.0f));
            markerArg.Offsets.Add(new Offset(20.0f, 20.0f, 90.0f));
            markerArg.Offsets.Add(new Offset(-20.0f, 0.0f, -180.0f));
            markerArg.Offsets.Add(new Offset(0.0f, 0.0f, 0.0f));
            markerArg.Offsets.Add(new Offset(20.0f, 0.0f, 180.0f));
            markerArg.Offsets.Add(new Offset(-20.0f, -20.0f, -270.0f));
            markerArg.Offsets.Add(new Offset(0.0f, -20.0f, 0.0f));
            markerArg.Offsets.Add(new Offset(20.0f, -20.0f, 270.0f));
            bool success = true;

            // 마커에 가공 문서(doc)및 rtc, laser 정보를 전달하고 가공 준비를 실시한다.
            success &= marker.Ready(markerArg);
            // 가공을 시작한다.
            success &= marker.Start();
            return(success);
        }
Exemplo n.º 13
0
        private static bool DrawByMarker(IDocument doc, IRtc rtc, ILaser laser)
        {
            var marker = new MarkerDefault(0);

            marker.Name = "marker #1";
            //가공 완료 이벤트 핸들러 등록
            marker.OnFinished += Marker_OnFinished;

            var markerArg = new MarkerArgDefault()
            {
                Document = doc,
                Rtc      = rtc,
                Laser    = laser,
            };

            // 하나의 오프셋 정보(0,0 및 회전각도 0) 를 추가한다.
            markerArg.Offsets.Add(Offset.Zero);
            bool success = true;

            // 마커에 가공 문서(doc)및 rtc, laser 정보를 전달하고 가공 준비를 실시한다.
            success &= marker.Ready(markerArg);
            // 가공을 시작한다.
            success &= marker.Start();
            return(success);
        }
Exemplo n.º 14
0
 public void SetLaser(ILaser laser)
 {
     if (m_laser == null)
     {
         m_laser = laser;
     }
 }
Exemplo n.º 15
0
        /// <summary>
        /// 직선으로 원 그리기
        /// </summary>
        /// <param name="rtc"></param>
        /// <param name="radius"></param>
        /// <param name="durationMsec"></param>
        private static void DrawCircleWithLines(ILaser laser, IRtc rtc, float radius)
        {
            ///스테이지의 원점은 통상 0,0 이기 때문에 - 영역에서는 모션구동이 불가능하므로
            ///+ 영역에서 처리되도록 안전한 위치로 이동하는 코드
            rtc.MatrixStack.Push(radius * 2f, radius * 2f);///transit safety area

            /// 스테이지 + 스캐너 동시 구동하여 원 그리기
            rtc.ListBegin(laser, MotionType.StageAndScanner);
            double x = radius * Math.Sin(0 * Math.PI / 180.0);
            double y = radius * Math.Cos(0 * Math.PI / 180.0);

            rtc.ListJump(new Vector2((float)x, (float)y));

            for (float angle = 10; angle < 360; angle += 10)
            {
                x = radius * Math.Sin(angle * Math.PI / 180.0);
                y = radius * Math.Cos(angle * Math.PI / 180.0);
                rtc.ListMark(new Vector2((float)x, (float)y));
            }
            x = radius * Math.Sin(0 * Math.PI / 180.0);
            y = radius * Math.Cos(0 * Math.PI / 180.0);
            rtc.ListMark(new Vector2((float)x, (float)y));

            rtc.ListEnd();
            rtc.ListExecute(true);
            rtc.MatrixStack.Pop();
        }
Exemplo n.º 16
0
        private static void DrawByMarker(IRtc rtc, ILaser laser, IMarker marker)
        {
            #region load from sirius file
            var dlg = new OpenFileDialog();
            dlg.Filter = "sirius data files (*.sirius)|*.sirius|dxf cad files (*.dxf)|*.dxf|All Files (*.*)|*.*";
            dlg.Title  = "Open to data file";
            DialogResult result = dlg.ShowDialog();
            if (result != DialogResult.OK)
            {
                return;
            }
            string    ext = Path.GetExtension(dlg.FileName);
            IDocument doc = null;
            if (0 == string.Compare(ext, ".dxf", true))
            {
                doc = DocumentSerializer.OpenDxf(dlg.FileName);
            }
            else if (0 == string.Compare(ext, ".sirius", true))
            {
                doc = DocumentSerializer.OpenSirius(dlg.FileName);
            }
            #endregion

            Debug.Assert(null != doc);
            marker.Ready(doc, rtc, laser);
            marker.Offsets.Clear();
            marker.Offsets.Add((0, 0, 0));
            marker.Start();
        }
Exemplo n.º 17
0
        /// <summary>
        /// 레이어 안에 있는 모든 객체들을 마킹하기 (3x3 의 나선 객체가 마킹됨)
        /// </summary>
        /// <param name="rtc"></param>
        /// <param name="doc"></param>
        private static bool DrawForFieldCorrection(ILaser laser, IRtc rtc, IDocument doc)
        {
            bool success = true;

            rtc.ListBegin(laser);
            foreach (var layer in doc.Layers)
            {
                foreach (var entity in layer)
                {
                    var markerable = entity as IMarkerable;
                    if (null != markerable)
                    {
                        success &= markerable.Mark(rtc);
                    }
                    if (!success)
                    {
                        break;
                    }
                }
                if (!success)
                {
                    break;
                }
            }
            if (success)
            {
                rtc.ListEnd();
            }
            return(success);
        }
Exemplo n.º 18
0
        static void DoBegin(ILaser laser, IRtc rtc, IDocument doc)
        {
            var  timer   = new Stopwatch();
            bool success = true;

            rtc.ListBegin(laser);
            foreach (var layer in doc.Layers)
            {
                foreach (var entity in layer)
                {
                    var markerable = entity as IMarkerable;
                    if (null != markerable)
                    {
                        success &= markerable.Mark(rtc);
                    }
                    if (!success)
                    {
                        break;
                    }
                }
                if (!success)
                {
                    break;
                }
            }
            if (success)
            {
                rtc.ListEnd();
                rtc.ListExecute(true);
            }
            Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s");
        }
Exemplo n.º 19
0
    public void FireLaser()
    {
        Vector3 offset = Vector3.zero;

        switch (m_startDir)
        {
        case Direction.UP:
            offset = new Vector3(0, +5, 0);
            break;

        case Direction.Right:
            offset = new Vector3(5, 0, 0);
            break;

        case Direction.Down:
            offset = new Vector3(0, -5, 0);
            break;

        case Direction.Left:
            offset = new Vector3(-5, 0, 0);
            break;
        }

        ILaser laser = Instantiate((Laser.Laser)m_laser, transform.position + offset, Quaternion.identity);

        laser.DestroyEvent += LaserDestoryEvent;
        laser.SetCurrentLaserDir(m_startDir);
    }
Exemplo n.º 20
0
        /// <summary>
        /// CreateILaser returns an ILaser interface
        /// based on the current configuration.
        /// </summary>
        /// <returns>ILaser object if one is configured; NULL otherwise</returns>
        public static ILaser CreateILaser()
        {
            //Declare a variable to return
            ILaser rtn = null;

            //Try to get an RDH2Laser object
            try
            {
                //rtn = new Laser.RDH2Laser();
            }
            catch { }

            //Try to get a LEGOLaser object if the RDH2Laser
            //could not be created
            if (rtn == null)
            {
                try
                {
                    rtn = new Laser.LEGOLaser();
                }
                catch { }
            }

            //Return the result
            return(rtn);
        }
Exemplo n.º 21
0
 /// <summary>
 /// 지정된 반지름을 갖는 원 그리기
 /// </summary>
 /// <param name="rtc"></param>
 /// <param name="radius"></param>
 private static void DrawCircle(ILaser laser, IRtc rtc, double radius)
 {
     /// 스캐너만 구동하여 원 그리기
     rtc.ListBegin(laser, MotionType.ScannerOnly);
     rtc.ListJump(new Vector2((float)radius, 0));
     rtc.ListArc(new Vector2(0, 0), 360.0f);
     rtc.ListEnd();
     rtc.ListExecute(true);
 }
Exemplo n.º 22
0
        private static void DrawByMarker(IDocument doc, IRtc rtc, ILaser laser)
        {
            var marker = new MarkerDefault(0);

            marker.Name        = "marker #1";
            marker.OnFinished += Marker_OnFinished;
            marker.Ready(doc, rtc, laser);   //layer cloned
            marker.Start();
        }
Exemplo n.º 23
0
 private static void DrawCircleWith3D(ILaser laser, IRtc rtc, IRtc3D rtc3D)
 {
     rtc.ListBegin(laser);
     //draw circle in z = +1 mm
     rtc3D.ListJump3D(new Vector3((float)10, 0, 1));
     rtc3D.ListArc3D(new Vector3(0, 0, 1), 360.0f);
     rtc.ListEnd();
     rtc.ListExecute();
 }
Exemplo n.º 24
0
        private static void DrawCircle(ILaser laser, IRtc rtc)
        {
            float radius = 20.0f;

            rtc.ListBegin(laser);
            rtc.ListJump(new Vector2(radius, 0));
            rtc.ListArc(new Vector2(0, 0), 360.0f);
            rtc.ListEnd();
        }
Exemplo n.º 25
0
 /// <summary>
 /// 지정된 크기의 직사각형 그리기
 /// </summary>
 /// <param name="rtc"></param>
 /// <param name="width"></param>
 /// <param name="height"></param>
 private static void DrawRectangle(ILaser laser, IRtc rtc, double width, double height)
 {
     rtc.ListBegin(laser);
     rtc.ListJump(new Vector2((float)-width / 2, (float)height / 2));
     rtc.ListMark(new Vector2((float)width / 2, (float)height / 2));
     rtc.ListMark(new Vector2((float)width / 2, (float)-height / 2));
     rtc.ListMark(new Vector2((float)-width / 2, (float)-height / 2));
     rtc.ListMark(new Vector2((float)-width / 2, (float)height / 2));
     rtc.ListEnd();
 }
        /// <summary>
        /// FindHardware attempts to create the hardware objects
        /// and display them to the user.
        /// </summary>
        private void FindHardware(Object parameter)
        {
            //Unpack the Parameters
            WizardControl wizard = parameter as WizardControl;

            //Set the button Enable states
            wizard.Dispatcher.BeginInvoke(new DisableButtonsDelegate(this.DisableButtons));

            //Set the Cursor on the WizardControl
            wizard.Dispatcher.BeginInvoke(new ChangeCursorDelegate(this.ChangeCursor), Cursors.Wait);

            //Create the Hardware objects
            IMirror       mirror  = SHArKClassFactory.CreateIMirror();
            IPotentiostat potstat = SHArKClassFactory.CreateIPotentiostat();
            ILaser        laser   = SHArKClassFactory.CreateILaser();

            //Get the names of the hardware -- default to not found
            String mirrorName  = Strings.DeviceNotFound;
            String potstatName = Strings.DeviceNotFound;
            String laserName   = Strings.DeviceNotFound;

            if (mirror != null)
            {
                mirrorName = mirror.Name;
                mirror.Dispose();
            }


            if (potstat != null)
            {
                potstatName = potstat.Name;
                potstat.Dispose();
            }

            if (laser != null)
            {
                laserName = laser.Name;
                laser.Dispose();
            }

            //Set the labels in the Page
            wizard.Dispatcher.BeginInvoke(new SetLabelTextDelegate(this.SetLabelText), TextBlockType.Mirror, mirrorName);
            wizard.Dispatcher.BeginInvoke(new SetLabelTextDelegate(this.SetLabelText), TextBlockType.Potentiostat, potstatName);
            wizard.Dispatcher.BeginInvoke(new SetLabelTextDelegate(this.SetLabelText), TextBlockType.Laser, laserName);

            //Set the Cursor on the WizardControl
            wizard.Dispatcher.BeginInvoke(new ChangeCursorDelegate(this.ChangeCursor), Cursors.Arrow);

            //Enable the buttons as necessary
            wizard.Dispatcher.BeginInvoke(new EnableButtonsDelegate(this.EnableButtons), wizard);

            //Set the flag that the Hardware has been searched for
            this._hardwareSearched = true;
        }
Exemplo n.º 27
0
 /// <summary>
 /// 원(호)를 따라 매 1도마다 점 찍기
 /// </summary>
 /// <param name="rtc"></param>
 /// <param name="radius"></param>
 /// <param name="durationMsec"></param>
 private static void DrawCircleWithDots(ILaser laser, IRtc rtc, double radius, double durationMsec)
 {
     rtc.ListBegin(laser);
     for (double angle = 0; angle < 360; angle += 1)
     {
         double x = radius * Math.Sin(angle * Math.PI / 180.0);
         double y = radius * Math.Cos(angle * Math.PI / 180.0);
         rtc.ListJump(new Vector2((float)x, (float)y));
         rtc.ListLaserOn(durationMsec);
     }
     rtc.ListEnd();
 }
Exemplo n.º 28
0
 /// <summary>
 /// 행렬을 이용해 직선을 그릴때 1도마다 직선을 회전시켜 그리기
 /// </summary>
 /// <param name="rtc"></param>
 /// <param name="angleStart"></param>
 /// <param name="angleEnd"></param>
 private static void DrawLinesWithRotate(ILaser laser, IRtc rtc, double angleStart, double angleEnd)
 {
     rtc.ListBegin(laser);
     for (double angle = angleStart; angle <= angleEnd; angle += 1)
     {
         rtc.MatrixStack.Push(angle);
         rtc.ListJump(new Vector2(-10, 0));
         rtc.ListMark(new Vector2(10, 0));
         rtc.MatrixStack.Pop();
     }
     rtc.ListEnd();
 }
Exemplo n.º 29
0
 public bool ListBegin(ILaser laser, MotionType motionType)
 {
     Core.GenuineTest();
     if (!string.IsNullOrEmpty(this.outputFileName))
     {
         this.stream?.Dispose();
         this.stream = new StreamWriter(this.outputFileName);
     }
     this.aborted = false;
     stream?.WriteLine($"; LIST HAS BEGAN : {DateTime.Now.ToString()}");
     return(true);
 }
Exemplo n.º 30
0
        private static void DrawTooHeavyAndSlowJob(ILaser laser, IRtc rtc)
        {
            if (rtc.CtlGetStatus(RtcStatus.Busy))
            {
                Console.WriteLine("Processing are working already !");
                return;
            }

            Program.laser  = laser;
            Program.rtc    = rtc;
            Program.thread = new Thread(DoHeavyWork); //create new thread
            Program.thread.Start();
        }