Exemple #1
0
        void COMTxData()
        {
            if (XkGameCtrl.IsGameOnQuit)
            {
                return;
            }

            try
            {
                if (XKLaserPosCtrl.GetInstance() != null)
                {
                    XKLaserPosCtrl.GetInstance().SendMessage();
                }
                IsReadComMsg = false;
                _SerialPort.Write(WriteByteMsg, 0, WriteByteMsg.Length);
                _SerialPort.DiscardOutBuffer();
                WriteCount++;
            }
            catch (Exception exception)
            {
                if (XkGameCtrl.IsGameOnQuit || ComThread == null)
                {
                    return;
                }
                Debug.Log("Tx error:COM!!! " + exception);
            }
        }
Exemple #2
0
    public static XKLaserPosCtrl GetInstance()
    {
        if (_Instance == null)
        {
            _Instance = new XKLaserPosCtrl();
//						XKOpenCGCamera.GetInstance();
//						MyCOMDevice.GetInstance();
        }
        return(_Instance);
    }
    void CheckBufferCB(byte[] pBuffer, int bufferLen)
    {
        //CallGameUpdateZhunXingZuoBiao(new Point(getFrameNum, getFrameNum + 2)); //test.
        if (m_mode == MODE.MODE_MOTION)
        {
            if (getFrameNum >= 3333)
            {
                getFrameNum = 0;
            }

            //3333 = 10000 / (1000 / 320); -> 每隔10秒获取一次干扰光源信息,320是采集器的刷新帧率.
            if (getFrameNum % 3333 == 0)
            {
                //ScreenLog.Log("getUnwantedPoint...");
                getUnwantedPoint(pBuffer);
            }
            getFrameNum++;
        }
        else
        {
            if (getFrameNum == 0)
            {
                getFrameNum = 1;
                getUnwantedPoint(pBuffer);
                OpenPlayerJiGuangQi();
                return;
            }
        }

        if (unwantedPointNum > 0)
        {
            //ScreenLog.Log("subUnWantedPoint -> pointNum "+unwantedPointNum);
            subUnWantedPoint(pBuffer, bufferLen);
        }

        switch (m_mode)
        {
        case MODE.MODE_SET_CALIBRATION:
            if (g_bBeginDrawRectangle)
            {
                if (m_bRectifyState)
                {
                    int   nled     = m_nLed;
                    Point pointVal = GetPointToConvert(pBuffer);
                    //Con::printf("nled %d, m_nled %d",nled, m_nLed);

                    //find pointJiGuangQi
                    if (nled != m_nLed && 4 >= m_nLed)
                    {
                        //m_p4的坐标顺序与光枪校准顺序相反.
                        m_p4[4 - m_nLed].X = pointVal.X;
                        m_p4[4 - m_nLed].Y = pointVal.Y;
                        if (4 - m_nLed == 0)
                        {
                            CheckMP4Info();
                        }
                        m_bRectifyState = false;
                        //添加代码,改变校准图片信息.
                        CallGameChangeJiaoZhunPic();
                    }
                }

                //光枪校准已经完成.
                if (4 == m_nLed)
                {
                    SetCalibrationInfo();
                    g_bBeginDrawRectangle = false;
                    m_mode = MODE.MODE_MOTION;
                }
            }
            break;

        case MODE.MODE_MOTION:
            if (!m_bFirstInst)
            {
                SetCalibrationInfo();
            }
            ConvertGrayBitmapFindPoint(pBuffer);

            if (m_bCurPointModified)
            {
                //找到激光器亮点坐标信息.
                m_bCurPointModified = false;
                //改变准星坐标.
                CallGameUpdateZhunXingZuoBiao(m_curMousePoint);
            }

            if (IsCGCameraQuickCOM)
            {
                AddIndexMousePoint();
            }
            else
            {
                //通知XKLaserPosCtrl下一帧数据关闭所有激光器.
                XKLaserPosCtrl.SetIsCloseAllJiGuangQi(true);
            }
            break;

        default:
            break;
        }
        return;
    }