Beispiel #1
0
        public void InitTcp()
        {
            //和Camera通信
            m_MyTcpClientVisual = new MyTcpClient();
            if (m_MyTcpClientVisual != null)
            {
                IPAddress CameraIp   = IPAddress.Parse(Profile.m_Config.CameraIp);
                int       CameraPort = Profile.m_Config.CameraPort;
                m_MyTcpClientVisual.CreateConnect(CameraIp, CameraPort);
                if (!m_MyTcpClientVisual.IsConnected)
                {
                    DataStruct.SysStat.CameraOk = false;
                    m_SysAlarm.SetAlarm(SysAlarm.Type.Camera, true);
                }
                else
                {
                    DataStruct.SysStat.CameraOk = true;
                    m_SysAlarm.SetAlarm(SysAlarm.Type.Camera, false);
                }
            }

            //和单片机通信
            m_ArmControler.Open();
            m_MyTcpClientArm = m_ArmControler.m_MyTcpClientArm[(int)Board.Controler];
            if (!m_MyTcpClientArm.IsConnected)
            {
                DataStruct.SysStat.ArmControlerOk = false;
                m_SysAlarm.SetAlarm(SysAlarm.Type.ARM, true);
            }
            else
            {
                DataStruct.SysStat.ArmControlerOk = true;
                m_SysAlarm.SetAlarm(SysAlarm.Type.ARM, false);

                //设置电机默认参数
                InitArmControlerAxisPamera();
            }

            //创建Tcp Server
            m_MyTcpServer = MyTcpServer.GetInstance();
            if (m_MyTcpServer != null)
            {
                IPAddress ServerIp   = IPAddress.Parse(Profile.m_Config.VisualStationServerIp);
                int       ServerPort = Profile.m_Config.VisualStationServerPort;
                bool      Re         = m_MyTcpServer.CreatServer(ServerIp, ServerPort);
                if (!Re)
                {
                    DataStruct.SysStat.ServerOk = false;
                    m_SysAlarm.SetAlarm(SysAlarm.Type.Server, true);
                }
                else
                {
                    DataStruct.SysStat.ServerOk = true;
                    m_SysAlarm.SetAlarm(SysAlarm.Type.Server, false);
                }
            }
        }
Beispiel #2
0
        public static void ProcessTcpClientMessage()
        {
            //作为客户端处理所有Arm控制板的消息
            for (int i = 0; i < m_ArmControler.m_MyTcpClientArm.Length; i++)
            {
                MyTcpClient Client = m_ArmControler.m_MyTcpClientArm[i];
                if (Client != null && Client.IsConnected)
                {
                    while (Client.m_RecvMeasQueue.Count != 0)
                    {
                        TcpMeas TempMeas = Client.m_RecvMeasQueue.Dequeue();
                        if (TempMeas != null && TempMeas.Client != null)
                        {
                            if (TempMeas.MeasType == TcpMeasType.MEAS_TYPE_ARM)  // 处理和ARM之间的消息
                            {
                                ProcessArmControlerMessage((Board)i, TempMeas);
                            }
                        }
#if DebugTest
                        Debug.WriteLine(BitConverter.ToString(TempMeas.Param));
#endif
                    }
                }
            }

            //作为客户端处理相机的消息
            if (m_MyTcpClientVisual != null && m_MyTcpClientVisual.IsConnected)
            {
                while (m_MyTcpClientVisual.m_RecvMeasQueue.Count != 0)
                {
                    TcpMeas TempMeas = m_MyTcpClientVisual.m_RecvMeasQueue.Dequeue();
                    if (TempMeas != null && TempMeas.Client != null)
                    {
                        if (TempMeas.MeasType == TcpMeasType.MEAS_TYPE_CAMERA)  // 处理和相机之间的消息
                        {
                            ProcessCameraMessage(TempMeas);
                        }
                    }
                }
            }
        }