private static readonly object dealLock = new object();            //处理数据锁

        private void _synctcpserver_DataReceived(TCPServerClient client, int head, byte[] buffer, string strdata = null)
        {
            try
            {
                DeviceData data = new DeviceData(buffer);

                if (data.Validate)
                {
                    AddListMsg(client, data.OriginalData + "-校验成功");
                    DealData(data);
                }
                else
                {
                    AddListMsg(client, string.Format("{0}-校验失败", data.OriginalData));
                }

                DateTime servertime = DateTime.Now;
                string   rtCodeEnd  = (servertime.Year % 100).ToString("X2");
                rtCodeEnd += (servertime.Month).ToString("X2");
                rtCodeEnd += (servertime.Day).ToString("X2");
                rtCodeEnd += (servertime.Hour).ToString("X2");
                rtCodeEnd += (servertime.Minute).ToString("X2");
                rtCodeEnd += (servertime.Year % 100 ^ servertime.Month ^ servertime.Day ^ servertime.Hour ^ servertime.Minute).ToString("X2");
                rtCodeEnd  = string.Format(rtCode, rtCodeEnd);
                bool suc = client.SendBS(Encoding.ASCII.GetBytes(rtCodeEnd));
                AddListMsg(client, "返回串:" + rtCodeEnd + (suc ? "-发送成功" : "-发送失败"));
            }
            catch (Exception ex)
            {
                AddListMsg(client, string.Format("收到数据异常:{0}", ex.Message));
                LogHelper.Log.Error("接收血糖仪数据失败", ex);
            }
        }
Exemple #2
0
 /// <summary>
 /// Evénement déclenché lorsque des données ont été envoyées avec succès vers un client.
 /// </summary>
 /// <param name="buffer">Octets envoyés</param>
 /// <param name="client">Client à qui les données ont été envoyées</param>
 void iTCPServerDelegate.onTcpSent(byte[] buffer, TCPServerClient client)
 {
     Application.Current.Dispatcher.Invoke(new Action(() =>
     {
         string text = Encoding.UTF8.GetString(buffer);
         LogEcrire("[" + text + "] => envoyé à [" + client.IpAddress + "]");
     }));
 }
 private void _synctcpserver_ShowListMsg(TCPServerClient client, string msg, DateTime time)
 {
     if (client != null)
     {
         AddListMsg(string.Format("{0} [{1}] -> {2}", time.ToString(DateTimeHelper.FormatTimeStr), client.ID, msg));
     }
     else
     {
         AddListMsg(string.Format("{0} -> {1}", time.ToString(DateTimeHelper.FormatTimeStr), msg));
     }
 }
Exemple #4
0
        /// <summary>
        /// Evénement déclenché lorsqu'un client de la liste se déconnecte.
        /// </summary>
        /// <param name="server"></param>
        /// <param name="client"></param>
        void iTCPServerDelegate.OnDisconnect(TcpServer server, TCPServerClient client)
        {
            Application.Current.Dispatcher.Invoke(new Action(() =>
            {
                this.LogEcrire("Client [" + client.IpAddress + "] déconnecté");

                if (_dictClients.ContainsKey(client.IpAddress) == true)
                {
                    _dictClients.Remove(client.IpAddress);
                }
                this.LstClients.ItemsSource = _dictClients.Values;

                this.EnableButtons(true);
            }));
        }
Exemple #5
0
        private void BttnSend_Click(object sender, RoutedEventArgs e)
        {
            // Envoi du texte de TxtMessage au client sélectionné dans la liste:
            if (_serveur != null && this.LstClients.SelectedIndex > -1)
            {
                // Obtention du client:
                string cle = (string)this.LstClients.SelectedItem;
                if (_dictClients.ContainsKey(cle) == true)
                {
                    TCPServerClient client = _dictClients[cle];

                    // Envoi des octets vers le client sélectionné:
                    byte[] data = System.Text.Encoding.UTF8.GetBytes(this.TxtMessage.Text);
                    _serveur.Send(data, client);
                }
            }
        }
Exemple #6
0
        /// <summary>
        /// Evénement déclenché lorsque la connection d'un client est acceptée.
        /// </summary>
        /// <param name="server"></param>
        /// <param name="client"></param>
        void iTCPServerDelegate.OnConnect(TcpServer server, TCPServerClient client)
        {
            Application.Current.Dispatcher.Invoke(new Action(() =>
            {
                this.LogEcrire("Client [" + client.IpAddress + "] connecté");
                if (_dictClients.ContainsKey(client.IpAddress) == true)
                {
                    _dictClients.Remove(client.IpAddress);
                }

                _dictClients.Add(client.IpAddress, client);

                List <string> lst           = _dictClients.Keys.ToList <string>();
                this.LstClients.ItemsSource = lst;

                this.EnableButtons(true);
            }));
        }
Exemple #7
0
        /// <summary>
        /// 发送消息 到指定的客户端
        /// </summary>
        private void btnSend_Click(object sender, EventArgs e)
        {
            TCPServerClient client = lbClientList.SelectedItem as TCPServerClient;

            if (client != null)
            {
                string        data  = txtCmdTxt.Text.Trim();
                List <string> datas = StringPlus.GetStrArray(data, ";");
                if (datas.Count < 2)
                {
                    if (string.IsNullOrWhiteSpace(datas[0]))
                    {
                        UserMessageBox.MessageError("发送内容不能为空!");
                        return;
                    }

                    bool suc = client.SendString(datas[0]);
                    if (!suc)
                    {
                        UserMessageBox.MessageError("发送失败");
                    }
                }
                else
                {
                    if (!TmoShare.IsNumricForInt(datas[0]))
                    {
                        UserMessageBox.MessageError("命令ID必须为整数");
                        return;
                    }

                    bool suc = client.SendCommand(int.Parse(datas[0]), datas[1]);
                    if (!suc)
                    {
                        UserMessageBox.MessageError("发送失败");
                    }
                }
            }
            else
            {
                UserMessageBox.MessageInfo("请选择要发送的客户端");
            }
        }
 /// <summary>
 /// 医生弹框
 /// </summary>
 public static bool SendDocInvoke(string doc_id, int headCode, object paramObjects)
 {
     lock (docLock)
     {
         if (string.IsNullOrWhiteSpace(doc_id))
         {
             return(false);
         }
         if (TCPServer.Instance.Clients.Any(x => x.DocInfo != null && x.DocInfo.doc_id.ToString() == doc_id))
         {
             TCPServerClient client  = TCPServer.Instance.Clients.First(x => x.DocInfo != null && x.DocInfo.doc_id.ToString() == doc_id);
             string          strdata = null;
             if (paramObjects is string)
             {
                 strdata = paramObjects as string;
             }
             byte[] bufferdata = null;
             if (paramObjects is byte[])
             {
                 bufferdata = paramObjects as byte[];
             }
             if (strdata != null)
             {
                 client.SendCommand(headCode, strdata);
             }
             else if (bufferdata != null)
             {
                 client.SendCommand(headCode, bufferdata);
             }
             return(true);
         }
         else
         {
             return(false);
         }
     }
 }
        public void AddListMsg(TCPServerClient client, string msgStr)
        {
            string clientID = client == null ? "-" : client.ID;

            AddListMsg(string.Format("{0} [{1}] -> {2}", DateTimeHelper.TimeNowStr, clientID, msgStr));
        }
Exemple #10
0
 private void Instance_DataReceived(TCPServerClient client, int head, byte[] buffer, string strdata = null)
 {
     if (head == 7777) //心跳包
     {
         string updateStr = CheckUpdate(client.ClientVer);
         if (updateStr != null) //存在新版本客户端
         {
             string upStr = string.Format("发现新版本客户端,请重启软件更新!\n{0}", updateStr);
             client.SendString(upStr);
         }
     }
     else if (head == 102) //生日提醒反馈
     {
         string userid = TCPServerClient.ParserString(buffer);
         Dictionary <string, object> dic = new Dictionary <string, object>();
         dic.Add("birthday_remid_year", DateTime.Now.Year);
         bool suc = Tmo_FakeEntityManager.Instance.SubmitData(DBOperateType.Update, "tmo_userinfo", "user_id",
                                                              userid, dic);
         LogHelper.Log.Info("生日提醒:" + userid + " - " + suc);
     }
     else if (head == 200) //用户登录
     {
         strdata = TCPServerClient.ParserString(buffer);
         if (string.IsNullOrEmpty(strdata))
         {
             client.SendCommand(200, TmoShare.SetValueToJson(new DocInfo()
             {
                 err_Code = -1
             }), false);
         }
         else
         {
             string[] strarray = strdata.Split(';');
             if (strarray.Length < 2)
             {
                 client.SendCommand(200, TmoShare.SetValueToJson(new DocInfo()
                 {
                     err_Code = -1
                 }), false);
             }
             else
             {
                 string  uid = strarray[0];
                 string  pwd = strarray[1];
                 DocInfo doc = tmo_docInfoManager.Instance.CheckDocAuth(uid, pwd);
                 if (doc.err_Code != 0)
                 {
                     client.SendCommand(200, TmoShare.SetValueToJson(doc), false);
                 }
                 else
                 {
                     if (TCPServer.Instance.Clients.Any(x => x.DocInfo != null && x.DocInfo != client.DocInfo && x.DocInfo.doc_id == doc.doc_id)
                         ) //存在 证明登录相同用户
                     {
                         client.SendCommand(200, TmoShare.SetValueToJson(new DocInfo()
                         {
                             err_Code = 3
                         }), false);
                     }
                     else
                     {
                         client.DocInfo = doc;
                         client.SendCommand(200, TmoShare.SetValueToJson(doc), false);
                     }
                 }
             }
         }
     }
 }
Exemple #11
0
        /// <summary>
        /// 收到服务器Tcp数据
        /// </summary>
        /// <param name="client"></param>
        /// <param name="head"></param>
        /// <param name="buffer"></param>
        /// <param name="strdata"></param>
        private void Instance_DataReceived(TCPServerClient client, int head, byte[] buffer, string strdata = null)
        {
            if (head == 0) //文字消息
            {
                DXMessageBox.Show(strdata, "消息提醒", true);
            }
            else if (head == 100)  //电话干预
            {
                if (UCIntervenePhoneResult.IsShow)
                {
                    return;
                }

                strdata = TCPClient.ParserString(buffer);
                List <string> datas = StringPlus.GetStrArray(strdata, ";");
                if (datas.Count == 3)
                {
                    DXMessageBox.alertClick = (sender, e) =>
                    {
                        this.CrossThreadCalls(() =>
                        {
                            UCIntervenePhoneResult ucIntervenePhoneResult = new UCIntervenePhoneResult();
                            ucIntervenePhoneResult.PrimaryKeyValue        = datas[2];
                            DialogResult dr = ucIntervenePhoneResult.ShowDialog();
                            if (dr == DialogResult.OK)
                            {
                                DXMessageBox.Show("电话干预执行成功!", true);
                            }
                            ucIntervenePhoneResult.Dispose();
                        });
                    };
                    DXMessageBox.Show(datas[1], datas[0], true);
                }
            }
            else if (head == 101)  //面访干预
            {
                if (UCInterveneMFResult.IsShow)
                {
                    return;
                }

                strdata = TCPClient.ParserString(buffer);
                List <string> datas = StringPlus.GetStrArray(strdata, ";");
                if (datas.Count == 3)
                {
                    DXMessageBox.alertClick = (sender, e) =>
                    {
                        this.CrossThreadCalls(() =>
                        {
                            UCInterveneMFResult ucIntervenePhoneResult = new UCInterveneMFResult();
                            ucIntervenePhoneResult.PrimaryKeyValue     = datas[2];
                            DialogResult dr = ucIntervenePhoneResult.ShowDialog();
                            if (dr == DialogResult.OK)
                            {
                                DXMessageBox.Show("面访干预执行成功!", true);
                            }
                            ucIntervenePhoneResult.Dispose();
                        });
                    };
                    DXMessageBox.Show(datas[1], datas[0], true);
                }
            }
            else if (head == 102) //生日提醒
            {
                strdata = TCPClient.ParserString(buffer);
                List <string> datas = StringPlus.GetStrArray(strdata, ";"); if (datas.Count == 2)
                {
                    string userid = datas[0];
                    string name   = datas[1];

                    DXMessageBox.alertClick = (sender, e) =>
                    {
                        TCPClient.Instance.SendCommand(102, userid);
                    };
                    DXMessageBox.Show(string.Format("『生日提醒』今天是客户【{0}】    生日!", name), "系统提示", true);
                }
            }
            else if (head == 103)   //消息
            {
                if (frmMain != null && frmMain.Shown)
                {
                    strdata = TCPClient.ParserString(buffer);
                    DXMessageBox.alertClick += (object sender, AlertClickEventArgs e) =>
                    {
                        frmMain.ShowMdiForm <ucPersonPushList>();
                    };
                    DXMessageBox.Show("您有" + strdata + "条消息未读,请点击查看!", true);
                }
            }
        }
        /// <summary>
        /// 调用事件
        /// </summary>
        /// <param name="fun"></param>
        private void InvokeEvent(funCode fun, string docid, string docloginid, object[] args, bool isSuccess, double runSeconds)
        {
            DocInfo doc = null;

            if (!string.IsNullOrWhiteSpace(docid))
            {
                TCPServerClient tsc = TCPServer.Instance.Clients.FirstOrDefault(c => c.DocInfo != null && c.DocInfo.doc_id.ToString() == docid);
                if (tsc != null)
                {
                    doc = tsc.DocInfo;
                }
            }

            if (doc == null && !string.IsNullOrWhiteSpace(docloginid))
            {
                TCPServerClient tsc = TCPServer.Instance.Clients.FirstOrDefault(c => c.DocInfo != null && c.DocInfo.doc_loginid == docloginid);
                if (tsc != null)
                {
                    doc = tsc.DocInfo;
                }
            }

            string docName = "";

            if (doc != null)
            {
                docName = doc.doc_name + "(" + doc.doc_id + ")";
            }

            StringBuilder sbArg = new StringBuilder();

            if (args.Length > 0)
            {
                foreach (object o in args)
                {
                    if (o != null)
                    {
                        if (o is string)
                        {
                            sbArg.Append(o + " ");
                        }
                        else
                        {
                            sbArg.Append(JsonConvert.SerializeObject(o) + " ");
                        }
                    }
                }
            }

            string msg = $"{DateTime.Now.ToFormatTimeStr()} [{getIPAddress()} ] {docName}-> {fun}({(int) fun})-{(isSuccess ? "TRUE" : "ERROR")}-{runSeconds}";

            if (fun != funCode.SaveActionPlan && fun != funCode.InsertAttach && fun != funCode.UpdateAttach)
            {
                LogHelper.Log.Info(msg + ":" + sbArg);
            }
            else
            {
                LogHelper.Log.Info(msg);
            }
            OnInvokedMain?.Invoke(msg);
        }