Exemple #1
0
        public void Send()
        {
            PowerDataPack_Main vSendDataPack = new PowerDataPack_Main()
            {
                Head     = 0x5a,
                SN       = 0x01,
                Addition = 0x00,
                CMD      = (byte)PowerDataPack_Send_CommandEnum.Send_GetIPAddress,
                Tail     = 0x5b,
                Length1  = 0x00,
                Length2  = 0x08
            };

            byte[] vDataPackBytes = Helper.NetHelper.StructureToByte(vSendDataPack);
            vSendDataPack.Check = calcCheckCode(vDataPackBytes);
            vDataPackBytes      = Helper.NetHelper.StructureToByte(vSendDataPack);
            Console.WriteLine(BitConverter.ToString(vDataPackBytes));
            m_SocketManager.SendMessage(m_SocketManager.ClientList[0], vDataPackBytes);
        }
Exemple #2
0
        async void asyncProcessorDBSendCMD()
        {
            await Task.Run(() =>
            {
                while (m_IsRun)
                {
                    PowerSendCMDEFModel vModel = new PowerSendCMDEFModel()
                    {
                        IsSend = false
                    };
                    var vSelectResult = m_BasicDBClass_Send.SelectRecordsEx(vModel);
                    foreach (PowerSendCMDEFModel vTempResult in vSelectResult)
                    {
                        //AsyncUserToken vAsyncUserToken = findAsyncUserToken(vTempResult.DianYuanID.Value);
                        AsyncUserToken vAsyncUserToken = null;
                        if (m_SocketManager != null && m_SocketManager.ClientList.Count > 0)
                        {
                            if (m_ClientDict.ContainsKey(vTempResult.DianYuanID))
                            {
                                string vIPAddress = m_ClientDict[vTempResult.DianYuanID];
                                vAsyncUserToken   = m_SocketManager.ClientList.Where(m => m.IPAddress.ToString() == vIPAddress).FirstOrDefault();
                            }
                            //vAsyncUserToken = m_SocketManager.ClientList[0];
                        }
                        if (vAsyncUserToken != null)
                        {
                            byte[] vMac = NetHelper.StringToBytes_MAC(vTempResult.DianYuanID);
                            PowerDataPack_Main vCommandDataPack = new PowerDataPack_Main()
                            {
                                Head     = 0x5a,
                                Tail     = 0x5b,
                                SN       = vTempResult.SN ?? 0x00,// 0x01,//vTempResult.SN ?? 0x00,
                                CMD      = vTempResult.CMD ?? 0x00,
                                Addition = 0x00,
                                MAC1     = vMac[0],
                                MAC2     = vMac[1],
                                MAC3     = vMac[2],
                                MAC4     = vMac[3],
                                MAC5     = vMac[4],
                                MAC6     = vMac[5],
                            };
                            List <byte> vCMDDataPack = Helper.NetHelper.StructureToByte(vCommandDataPack).ToList();
                            if (vTempResult.Data != null)
                            {
                                List <byte> vDataPack = vTempResult.Data.ToList();
                                vCMDDataPack.InsertRange(12, vDataPack);
                            }
                            byte[] vLength = BitConverter.GetBytes((short)vCMDDataPack.Count);
                            //包长度
                            vCMDDataPack[1] = vLength[1];
                            vCMDDataPack[2] = vLength[0];
                            //校验和
                            vCMDDataPack[vCMDDataPack.Count - 2] = calcCheckCode(vCMDDataPack.ToArray());

                            m_SocketManager.SendMessage(vAsyncUserToken, vCMDDataPack.ToArray());
                            string vOutInfo = string.Format("电源发送命令数据包,IP地址({0}):{1}", vAsyncUserToken.IPAddress.ToString(), BitConverter.ToString(vCMDDataPack.ToArray()));
                            Console.WriteLine(vOutInfo);
                            LogHelper.WriteLog_Debug(typeof(PowerControl), vOutInfo);
                            //更新数据库状态
                            vModel.IsSend = true;
                            vModel.ID     = vTempResult.ID;
                            m_BasicDBClass_Send.UpdateRecord <PowerSendCMDEFModel>(vModel);
                        }
                    }
                    Thread.Sleep(100);
                }
            });
        }