示例#1
0
 private void DatagramReceived(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
 {
     if (e.Datagram[0] == 35 && e.Datagram[1] == 35)      // Start with ## is plaint CMD
     {
         string cmd = System.Text.Encoding.Default.GetString(e.Datagram);
     }
 }
 /// <summary>
 /// 接收数据处理
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void client_DatagramReceived(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
 {
     Dispatcher.BeginInvoke((Action) delegate
     {
         DgService.ItemsSource = WinServHelper.GetServiceInfosFromBytes(e.Datagram);
     });
 }
示例#3
0
        private void TcpClient_DatagramReceived(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
        {
            Message message = new Message(e.ReceivedBytes);

            this.Dispatcher.BeginInvoke(new Action(() => { MessageList.Add(message); }), System.Windows.Threading.DispatcherPriority.Normal);
            emulator.HandleMessage(message);
        }
示例#4
0
        /// <summary>
        /// 接收到服务器的数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        static void ControllerServer_DatagramReceived(
            object sender, TcpDatagramReceivedEventArgs <byte[]> e)
        {
            try
            {
                if (e.TcpClient != null)
                {
                    if (RemoteHost == "" || RemoteHost == null)
                    {
                        RemoteHost = ((IPEndPoint)e.TcpClient.Client.RemoteEndPoint).Address.ToString();
                    }
                    if (RemotePort == "" || RemotePort == null)
                    {
                        RemotePort = ((IPEndPoint)e.TcpClient.Client.RemoteEndPoint).Port.ToString();
                    }
                }

                //处理数据
                JsonInterFace.Parse(e.Datagram, RemoteHost, RemotePort);
            }
            catch (Exception ex)
            {
                if (Parameters.LogStatus == 0)
                {
                    JsonInterFace.IODataHelper.SaveLogs(DateTime.Now.ToString(), "接收服务端数据异常", ex.Message, ex.StackTrace);
                }
                else
                {
                    Parameters.PrintfLogsExtended("接收服务端数据异常", ex.Message, ex.StackTrace);
                }
            }
        }
示例#5
0
 private void server_Received(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
 {
     Debug.Log(string.Format("Client : {0} --> {1}",
                             e.Client.TcpClient.Client.RemoteEndPoint.ToString(), e.Datagram.Length));
     lock (Lock) {
         inbox.Add(e.Client);
     }
 }
示例#6
0
 /// <summary>
 /// 接收字节数据
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Client_DatagramReceived(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
 {
     //_master.UpdateDevceBData(Name, e.Datagram);
     if (CRCMethod.CheckCRC(e.Datagram))
     {
         Bdata      = e.Datagram;
         UpDateTime = DateTime.Now;
     }
 }
示例#7
0
        public StatusStructure StatusAnalysis(TcpDatagramReceivedEventArgs <byte[]> e)
        {
            try
            {
                StatusStructure ss = new StatusStructure();
                ss.BeginFlag   = CommonFunction.byteToHexString(new byte[] { e.Datagram[0] });
                ss.HeightValue = BitConverter.ToSingle(new byte[] { e.Datagram[4], e.Datagram[3], e.Datagram[2], e.Datagram[1] }, 0);
                byte[] status = new byte[] { e.Datagram[5], 0 };
                switch (CommonFunction.byteToHexString(status))
                {
                case "0000":
                    ss.isPlatformMoving  = false;
                    ss.isLowCaliperClamp = true;
                    ss.isTopCaliperClamp = true;
                    break;

                case "0100":
                    ss.isPlatformMoving  = false;
                    ss.isLowCaliperClamp = true;
                    ss.isTopCaliperClamp = false;
                    break;

                case "0200":
                    ss.isPlatformMoving  = false;
                    ss.isLowCaliperClamp = false;
                    ss.isTopCaliperClamp = true;
                    break;

                case "0400":
                    ss.isPlatformMoving  = true;
                    ss.isLowCaliperClamp = true;
                    ss.isTopCaliperClamp = true;
                    break;

                case "0300":
                    ss.isPlatformMoving  = false;
                    ss.isLowCaliperClamp = false;
                    ss.isTopCaliperClamp = false;
                    break;

                case "0700":
                    ss.isPlatformMoving  = true;
                    ss.isLowCaliperClamp = false;
                    ss.isTopCaliperClamp = false;
                    break;

                case "0600":
                    ss.isPlatformMoving  = true;
                    ss.isLowCaliperClamp = false;
                    ss.isTopCaliperClamp = true;
                    break;
                }
                ss.EndFlag = CommonFunction.byteToHexString(new byte[] { e.Datagram[6] });
                return(ss);
            }
            catch (Exception ex) { throw ex; }
        }
示例#8
0
 private void TcpClient_DatagramReceived(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
 {
     if (e.Datagram != null)
     {
         var message  = Encoding.UTF8.GetString(e.Datagram);
         var response = Utils.Deserialize <ResponseInfo>(message);
         DoResponse(e.TcpClient, response);
     }
 }
示例#9
0
 static void server_PlaintextReceived(object sender, TcpDatagramReceivedEventArgs <string> e)
 {
     if (e.Datagram != "Received")
     {
         Console.Write(string.Format("Client : {0} --> ", e.TcpClient.Client.RemoteEndPoint.ToString()));
         Console.WriteLine(string.Format("{0}", e.Datagram));
         server.Send(e.TcpClient, "Server has received you text : " + e.Datagram);
     }
 }
示例#10
0
文件: Program.cs 项目: sclcwwl/Gimela
 static void server_PlaintextReceived(object sender, TcpDatagramReceivedEventArgs<string> e)
 {
     if (e.Datagram != "Received")
       {
     Console.Write(string.Format("Client : {0} --> ", e.TcpClient.Client.RemoteEndPoint.ToString()));
     Console.WriteLine(string.Format("{0}", e.Datagram));
     server.Send(e.TcpClient, "Server has received you text : " + e.Datagram);
       }
 }
        private void OnDataReceived(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
        {
            byte[] content = e.datagram;
            string str     = System.Text.Encoding.Default.GetString(content);

            //Encoding encoding = Encoding.UTF8;
            //string contentstring = encoding.GetString(content, 0, content.Length);
            this.receivetext = str;
            //byte[] sendbackdata = new byte[] { 0xeb, 0x90 };
        }
示例#12
0
    private void server_Received(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
    {
        Debug.Log(string.Format("Client : {0} --> {1}",
                                e.Client.TcpClient.Client.RemoteEndPoint.ToString(), e.Datagram.Length));
        TcpClientState internalClient = e.Client;
        string         tcpClientKey   = internalClient.TcpClient.Client.RemoteEndPoint.ToString();

        inbox.AddOrUpdate(tcpClientKey, internalClient, (n, o) => {
            return(internalClient);
        });
    }
示例#13
0
        void client_DatagramReceived(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
        {
            string receiveMsg = NetworkHelp.ConvertToStrData(e.Datagram);

            this.tbMsg.Invoke(new Action(() =>
            {
                this.tbMsg.AppendText(
                    string.Format("Server : {0}" +
                                  System.Environment.NewLine, receiveMsg
                                  )
                    );;
            }));
        }
示例#14
0
 void client_PlaintextReceived(object sender, TcpDatagramReceivedEventArgs <string> e)
 {
     if (e.Datagram != "Received")
     {
         textBox1.BeginInvoke((MethodInvoker) delegate
         {
             System.DateTime currentTime = new System.DateTime();/*取当前年月日时分秒 */
             currentTime = System.DateTime.Now;
             textBox1.AppendText(currentTime + string.Format("系统: {0} --> ", e.TcpClient.Client.RemoteEndPoint.ToString()));
             textBox1.AppendText(string.Format("{0}", e.Datagram) + System.Environment.NewLine);
             string[] SplitOrder = Split(e.Datagram);
         });
     }
 }
示例#15
0
        private void TcpServer_DatagramReceived(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
        {
            if (e.Datagram != null && e.Datagram.Length > 0)
            {
                try
                {
                    var message = Encoding.UTF8.GetString(e.Datagram);
                    var request = Utils.Deserialize <RequestInfo>(message);
                    if (request.Handler == "Connect")
                    {
                        tcpServer.Send(e.TcpClient, request, "连接成功!");
                        return;
                    }

                    var logger     = new TcpServerLogger(rtbLog, request, tcpServer, e.TcpClient);
                    var ctxRequest = new RequestContext(logger);
                    ctxRequest.Request = request;

                    Utils.ExecuteAsync(ctxRequest, e1 =>
                    {
                        var ctx = e1.Argument as RequestContext;
                        if (ctx == null)
                        {
                            return;
                        }

                        var handler = RequestHandler.GetHandler(ctx);
                        if (handler == null)
                        {
                            ctx.Logger.WriteLog("不支持{0}的处理者!", ctx.Request.Handler);
                            return;
                        }

                        e1.Result = handler.Execute();
                    },
                                       e2 =>
                    {
                        if (e2.Result != null)
                        {
                            tcpServer.Send(e.TcpClient, Utils.Serialize(e2.Result));
                        }
                    });
                }
                catch (Exception ex)
                {
                    context.Logger.WriteLog("{0}接收异常,{1}", e.TcpClient.Client.RemoteEndPoint, ex.Message);
                }
            }
            Application.DoEvents();
        }
示例#16
0
 /// <summary>
 /// 以byte[]传递数组// 这里可以作为普通数据的解析
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void server_DatagramReceived(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
 {
     try
     {
         //Thread thrd = new Thread(ExecuReceive);
         ThreadPool.QueueUserWorkItem(ExecuReceive);
         //thrd.Start(e);
         //thrd.Join();
     }
     catch (Exception eww)
     {
         txtLog.Text += "\r\n 程序错误:" + eww.Message + "\r\n" + eww.StackTrace;
     }
 }
示例#17
0
 static void OnTcpPlaintextReceived(object sender, TcpDatagramReceivedEventArgs <string> e)
 {
     Console.Write(string.Format("Server : {0} --> ", e.TcpClient.Client.RemoteEndPoint.ToString()));
     Console.WriteLine(string.Format("{0}", e.Datagram));
 }
示例#18
0
 private void server_PlaintextReceived(object sender, TcpDatagramReceivedEventArgs <string> e)
 {
     throw new NotImplementedException();
 }
示例#19
0
文件: Program.cs 项目: sclcwwl/Gimela
 static void client_PlaintextReceived(object sender, TcpDatagramReceivedEventArgs<string> e)
 {
     Console.Write(string.Format("Server : {0} --> ", e.TcpClient.Client.RemoteEndPoint.ToString()));
       Console.WriteLine(string.Format("{0}", e.Datagram));
 }
示例#20
0
        private void PlainTextReceived(object sender, TcpDatagramReceivedEventArgs <string> e)
        {
            string cmd = e.Datagram;

            if (cmd.IndexOf(NetWorkCommand.QUIT) >= 0)
            {
                Log(string.Format(CultureInfo.InvariantCulture, "Received:{0}", cmd));
                this.Close();
            }
            else if (cmd.IndexOf(NetWorkCommand.CLEAN) >= 0)
            {
                Log(string.Format(CultureInfo.InvariantCulture, "Received:{0}", cmd));
                CleanSignature();
            }
            else if (cmd.IndexOf(NetWorkCommand.PAGEUP) >= 0)
            {
                ContentWindow.PrePage();
                if (!Dispatcher.CheckAccess())
                {
                    Dispatcher.Invoke(
                        () => ShowOrHideCanvas(), System.Windows.Threading.DispatcherPriority.Normal);
                }
                else
                {
                    ShowOrHideCanvas();
                }
            }
            else if (cmd.IndexOf(NetWorkCommand.PAGEDOWN) >= 0)
            {
                ContentWindow.NextPage();
                if (!Dispatcher.CheckAccess())
                {
                    Dispatcher.Invoke(
                        () => ShowOrHideCanvas(), System.Windows.Threading.DispatcherPriority.Normal);
                }
                else
                {
                    ShowOrHideCanvas();
                }
            }
            else if (cmd.IndexOf(NetWorkCommand.STYLUS_ADD) >= 0 || cmd.IndexOf(NetWorkCommand.STYLUS_REMOVE) >= 0)
            {
                if (cmd.IndexOf(NetWorkCommand.CLEAN) >= 0)
                {
                    CleanSignature();
                    return;
                }

                String[] cmds = cmd.Split(NetWorkCommand.CMD.ToArray());
                foreach (String c in cmds)
                {
                    String[] arg = c.Split(':');
                    double   lX = 0, lY = 0;
                    float    lP = 0;
                    double   scw = 0, sch = 0, ssw = 0, ssh = 0;
                    StylusPointCollection pts = new StylusPointCollection();
                    bool isAdd = true;
                    foreach (var ps in arg)
                    {
                        String[] p = ps.Split(',');
                        if (p.Length == 5)
                        {
                            isAdd = NetWorkCommand.STYLUS_ADD.IndexOf(p[0]) >= 0;
                            //接收签名设备屏幕信息
                            scw = double.Parse(p[1]);
                            sch = double.Parse(p[2]);
                            ssw = double.Parse(p[3]);
                            ssh = double.Parse(p[4]);
                        }

                        if (p.Length == 3)
                        {
                            double feedX = billImageW * 1d / scw;
                            double feedY = billImageH * 1d / sch;

                            lX = double.Parse(p[0]);
                            lY = double.Parse(p[1]);
                            lP = float.Parse(p[2]);
                            pts.Add(new StylusPoint(lX * feedX, lY * feedY, lP));
                        }
                    }
                    if (pts.Count > 0)
                    {
                        if (!Dispatcher.CheckAccess())
                        {
                            Dispatcher.Invoke(
                                () => DrawLine(pts, isAdd), System.Windows.Threading.DispatcherPriority.Normal);
                        }
                        else
                        {
                            DrawLine(pts, isAdd);
                        }
                    }
                }
            }
        }
示例#21
0
 /// <summary>
 /// 接收文本数据
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Client_PlaintextReceived(object sender, TcpDatagramReceivedEventArgs <string> e)
 {
     //_master.UpdateDevceSData(Name, e.Datagram);
     Sdata      = e.Datagram;
     UpDateTime = DateTime.Now;
 }
示例#22
0
        void ExecuReceive(object data)
        {
            lock (CurrentClient)
            {
                AutoResetEvent exitEvent;
                exitEvent = new AutoResetEvent(false);
                //List<byte[]> mac_list = new List<byte[]>();
                //bool open = true;
                TcpDatagramReceivedEventArgs <byte[]> e = (TcpDatagramReceivedEventArgs <byte[]>)data;
                LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "服务器接收的基础数据:" + data);
                LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + ";服务器收到来自设备的数据:" + Converts.GetTPandMac(e.Datagram) + ";");
                int    lengths     = e.Datagram.Length;//接受客户端握手信息
                string str_mac     = "";
                string str_boxdate = "";
                //byte[] boxdate = new byte[6];
                //byte[] mac = new byte[12];
                byte[] boxdate = new byte[12];
                byte[] mac     = new byte[15];
                //byte[] macnew = new byte[13];
                LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "服务器命令头:" + e.Datagram[0]);
                switch (e.Datagram[0])
                {
                //第一个字节是EF
                case 239:    //主机返回的数据
                {
                    #region 发送数据到客户端
                    //Array.Copy(e.Datagram, 10, mac, 0, 12);
                    //Array.Copy(e.Datagram, 22, boxdate, 0, 6);
                    try
                    {
                        Array.Copy(e.Datagram, 10, mac, 0, 15);
                        Array.Copy(e.Datagram, 25, boxdate, 0, 12);
                        str_mac     = Converts.GetTPandMac(mac);
                        str_boxdate = Converts.GetTPandMac(boxdate);
                        DeviceClient dev = new DeviceClient();
                        dev.BoxState = str_boxdate;
                        dev.myclient = e.TcpClient;        //请求端
                        dev.OnLine   = false;
                        dev.StrMac   = str_mac;
                        dev.typeid   = 2;
                        //byte[] LastRes = HexStringToByte(GetLastStrToEnd("EF02", Converts.GetTPandMac(e.Datagram)));
                        byte[] LastRes = HexStringToByte(GetLastStrToEnd("EF03", Converts.GetTPandMac(e.Datagram)));
                        LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + ";服务器收到来自设备" + str_mac + "的数据:" + Converts.GetTPandMac(e.Datagram) + ";");
                        //showLog(DateTime.Now.ToString("HH:mm:ss") + ";服务器收到来自设备" + str_mac + "的数据:" + Converts.GetTPandMac(e.Datagram) + ";");
                        if (!CheckDataGram(LastRes))
                        {
                            //byte[] box_number = new byte[] { 0, 0, 0, 0, 0, 0 };
                            byte[] box_number  = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            byte[] byteCommand = GetSendMulty(mac, box_number, 0x06);
                            string sss         = ByteToHexString(byteCommand);
                            //暂时注释掉,回复指令
                            //int j = 0;
                            //while (j < 3)
                            //{
                            //    try
                            //    {
                            //        Thread.Sleep(750);
                            //        LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "向目标:" + dev.GetStrRemoteEndPoint + ";向MAC为" + str_mac + "发送重发要求" + sss);
                            //        dev.SendMsg(byteCommand);
                            //        break;
                            //    }
                            //    catch { j++; }
                            //}
                        }
                        else
                        {
                            if (e.Datagram[9] == 0x03)        //开箱指令响应
                            {
                                string       strLastCommanResponse = ByteToHexString(LastRes);
                                WeiXinClient wxclient = CurrentClient[str_mac, 1] as WeiXinClient;
                                if (wxclient != null)
                                {
                                    wxclient.receivenum += GetStrAppearTimes("EF03", Converts.GetTPandMac(e.Datagram));
                                    LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "接收到来自MAC为" + str_mac + "的响应,响应的内容为:" + Converts.GetTPandMac(e.Datagram));
                                    //LogHelper.showLog(txtLog, (DateTime.Now.ToString("HH:mm:ss") + "接收到来自MAC为" + str_mac + "的响应,响应的内容为:" + Converts.GetTPandMac(e.Datagram)));
                                    try
                                    {
                                        if (wxclient.SendMsg(LastRes))        //收到的报文回送
                                        {
                                            LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "向微信端回送成功:" + wxclient.GetStrRemoteEndPoint + strLastCommanResponse);
                                            //LogHelper.showLog(txtLog, (DateTime.Now.ToString("HH:mm:ss") + "向微信端回送成功:" + wxclient.GetStrRemoteEndPoint + strLastCommanResponse));
                                            CurrentClient.RemoveClient(wxclient.myclient);
                                        }
                                        else
                                        {
                                            LogHelper.showLog(txtLog, (DateTime.Now.ToString("HH:mm:ss") + "向微信端" + wxclient.GetStrRemoteEndPoint + "回送失败:" + strLastCommanResponse));
                                            //LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "向微信端" + wxclient.GetStrRemoteEndPoint + "回送失败:" + strLastCommanResponse);
                                            CurrentClient.RemoveClient(wxclient.myclient);
                                        }
                                    }
                                    catch
                                    {
                                        CurrentClient.RemoveClient(wxclient.myclient);
                                        //LogHelper.showLog(txtLog, (DateTime.Now.ToString("HH:mm:ss") + "向微信端" + wxclient.GetStrRemoteEndPoint + "回送失败:" + strLastCommanResponse));
                                        LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "向微信端" + wxclient.GetStrRemoteEndPoint + "回送失败:" + strLastCommanResponse);
                                    }
                                }
                                dev.LastCommanResponse = strLastCommanResponse;
                                bool isAdded = CurrentClient.AddClient(dev);
                                CurrentClient.MultiSendOffLine();
                            }
                            else if (e.Datagram[9] == 0x01)        //心跳
                            {
                                #region 将心跳信息存入数据库
                                byte[] byte_list     = HexStringToByte(str_mac);
                                byte[] new_byte_list = new byte[byte_list.Length];
                                var    new_mac       = string.Empty;
                                for (int i = 0; i < byte_list.Length; i++)
                                {
                                    byte new_byte = (byte)(byte_list[i] - 0x30);
                                    new_mac += new_byte.ToString();
                                }
                                var commend = Converts.GetTPandMac(e.Datagram);
                                LogHelper.SaveHeart(new_mac, commend);
                                var sql = string.Format(@"
declare @cou int
select @cou =count(id)  from WP_设备心跳记录表 where  mac='{0}'
if @cou =0
begin
insert into WP_设备心跳记录表(mac,command) values('{0}','{1}')
end
else
begin
update WP_设备心跳记录表 set  command = '{1}',createtime = getdate() where mac = '{0}'
end", new_mac, commend);
                                try
                                {
                                    var b = DbHelperSQL.ExecuteSql(sql);
                                }
                                catch (Exception ex2)
                                {
                                    LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + ex2.Message);
                                }
                                #endregion

                                /*
                                 * dev.LastBeat = ByteToHexString(e.Datagram);   //服务器回应心跳包
                                 * //LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "来自设备:" + dev.GetStrRemoteEndPoint + ";收到心跳" + dev.LastBeat);
                                 * byte[] responsebeats;
                                 * string strres;
                                 * responsebeats = GetRightBeatsResponse(mac, true);
                                 * strres = ByteToHexString(responsebeats);
                                 * //LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "会送命令:" + responsebeats.ToString() + ";收到心跳" + dev.LastBeat);
                                 * if (CheckDataGram(LastRes))
                                 * {
                                 * //LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "验证通过情况:" + responsebeats.ToString() + ";收到心跳" + dev.LastBeat);
                                 * //dev.SendMsg(responsebeats);
                                 * //LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "向" + str_mac + "发送响应心跳:" + strres);
                                 * }
                                 */
                                bool isAdded = CurrentClient.AddClientWithOutCmd(dev);
                                CurrentClient.MultiSendOffLine();
                            }
                            //bool isAdded = CurrentClient.AddClient(dev);
                            //CurrentClient.MultiSendOffLine();
                        }
                    }
                    catch (Exception e2)
                    {
                        LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + ";" + e2.Message);
                    }
                    #endregion
                }
                break;

                //微信过来的,发命令
                case 02:
                {
                    //mac_list.Add(e.Datagram);
                    //if (open)
                    //{

                    //}
                    try
                    {
                        #region 客户端发送的控制数据
                        //open = false;
                        LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "客户端:" + e.TcpClient.Client.RemoteEndPoint.ToString() + "的原始命令:" + ByteToHexString(e.Datagram));
                        LogHelper.showLog(txtLog, (DateTime.Now.ToString("HH:mm:ss") + "客户端:" + e.TcpClient.Client.RemoteEndPoint.ToString() + "的原始命令:" + ByteToHexString(e.Datagram)));
                        Array.Copy(e.Datagram, 1, mac, 0, 15);

                        //mac_list.RemoveAt(0);
                        str_mac = Converts.GetTPandMac(mac);
                        LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + "MAC:" + str_mac);
                        WeiXinClient wxclt = new WeiXinClient();
                        wxclt.sendnum    = 0;
                        wxclt.receivenum = 0;
                        wxclt.myclient   = e.TcpClient;
                        wxclt.StrMac     = str_mac;
                        wxclt.command    = ByteToHexString(e.Datagram);
                        wxclt.typeid     = 1;
                        CurrentClient.AddClient(wxclt);
                        DeviceClient dev = CurrentClient[str_mac, 2] as DeviceClient;
                        LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + " MAC:" + str_mac);
                        if (dev != null)
                        {        //拆命令发送
                            LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + " dev不为空:" + str_mac);
                            LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + " 命令长度:" + e.Datagram.Length);

                            byte[] box_number = new byte[e.Datagram.Length - 16];

                            Array.Copy(e.Datagram, 16, box_number, 0, e.Datagram.Length - 16);
                            LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + " boxnumber:" + Converts.GetTPandMac(box_number));
                            int sendnum = 0;
                            #region 一次性
                            byte[] byteCommand = GetSendMulty(mac, box_number);
                            string sss         = ByteToHexString(byteCommand);
                            LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + " sss:" + sss);
                            try
                            {
                                Thread.Sleep(750);
                                LogHelper.WriteLog(DateTime.Now.ToString("HH:mm:ss") + " byteCommand:" + byteCommand);
                                dev.SendMsg(byteCommand);

                                sendnum++;
                                break;
                            }
                            catch (Exception err)
                            {
                                LogHelper.WriteLog("发送指令异常:" + err.Message + "错误发生位置为" + err.StackTrace);
                                LogHelper.showLog(txtLog, ("发送指令异常:" + err.Message + "错误发生位置为" + err.StackTrace));
                            }
                            #endregion
                            wxclt.sendnum = sendnum;
                            CurrentClient.AddClient(wxclt);
                        }
                        #endregion
                    }
                    catch (Exception ex)
                    {
                        LogHelper.WriteLog("发送指令异常:" + ex.Message + "错误发生位置为" + ex.StackTrace);
                    }
                }

                break;

                default:
                    break;
                }
                Control.CheckForIllegalCrossThreadCalls = false;
                label1.Text = CurrentClient.GetDevCount().ToString();
                label3.Text = CurrentClient.GetWeiXinNumber().ToString();
                //try
                //{

                //}
                //catch (Exception ex)
                //{
                //    string messages = string.Empty;
                //    messages = "捕获异常" + ex.Message + "错误发生位置为" + ex.StackTrace;
                //    //LogHelper.WriteLog(messages);
                //    //LogHelper.showLog(txtLog, messages);
                //}
                //finally
                //{

                //}
            }
        }
示例#23
0
        void server_PlaintextReceived(object sender, TcpDatagramReceivedEventArgs <string> e)
        {
            IPEndPoint ClientIP = (IPEndPoint)e.TcpClient.Client.RemoteEndPoint;

            try
            {
                if (e.TcpClient == clientRobot)
                {
                    LogRefresh(ipC.iPConfig[ClientIP.Address.ToString()] + e.TcpClient.Client.RemoteEndPoint.ToString() + "  has sent messages:", e.Datagram, dic["测试命令模式"]);
                    switch (rd.receiveCommand(e.Datagram))
                    {
                    case Params.Robot2PCCommandType.Connection:
                        MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.Active), dic["暂停模式选择"]);
                        dic["样件下半段下料完成反馈"]   = false;
                        dic["Rotbot就绪"]      = false;
                        dic["样件架样件夹持反馈"]     = false;
                        dic["样件上半段下料至夹取位反馈"] = false;
                        dic["样件下半段下料至夹取位反馈"] = false;
                        dic["从样件架接料并夹持"]     = false;
                        dic["样件上半段下料至夹取位"]   = false;
                        dic["样件下半段下料至夹取位"]   = false;
                        dic["样件下半段下料至夹取位"]   = false;
                        dic["样件下半段下料完成反馈"]   = false;
                        dic["试验数据保存完成"]      = false;
                        dic["试验完毕"]          = false;
                        dic["U型架移动到位并停止"]    = false;
                        dic["拉断后U型架抬升完成"]    = false;
                        dic["开始试验"]          = false;
                        dic["拉力机准备就绪"]       = false;
                        dic["样件上半段夹取位到达"]    = false;
                        dic["样件下半段夹取位到达"]    = false;
                        dic["U型架当前高度获得"]     = false;
                        dic["U型架正在下降"]       = false;
                        dic["U型架下降到位"]       = false;
                        positionFlag         = 0;
                        rd.AxisValue         = "0.0";
                        i = 0;
                        break;

                    case Params.Robot2PCCommandType.Ready:
                        dic["Rotbot就绪"] = true;

                        //MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.ZQ1B));
                        break;

                    case Params.Robot2PCCommandType.ZQ1F:
                        dic["样件架样件夹持反馈"] = true;
                        if (dic["样件架样件夹持反馈"])
                        {
                            MsgSend(clientPLC, pd.createCommand(Params.PC2PLCCommandType.Finish), dic["暂停模式选择"]);
                            MsgSend(clientCoder, ma.CommandAnalysis(Params.PC2CoderCommandType.TopCaliperClamp), dic["暂停模式选择"]);
                            dic["U型架上升命令触发"] = false;
                            dic["U型架下降命令触发"] = false;
                            dic["U型架升降到位"]   = false;
                        }
                        break;

                    case Params.Robot2PCCommandType.FeedBack1:
                        Thread.Sleep(20000);
                        dic["U型架升降到位"] = true;
                        MsgSend(clientCoder, ma.CommandAnalysis(Params.PC2CoderCommandType.LowCaliperClamp), dic["暂停模式选择"]);
                        break;

                    case Params.Robot2PCCommandType.DW1:
                        dic["样件上半段夹取位到达"] = true;
                        break;

                    case Params.Robot2PCCommandType.DW2:
                        dic["样件下半段夹取位到达"] = true;
                        break;

                    case Params.Robot2PCCommandType.ZQ2F:
                        dic["样件上半段下料至夹取位反馈"] = true;
                        break;

                    case Params.Robot2PCCommandType.ZQ3F:
                        dic["样件下半段下料至夹取位反馈"] = true;
                        break;

                    case Params.Robot2PCCommandType.FeedBack3:
                        dic["样件下半段下料完成反馈"] = true;
                        break;

                    case Params.Robot2PCCommandType.Finish:
                        dic["全部下料完成"] = true;
                        if (dic["全部下料完成"])
                        {
                            MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.Break), dic["暂停模式选择"]);
                        }
                        if (fracturePositionResult != "中间")
                        {
                            if (fracturePositionResult == "断于下钳口")
                            {
                                MessageBox.Show("样件断在下钳口,请手动操作机器人将下半段下料!");
                            }
                            if (fracturePositionResult == "断于上钳口")
                            {
                                MessageBox.Show("样件断在上钳口,请手动操作机器人将上半段下料!");
                            }
                        }
                        break;

                    case Params.Robot2PCCommandType.Error:
                        LogRefresh(ipC.iPConfig[ClientIP.Address.ToString()] + e.TcpClient.Client.RemoteEndPoint.ToString() + "  has sent messages: " + e.Datagram, " [Receive Unvalid Data!Please Check the Robot's Status]", dic["测试命令模式"]);
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                LogRefresh(ipC.iPConfig[ClientIP.Address.ToString()] + e.TcpClient.Client.RemoteEndPoint.ToString() + " has some errors:", ex.Message, dic["测试命令模式"]);
            }
        }
示例#24
0
        void server_DatagramReceived(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
        {
            IPEndPoint ClientIP = (IPEndPoint)e.TcpClient.Client.RemoteEndPoint;

            LogRefresh(ipC.iPConfig[ClientIP.Address.ToString()] + "  has sent messages:", CommonFunction.byteToHexString(e.Datagram), dic["测试命令模式"]);
            try
            {
                #region 样架PLC端
                if (e.TcpClient == clientPLC)
                {
                    LogRefresh(ipC.iPConfig[ClientIP.Address.ToString()] + "  has sent messages:", CommonFunction.byteToHexString(e.Datagram), dic["测试命令模式"]);
                    switch (pd.receiveCommand(e.Datagram))
                    {
                    case Params.PLC2PCCommandType.Ready:
                        dic["上夹钳闭合"]  = false;
                        dic["下夹钳闭合"]  = false;
                        dic["批次试验完成"] = false;
                        MsgSend(clientPLC, pd.createCommand(Params.PC2PLCCommandType.Active), dic["暂停模式选择"]);
                        tsbAdd_Click(null, null);
                        break;

                    case Params.PLC2PCCommandType.Operation:
                        break;

                    case Params.PLC2PCCommandType.DataSend:
                        dic["上夹钳闭合"]   = false;
                        dic["下夹钳闭合"]   = false;
                        dic["批次试验完成"]  = false;
                        SampleDiameter = seDiameter.Value;
                        SampleLength   = seLength.Value;
                        MsgSend(clientPLC, pd.createCommand(Params.PC2PLCCommandType.DataFeedBack), dic["暂停模式选择"]);
                        break;

                    case Params.PLC2PCCommandType.CatchSample:
                        MsgSend(clientPLC, pd.createCommand(Params.PC2PLCCommandType.WaitKey), dic["暂停模式选择"]);
                        if (dic["Robot就绪"] && !dic["从样件架接料并夹持"] && dic["U型架升降到位"] && !dic["批次试验完毕"])
                        {
                            MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.ZQ1B), dic["暂停模式选择"]);
                            BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new Object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.CatchSample) });
                            dic["从样件架接料并夹持"] = true;
                        }
                        break;

                    case Params.PLC2PCCommandType.Complete:
                        dic["批次试验完毕"] = true;     //该批次实验完毕
                        break;

                    case Params.PLC2PCCommandType.UrgencyStop:
                        break;

                    case Params.PLC2PCCommandType.ServoMotorError:
                        break;

                    case Params.PLC2PCCommandType.MeasuerRrror:
                        break;

                    case Params.PLC2PCCommandType.Error:
                        LogRefresh(ipC.iPConfig[ClientIP.Address.ToString()] + e.TcpClient.Client.RemoteEndPoint.ToString() + "  has sent messages: " + CommonFunction.byteToHexString(e.Datagram), " [Receive Unvalid Data!Please Check the PLC's Status]", dic["测试命令模式"]);
                        break;

                    case Params.PLC2PCCommandType.CoderER:
                        dic["有急停信号"] = true;
                        LogRefresh(ipC.iPConfig[ClientIP.Address.ToString()] + e.TcpClient.Client.RemoteEndPoint.ToString() + "  has sent messages: " + CommonFunction.byteToHexString(e.Datagram), " [样件架触发急停!请检查相关设备!]", false);
                        break;

                    case Params.PLC2PCCommandType.DevER:
                        dic["有急停信号"] = true;
                        LogRefresh(ipC.iPConfig[ClientIP.Address.ToString()] + e.TcpClient.Client.RemoteEndPoint.ToString() + "  has sent messages: " + CommonFunction.byteToHexString(e.Datagram), " [伺服电机触发急停!请检查相关设备!]", false);
                        break;

                    case Params.PLC2PCCommandType.IntrusionDetectionER:
                        dic["有急停信号"] = true;
                        LogRefresh(ipC.iPConfig[ClientIP.Address.ToString()] + e.TcpClient.Client.RemoteEndPoint.ToString() + "  has sent messages: " + CommonFunction.byteToHexString(e.Datagram), " [入侵检测触发急停!请检查相关设备!]", false);
                        break;

                    case Params.PLC2PCCommandType.RobotER:
                        dic["有急停信号"] = true;
                        LogRefresh(ipC.iPConfig[ClientIP.Address.ToString()] + e.TcpClient.Client.RemoteEndPoint.ToString() + "  has sent messages: " + CommonFunction.byteToHexString(e.Datagram), " [机器人触发急停!请检查相关设备!]", false);
                        break;
                    }
                }
                #endregion

                #region 拉力机PLC端
                else if (e.TcpClient == clientCoder)
                {
                    if (dic["系统开始运行"]) //系统开始运行
                    {
                        ss = ma.StatusAnalysis(e);
                        BeginInvoke(new UpdateDisplayDelegate(HeightDisplay), new object[] { ss.HeightValue.ToString() });
                        if (ss.HeightValue >= 1200)
                        {
                            MouseMovementControl(Params.MouseMovementType.ToStop, dic["暂停模式选择"]);
                            MessageBox.Show("拉力机移动到达上限位,请确认系统状态!");
                        }
                        if (dic["开始试验"] && dic["试验完毕"] && dic["拉断后U型架抬升完成"])
                        {
                            if (positionFlag == 1)
                            {
                                MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.M1), dic["暂停模式选择"]);
                                Thread.Sleep(1000);
                                MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.ZQ3B), dic["暂停模式选择"]);
                                BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new Object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.Zq3b) });
                            }
                            else if (positionFlag == 2)
                            {
                                MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.M2), dic["暂停模式选择"]);
                                Thread.Sleep(1000);
                                MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.ZQ3B), dic["暂停模式选择"]);
                                BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new Object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.Zq3b) });
                            }
                        }
                        if (!dic["样件上半段下料至夹取位"] && dic["开始试验"] && dic["试验完毕"] && dic["拉断后U型架抬升完成"]) //获取上升高度,命令机器人抓取
                        {
                            if ((positionFlag == 1 && dic["样件下半段下料至夹取位反馈"]) || positionFlag == 3)
                            {
                                if (!dic["U型架正在下降"])
                                {
                                    if (!ss.isPlatformMoving)
                                    {
                                        MouseMovementControl(Params.MouseMovementType.ToDown, dic["暂停模式选择"]); BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new Object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.Down) });
                                    }
                                    else
                                    {
                                        dic["U型架正在下降"] = true;
                                    }
                                }
                                for (; ss.HeightValue < 800;)
                                {
                                    MouseMovementControl(Params.MouseMovementType.ToStop, dic["暂停模式选择"]);
                                    //tsbRead_Click(null, null);
                                    dic["U型架下降到位"] = true;
                                    break;
                                }
                            }

                            if (dic["U型架下降到位"])
                            {
                                if (positionFlag != 0)
                                {
                                    if (positionFlag == 1 || positionFlag == 3)
                                    {
                                        rd.AxisValue = (ss.HeightValue - float.Parse(seZBHeight.Value.ToString())).ToString();
                                        MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.ZBAXIS), dic["暂停模式选择"]);
                                        Thread.Sleep(1000);
                                        MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.ZQ2B), dic["暂停模式选择"]);
                                        BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.Zq2b) });
                                    }
                                    dic["样件上半段下料至夹取位"] = true;
                                }
                                else
                                {
                                    LogRefresh("未能正确获得断裂位置!", null, dic["测试命令模式"]);
                                    MessageBox.Show("未能正确获得断裂位置!");
                                }
                            }
                        }
                        else if (!dic["放入拉力机并返回反馈"] && !dic["拉力机准备就绪"]) //初始化
                        {
                            #region 初始化逻辑修改:防止上下夹钳先后打开造成死机的情况发生,修改为先打开下夹钳,然后下降U型台,最后打开上夹钳的过程
                            //调整下夹钳
                            if (ss.isLowCaliperClamp)//下夹钳关闭
                            {
                                MsgSend(clientCoder, ma.CommandAnalysis(Params.PC2CoderCommandType.LowCaliperOpen), dic["暂停模式选择"]);
                            }
                            if (!ss.isLowCaliperClamp)
                            {
                                dic["下夹钳打开"] = true;//下夹钳打开
                            }

                            //调整上台高度
                            if ((ss.HeightValue > 805) || (ss.HeightValue < 795))
                            {
                                if (dic["下夹钳打开"])             //下夹钳已打开完成
                                {
                                    if (ss.HeightValue > 805) //下降
                                    {
                                        if (!dic["U型架上升命令触发"])
                                        {
                                            if (!ss.isPlatformMoving)
                                            {
                                                MouseMovementControl(Params.MouseMovementType.ToDown, dic["暂停模式选择"]);
                                            }

                                            else
                                            {
                                                dic["U型架上升命令触发"] = true;
                                            }
                                        }
                                    }
                                    if (ss.HeightValue < 795)//上升
                                    {
                                        if (!dic["U型架下降命令触发"])
                                        {
                                            if (!ss.isPlatformMoving)
                                            {
                                                MouseMovementControl(Params.MouseMovementType.ToUp, dic["暂停模式选择"]);
                                            }
                                            else
                                            {
                                                dic["U型架下降命令触发"] = true;
                                            }
                                        }
                                    }
                                }
                            }
                            else
                            {
                                MouseMovementControl(Params.MouseMovementType.ToStop, dic["暂停模式选择"]);
                                dic["U型架升降到位"] = true;
                            }

                            //调整上夹钳
                            if (ss.isTopCaliperClamp && dic["下夹钳打开"] && dic["U型架升降到位"])
                            {
                                MsgSend(clientCoder, ma.CommandAnalysis(Params.PC2CoderCommandType.TopCaliperOpen), dic["暂停模式选择"]);
                            }
                            if (!ss.isTopCaliperClamp)
                            {
                                dic["上夹钳打开"] = true;
                            }


                            //全部调整完毕以后,执行后续过程
                            if (dic["上夹钳打开"] && dic["下夹钳打开"] && dic["U型架升降到位"])
                            {
                                MsgSend(clientPLC, pd.createCommand(Params.PC2PLCCommandType.CatchSampleRequest), dic["暂停模式选择"]);
                                tsbAdd_Click(null, null);
                                dic["拉力机准备就绪"] = true;
                            }
                            #endregion
                        }
                        else if (dic["样件架样件夹持反馈"] && !dic["拉断后U型架抬升完成"]) //机器人抓取样件完成,送入拉力机位置
                        {
                            if (ss.isTopCaliperClamp)
                            {
                                Thread.Sleep(3000);
                                MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.Return1), dic["暂停模式选择"]);
                                BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.Return1) });
                            }    //上夹钳闭合,机器人退回
                            else
                            {
                                MsgSend(clientCoder, ma.CommandAnalysis(Params.PC2CoderCommandType.TopCaliperClamp), dic["暂停模式选择"]);
                                BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.ClampClosing) });
                            }

                            if (dic["放入拉力机并返回反馈"])//机器人放入完成
                            {
                                if (!ss.isLowCaliperClamp)
                                {
                                    MsgSend(clientCoder, ma.CommandAnalysis(Params.PC2CoderCommandType.LowCaliperClamp), dic["暂停模式选择"]);
                                    BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.ClampClosing) });
                                }

                                if (ss.isLowCaliperClamp && ss.isTopCaliperClamp && !dic["开始试验"]) //开始试验
                                {
                                    if (Properties.Settings.Default.类别 == "1")
                                    {
                                        //试验版本
                                        MouseMovementControl(Params.MouseMovementType.ToStart, dic["暂停模式选择"]);
                                        if (ss.isPlatformMoving)
                                        {
                                            dic["开始试验"] = true;
                                            BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.Test) });
                                        }
                                    }
                                    else
                                    {
                                        //模拟测试版本
                                        if (!dic["开始试验"])
                                        {
                                            MouseMovementControl(Params.MouseMovementType.ToUp, dic["暂停模式选择"]);
                                            BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.Test) });
                                        }

                                        if (ss.isPlatformMoving)
                                        {
                                            dic["开始试验"] = true;
                                            if (ss.HeightValue > 830)
                                            {
                                                MouseMovementControl(Params.MouseMovementType.ToStop, dic["暂停模式选择"]);
                                            }
                                        }
                                    }
                                }
                                if (dic["开始试验"])
                                {
                                    if (ss.isPlatformMoving)
                                    {
                                        dic["U型架正在移动"] = true;
                                    }
                                    else
                                    {
                                        i++;
                                        if (i > 5)
                                        {
                                            dic["U型架移动到位并停止"] = true;
                                        }
                                        BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.TestFinished) });
                                    }
                                }
                            }
                            if (dic["放入拉力机并返回反馈"] && dic["U型架正在移动"] && dic["U型架移动到位并停止"])//机器人放入样件完成,已经移动且停止(试验完毕)
                            {
                                if (!dic["U型架当前高度获得"])
                                {
                                    V_Height         = ss.HeightValue;
                                    dic["U型架当前高度获得"] = true;
                                }
                                dic["试验完毕"] = true;
                                if (Properties.Settings.Default.类别 == "1")
                                {
                                    MouseMovementControl(Params.MouseMovementType.ToSave, dic["暂停模式选择"]);
                                    Thread.Sleep(2000);
                                    tsbRead_Click(null, null);
                                    if (dic["试验数据保存完成"])
                                    {
                                        fracturePositionResult = dt.Rows[0][53].ToString();//“需要根据数据库文件就行索引修改”
                                        switch (fracturePositionResult)
                                        {
                                        case "中间":
                                            positionFlag = 1;
                                            break;

                                        case "断于下钳口":
                                            positionFlag = 2;
                                            break;

                                        case "断于上钳口":
                                            positionFlag = 3;
                                            break;
                                        }
                                    }
                                }
                                dic["拉断后U型架抬升完成"] = true;
                            }
                        }

                        if (dic["样件上半段下料至夹取位反馈"] && !ss.isTopCaliperClamp) //机器人取出上断裂样件后返回
                        {
                            MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.Return2), dic["暂停模式选择"]);
                            BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.Return2) });
                        }

                        if (dic["样件下半段下料至夹取位反馈"] && !ss.isLowCaliperClamp) //机器人取出下断裂样件后返回
                        {
                            MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.Return3), dic["暂停模式选择"]);
                            BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.Return3) });
                        }
                        if (dic["样件上半段夹取位到达"])
                        {
                            MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.JQ1), dic["暂停模式选择"]);
                            BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.JQ1) });
                            if (ss.isTopCaliperClamp)
                            {
                                Thread.Sleep(10000);
                                MsgSend(clientCoder, ma.CommandAnalysis(Params.PC2CoderCommandType.TopCaliperOpen), dic["暂停模式选择"]);
                            }
                        }
                        if (dic["样件下半段夹取位到达"])
                        {
                            MsgSend(clientRobot, rd.createCommand(Params.PC2RobotCommandType.JQ2), dic["暂停模式选择"]);
                            BeginInvoke(new CheckStateControlDelegate(CheckStateControl), new object[] { PlatformStatusClassifier.StatusClassifier(Params.ProcessName.JQ2) });
                            if (ss.isLowCaliperClamp)
                            {
                                Thread.Sleep(10000);
                                MsgSend(clientCoder, ma.CommandAnalysis(Params.PC2CoderCommandType.LowCaliperOpen), dic["暂停模式选择"]);
                            }
                        }
                    }
                }
                #endregion
            }
            catch (Exception ex)
            {
                LogRefresh(ipC.iPConfig[ClientIP.Address.ToString()] + e.TcpClient.Client.RemoteEndPoint.ToString() + " has some errors:", ex.Message, dic["测试命令模式"]);
            }
        }
示例#25
0
 void __server_PlaintextReceived(object sender, TcpDatagramReceivedEventArgs<string> e)
 {
     this.CommandPacketUnpack(e.remoteEndPoint,e.Datagram);
     //throw new NotImplementedException();
 }
 private void OnDataReceived(object sender, TcpDatagramReceivedEventArgs<byte[]> e)
 {
     byte[] content = e.datagram;
     string str = System.Text.Encoding.Default.GetString(content);
     //Encoding encoding = Encoding.UTF8;
     //string contentstring = encoding.GetString(content, 0, content.Length);
     this.receivetext = str;
     //byte[] sendbackdata = new byte[] { 0xeb, 0x90 };
 }
示例#27
0
        private void PlainTextReceived(object sender, TcpDatagramReceivedEventArgs <string> e)
        {
            string cmd = e.Datagram;

            if (cmd.IndexOf(NetWorkCommand.QUIT) >= 0)
            {
                Log(string.Format(CultureInfo.InvariantCulture, "Received:{0}", cmd));
                this.Close();
            }
            else if (cmd.IndexOf(NetWorkCommand.DRAW) >= 0)
            {
                emptySignature = false;
                String[] cmds = cmd.Split(NetWorkCommand.CMD.ToArray());
                foreach (String c in cmds)
                {
                    String[] arg = c.Split(':');
                    if (arg.Length == 5)
                    {
                        DrawLine(int.Parse(arg[1]), int.Parse(arg[2]), int.Parse(arg[3]), int.Parse(arg[4]));
                    }
                }
            }
            else if (cmd.IndexOf(NetWorkCommand.STYLUS_ADD) >= 0)
            {
                emptySignature = false;
                String[] cmds = cmd.Split(NetWorkCommand.CMD.ToArray());
                foreach (String c in cmds)
                {
                    String[] arg = c.Split(':');
                    int      lX = 0, lY = 0;
                    int      scw = 0, sch = 0, ssw = 0, ssh = 0;
                    foreach (var ps in arg)
                    {
                        String[] p = ps.Split(',');
                        if (p.Length == 5)
                        {
                            //接收签名设备屏幕信息
                            scw = int.Parse(p[1]);
                            sch = int.Parse(p[2]);
                            ssw = int.Parse(p[3]);
                            ssh = int.Parse(p[4]);
                        }

                        if (p.Length == 3)
                        {
                            lX = lX == 0? (int)double.Parse(p[0]) : lX;
                            lY = lY == 0 ? (int)double.Parse(p[1]) : lY;
                            DrawLine(scw, sch, ssw, ssh, lX, lY, (int)double.Parse(p[0]), (int)double.Parse(p[1]));
                            lX = (int)double.Parse(p[0]);
                            lY = (int)double.Parse(p[1]);
                        }
                    }
                }
            }
            else if (cmd.IndexOf(NetWorkCommand.CLEAN) >= 0)
            {
                Log(string.Format(CultureInfo.InvariantCulture, "Received:{0}", cmd));
                emptySignature = true;
                bitmap         = new Bitmap(picSignature.Width, picSignature.Height, picSignature.CreateGraphics());
                Graphics.FromImage(bitmap).Clear(Color.Transparent);
                picSignature.Refresh();
            }
        }
示例#28
0
        /// <summary>
        /// 服务器接受客户端消息时执行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e">接受数据参数-Tcpclient,byte[]</param>
        static void server_DatagramReceived(object sender, TcpDatagramReceivedEventArgs <byte[]> e)
        {
            //TODO
            int headData = DataHandleHelper.getHeadData(e.Datagram);

            byte[] receviceData = e.Datagram;
            string username;
            bool   isExist;
            int    battleCode;

            switch (headData)
            {
            case CommandParam.LOGIN_REQUEST:
                //登陆请求
                username = DataHandleHelper.getStringParam(receviceData);
                UserInfo userInfo = new UserInfo();
                isExist = ConectMySqldb.queryUserInfoByUserName(username, userInfo);
                if (isExist)
                {
                    if (onLineList.ContainsKey(e.TcpClient) || onLineList.ContainsValue(username))
                    {
                        userInfo = new UserInfo();    //已存在用户或客户端,返回空值
                    }
                    else
                    {
                        onLineList.Add(e.TcpClient, username);
                    }
                }
                else
                {
                    userInfo = new UserInfo();
                }
                //返回数据
                server.Send(e.TcpClient, userInfo, CommandParam.LOGIN_RETURN);
                break;

            case CommandParam.LOADING_REQUEST:
                //载入请求
                username = DataHandleHelper.getStringParam(receviceData);
                ReviewInfo reviewInfo = new ReviewInfo();
                isExist = ConectMySqldb.queryReviewInfoByUserName(username, reviewInfo);
                if (!isExist)
                {
                    reviewInfo = new ReviewInfo();    //不存在,返回空值
                }
                //返回数据
                server.Send(e.TcpClient, reviewInfo, CommandParam.LOAD_RETURN);
                break;

            case CommandParam.MATCH_REQUEST:
                //匹配请求

                MatchInfo matchInfo = new MatchInfo();
                if (linelist.Count == 0)
                {
                    linelist.Add(e.TcpClient);
                    matchInfo.isMatch    = 0;
                    matchInfo.battleCode = -1;
                }
                else if (linelist.Count == 1)
                {
                    if (linelist.Contains(e.TcpClient))
                    {
                        matchInfo.isMatch    = 0;
                        matchInfo.battleCode = -1;
                    }
                    else
                    {
                        TcpClient emeny = linelist.ElementAt(0);
                        linelist.Remove(emeny);    //移除第一个匹配的元素
                        TcpClient[] battle = new TcpClient[] { emeny, e.TcpClient };
                        battleList.Add(battle);
                        matchInfo.isMatch    = 1;
                        matchInfo.battleCode = battleList.IndexOf(battle);    //在对战列表的位置
                    }
                }
                else
                {
                    matchInfo.isMatch    = 0;
                    matchInfo.battleCode = -1;
                }
                //返回数据
                server.Send(e.TcpClient, matchInfo, CommandParam.MATCH_RETURN);
                break;

            case CommandParam.BATTLE_REQUEST:
                //战斗数据交换
                battleCode = DataHandleHelper.getIntParam(receviceData);
                BattleInfo battleInfo = new BattleInfo();
                battleInfo.ReadByBytes(receviceData);

                if (battleCode < 0)
                {
                    return;    //找不到战斗列表
                }
                else
                {
                    foreach (var p in battleList.ElementAt(battleCode))
                    {
                        if (p != e.TcpClient)
                        {
                            TcpClient target = p;
                            battleInfo.setBattelCode(battleCode);
                            server.Send(target, battleInfo, CommandParam.BATTLE_RETURN);
                        }
                    }
                }
                break;

            case CommandParam.UPDATE_REQUEST:
                //更新数据
                ReviewInfo updatereviewInfo = new ReviewInfo();
                updatereviewInfo.ReadByBytes(receviceData);
                UpdateInfo updateInfo = new UpdateInfo();
                bool       isUpdate   = ConectMySqldb.updateReviewInfo(updatereviewInfo);
                if (isUpdate)
                {
                    updateInfo.isUpdate = 1;
                }
                else
                {
                    updateInfo.isUpdate = 0;
                }
                //返回数据
                server.Send(e.TcpClient, updateInfo, CommandParam.UPDATE_RETURN);
                break;

            case CommandParam.FINSH_REQUEST:
                battleCode = DataHandleHelper.getIntParam(receviceData);
                if (battleList.ElementAt(battleCode) != null)
                {
                    battleList.RemoveAt(battleCode);
                }
                server.Send(e.TcpClient, "Gamerover");
                break;

            default:
                server.Send(e.TcpClient, "参数错误");
                break;
            }
        }
示例#29
0
        void server_DatagramReceived(object sender, TcpDatagramReceivedEventArgs<byte[]> e)
        {
            this.server.Send(e.remoteEndPoint,e.Datagram);

            //异步处理,但别用e中的元素,因为可能其会失效
            //MethodInvoker eh = new MethodInvoker(delegate {
            //    Thread.Sleep(3000);
            //    MessageBox.Show("MethodInvoker");
            //});

            //eh.BeginInvoke(null, null, null, null);

            this.BeginInvoke(new MethodInvoker(delegate
            {
                this.listBox1.Items.Add("Server Thread=" + Thread.CurrentThread.ManagedThreadId + " : Rev " + e.remoteEndPoint + "  " + Encoding.UTF8.GetString(e.Datagram));
                this.listBox1.SelectedIndex = this.listBox1.Items.Count - 1;
            }));
            //throw new NotImplementedException();
        }
        private static void Server_PlaintextReceived(object sender, TcpDatagramReceivedEventArgs <string> e)
        {
            Console.WriteLine($"recv from { e.TcpClient.Client.RemoteEndPoint.ToString()}: {e.Datagram}");
            Logger.Custom("log/", $"recv from { e.TcpClient.Client.RemoteEndPoint.ToString()}: {e.Datagram}");

            #region 指令正确时
            if (e.Datagram.Length == 10)
            {
                #region【1】定义变量
                int index;
                #endregion

                #region【2】数据处理
                try
                {
                    int.TryParse(e.Datagram.Substring(5, 3), out index);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Logger.Custom("log/", $"Data Received from { e.TcpClient.Client.RemoteEndPoint.ToString()} exception:{ex.Message}");
                    byte[] msg = Encoding.Default.GetBytes("ErrorRequest!");
                    e.TcpClient.GetStream().Write(msg, 0, msg.Length); // return confirmation
                    return;
                }

                string cmd = e.Datagram.Remove(5, 3);
                #endregion

                #region【3】 处理逻辑
                if (mySer != null && mySer.IsOpen)
                {
                    DealwithCmd(cmd, index, e.TcpClient);
                }
                #endregion

                #region 串口未打开时的异常处理
                else
                {
                    try
                    {
                        mySer.Open();
                        // if (mySer.ReceivedEvent
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        Logger.Custom("log/", $"Serial Opening exception:{ex.Message}");
                    }

                    byte[] msg = Encoding.Default.GetBytes("SerialComunicationError!");
                    e.TcpClient.GetStream().Write(msg, 0, msg.Length); // return confirmation
                }
                #endregion
            }
            #endregion

            #region 指令异常时
            else
            {
                byte[] msg = Encoding.Default.GetBytes("ErrorRequest!-CMDLengthError");

                e.TcpClient.GetStream().Write(msg, 0, msg.Length); // return confirmation
            }
            #endregion
        }