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); } } }
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); } } } } }