コード例 #1
0
        public override bool ProcessPacket(byte[] buffer) //处理分完包后的数据,把命令和数据分开,并对命令进行解析
        {
            int deviceID = AuxiliaryMethod.byte4ToInt(buffer, 1);

            //string gateWay = gate.ToString("d8");
            //设备连入
            if (buffer[9] == 0xFF)
            {
                m_asyncSocketUserToken.GateWayId = deviceID;
                m_asyncSocketUserToken.EndPoints = m_asyncSocketUserToken.ConnectSocket.RemoteEndPoint;
                string sql = "UPDATE DeviceInfo SET connectDT='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "',ip='" + m_asyncSocketUserToken.EndPoints.ToString() + "' WHERE DeviceID = '" + deviceID + "' ";
                DbHelperSQL.ExecuteSql(sql);
                //sql = "UPDATE DeviceInfo SET ip='" + m_asyncSocketUserToken.EndPoints.ToString() + "' WHERE DeviceID = '" + deviceID + "' ";
                //DbHelperSQL.ExecuteSql(sql);
                sql = "select * from DevicePing where DeviceID = " + deviceID.ToString();
                //在DevicePing表中添加连接
                if (DbHelperSQL.Execute(sql) == "")
                {
                    sql = "INSERT INTO DevicePing VALUES ('" + deviceID.ToString() + "','" + m_asyncSocketUserToken.EndPoints.ToString() + "','" + DateTime.Now.ToString("yyyy -MM-dd HH:mm:ss.fff") + "') ";
                    // sql = "insert into DevicePing(DeviceID, ip, activeDT) select " + deviceID.ToString() + "," + m_asyncSocketUserToken.EndPoints.ToString() + ",(" + DateTime.Now.ToString("yyyy -MM-dd HH:mm:ss.fff") + ") from DevicePing  where not exists(select * from DevicePing where DeviceID = "+ deviceID.ToString() + ")";
                    DbHelperSQL.ExecuteSql(sql);
                }
                return(true);
            }
            //设备心跳包
            if (buffer[9] == 0xF0)
            {
                m_asyncSocketUserToken.EndPoints = m_asyncSocketUserToken.ConnectSocket.RemoteEndPoint;
                string sql = "UPDATE DevicePing SET activeDT='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "',ip='" + m_asyncSocketUserToken.EndPoints.ToString() + "' WHERE DeviceID = '" + deviceID + "' ";
                DbHelperSQL.ExecuteSql(sql);
                //sql = "UPDATE DevicePing SET ip='" + m_asyncSocketUserToken.EndPoints.ToString() + "' WHERE DeviceID = '" + deviceID + "' ";
                //DbHelperSQL.ExecuteSql(sql);
                return(true);
            }
            //发送消息成功回执信息
            if (buffer[9] == 0x0F)
            {
                int    sendDate = (buffer[10] + buffer[11] * 256);
                string sendtime = Encoding.Default.GetString(buffer, 12, sendDate);
                string sql      = "UPDATE HistSendTable SET SendResult='Send Success!' WHERE SendTime = '" + sendtime.Trim() + "' ";
                DbHelperSQL.ExecuteSql(sql);
                return(true);
            }
            //数据上传操作
            else
            {
                // 创建目录时如果目录已存在,则不会重新创建目录,且不会报错。创建目录时会自动创建路径中各级不存在的目录。
                //通过Path类的Combine方法可以合并路径
                string activeDir = @"D:\HS";
                string newPath   = Path.Combine(activeDir, deviceID.ToString());
                Directory.CreateDirectory(newPath);

                #region      数据
                string sql = "UPDATE DeviceInfo SET activeDT='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "' WHERE DeviceID = '" + deviceID + "' ";
                DbHelperSQL.ExecuteSql(sql);
                //string cmd = "select pathName from DeviceInfo where DeviceID='" + deviceID + "'";
                //string path = DbHelperSQL.Execute(cmd).Trim();
                //switch (buffer[9])
                //{
                //    case 0x5A:
                //        newPath = Path.Combine(newPath, "name.xml");
                //        break;
                //    case 0:
                newPath = Path.Combine(newPath, "lasttime.xml");
                //        break;
                //    case 1:
                //        newPath = Path.Combine(newPath, "mode1.xml");
                //        break;
                //    case 2:
                //        newPath = Path.Combine(newPath, "mode2.xml");
                //        break;
                //    case 3:
                //        newPath = Path.Combine(newPath, "mode3.xml");
                //        break;
                //    case 4:
                //        newPath = Path.Combine(newPath, "mode4.xml");
                //        break;
                //    case 5:
                //        newPath = Path.Combine(newPath, "mode5.xml");
                //        break;
                //    case 6:
                //        newPath = Path.Combine(newPath, "mode6.xml");
                //        break;
                //    case 7:
                //        newPath = Path.Combine(newPath, "mode7.xml");
                //        break;
                //    case 8:
                //        newPath = Path.Combine(newPath, "mode8.xml");
                //        break;
                //    case 9:
                //        newPath = Path.Combine(newPath, "mode9.xml");
                //        break;
                //    case 10:
                //        newPath = Path.Combine(newPath, "mode10.xml");
                //        break;
                //    case 11:
                //        newPath = Path.Combine(newPath, "mode11.xml");
                //        break;
                //    case 12:
                //        newPath = Path.Combine(newPath, "mode12.xml");
                //        break;
                //    case 13:
                //        newPath = Path.Combine(newPath, "mode13.xml");
                //        break;
                //    case 14:
                //        newPath = Path.Combine(newPath, "mode14.xml");
                //        break;
                //    case 15:
                //        newPath = Path.Combine(newPath, "mode15.xml");
                //        break;
                //    case 16:
                //        newPath = Path.Combine(newPath, "mode16.xml");
                //        break;
                //    case 17:
                //        newPath = Path.Combine(newPath, "mode17.xml");
                //        break;
                //    case 18:
                //        newPath = Path.Combine(newPath, "mode18.xml");
                //        break;
                //    case 19:
                //        newPath = Path.Combine(newPath, "mode19.xml");
                //        break;
                //    case 20:
                //        newPath = Path.Combine(newPath, "mode20.xml");
                //        break;
                //    case 21:
                //        newPath = Path.Combine(newPath, "mode21.xml");
                //        break;
                //    case 22:
                //        newPath = Path.Combine(newPath, "mode22.xml");
                //        break;
                //    case 23:
                //        newPath = Path.Combine(newPath, "mode23.xml");
                //        break;
                //    case 24:
                //        newPath = Path.Combine(newPath, "mode24.xml");
                //        break;
                //    default:
                //        break;
                //}
                using (FileStream fsWrite = new FileStream(newPath, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    fsWrite.Write(buffer, 12, buffer.Length - 15);  //需要修改
                }
                return(true);

                #endregion
            }
        }
コード例 #2
0
        //需要用redis存储网关编号和对应的IP地址,由于没有心跳包注册信息实时数据之分,所以在数据帧中直接解析出来的网管编号和对应的IP地址直接写入
        public virtual bool ProcessPacket(byte[] buffer) //处理分完包后的数据,把命令和数据分开,并对命令进行解析
        {
            int deviceID = AuxiliaryMethod.byte4ToInt(buffer, 1);

            //string gateWay = gate.ToString("d8");
            if (buffer[9] == 0xFF)
            {
                m_asyncSocketUserToken.GateWayId = deviceID;
                m_asyncSocketUserToken.EndPoints = m_asyncSocketUserToken.ConnectSocket.RemoteEndPoint;
                string sql = "UPDATE DeviceInfo SET connectDT='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "' WHERE DeviceID = '" + deviceID + "' ";
                DbHelperSQL.ExecuteSql(sql);
                sql = "UPDATE DeviceInfo SET [ip]='" + m_asyncSocketUserToken.EndPoints.ToString() + "' WHERE DeviceID = '" + deviceID + "' ";
                DbHelperSQL.ExecuteSql(sql);
                sql = "select * from DevicePing where DeviceID = " + deviceID.ToString();
                //在DevicePing表中添加连接
                if (DbHelperSQL.Execute(sql) == "")
                {
                    sql = "INSERT INTO DevicePing VALUES ('" + deviceID.ToString() + "','" + m_asyncSocketUserToken.EndPoints.ToString() + "','" + DateTime.Now.ToString("yyyy -MM-dd HH:mm:ss.fff") + "') ";
                    // sql = "insert into DevicePing(DeviceID, ip, activeDT) select " + deviceID.ToString() + "," + m_asyncSocketUserToken.EndPoints.ToString() + ",(" + DateTime.Now.ToString("yyyy -MM-dd HH:mm:ss.fff") + ") from DevicePing  where not exists(select * from DevicePing where DeviceID = "+ deviceID.ToString() + ")";
                    DbHelperSQL.ExecuteSql(sql);
                }
                return(true);
            }
            if (buffer[9] == 0xF0)
            {
                m_asyncSocketUserToken.EndPoints = m_asyncSocketUserToken.ConnectSocket.RemoteEndPoint;
                string sql = "UPDATE DevicePing SET activeDT='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "' WHERE DeviceID = '" + deviceID + "' ";
                DbHelperSQL.ExecuteSql(sql);
                sql = "UPDATE DevicePing SET ip='" + m_asyncSocketUserToken.EndPoints.ToString() + "' WHERE DeviceID = '" + deviceID + "' ";
                DbHelperSQL.ExecuteSql(sql);
                return(true);
            }
            else
            {
                // 创建目录时如果目录已存在,则不会重新创建目录,且不会报错。创建目录时会自动创建路径中各级不存在的目录。
                //通过Path类的Combine方法可以合并路径
                string activeDir = @"D:\HS";
                string newPath   = Path.Combine(activeDir, deviceID.ToString());
                Directory.CreateDirectory(newPath);

                #region      数据
                string sql = "UPDATE DeviceInfo SET activeDT='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "' WHERE DeviceID = '" + deviceID + "' ";
                DbHelperSQL.ExecuteSql(sql);
                //string cmd = "select pathName from DeviceInfo where DeviceID='" + deviceID + "'";
                //string path = DbHelperSQL.Execute(cmd).Trim();
                switch (buffer[9])
                {
                case 0x5A:
                    newPath = Path.Combine(newPath, "name.xml");
                    break;

                case 0:
                    newPath = Path.Combine(newPath, "lasttime.xml");
                    break;

                case 1:
                    newPath = Path.Combine(newPath, "mode1.xml");
                    break;

                case 2:
                    newPath = Path.Combine(newPath, "mode2.xml");
                    break;

                case 3:
                    newPath = Path.Combine(newPath, "mode3.xml");
                    break;

                case 4:
                    newPath = Path.Combine(newPath, "mode4.xml");
                    break;

                case 5:
                    newPath = Path.Combine(newPath, "mode5.xml");
                    break;

                case 6:
                    newPath = Path.Combine(newPath, "mode6.xml");
                    break;

                case 7:
                    newPath = Path.Combine(newPath, "mode7.xml");
                    break;

                case 8:
                    newPath = Path.Combine(newPath, "mode8.xml");
                    break;

                case 9:
                    newPath = Path.Combine(newPath, "mode9.xml");
                    break;

                case 10:
                    newPath = Path.Combine(newPath, "mode10.xml");
                    break;

                case 11:
                    newPath = Path.Combine(newPath, "mode11.xml");
                    break;

                case 12:
                    newPath = Path.Combine(newPath, "mode12.xml");
                    break;

                case 13:
                    newPath = Path.Combine(newPath, "mode13.xml");
                    break;

                case 14:
                    newPath = Path.Combine(newPath, "mode14.xml");
                    break;

                case 15:
                    newPath = Path.Combine(newPath, "mode15.xml");
                    break;

                case 16:
                    newPath = Path.Combine(newPath, "mode16.xml");
                    break;

                case 17:
                    newPath = Path.Combine(newPath, "mode17.xml");
                    break;

                case 18:
                    newPath = Path.Combine(newPath, "mode18.xml");
                    break;

                case 19:
                    newPath = Path.Combine(newPath, "mode19.xml");
                    break;

                case 20:
                    newPath = Path.Combine(newPath, "mode20.xml");
                    break;

                case 21:
                    newPath = Path.Combine(newPath, "mode21.xml");
                    break;

                case 22:
                    newPath = Path.Combine(newPath, "mode22.xml");
                    break;

                case 23:
                    newPath = Path.Combine(newPath, "mode23.xml");
                    break;

                case 24:
                    newPath = Path.Combine(newPath, "mode24.xml");
                    break;

                default:
                    break;
                }
                using (FileStream fsWrite = new FileStream(newPath, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    fsWrite.Write(buffer, 12, buffer.Length - 15);  //需要修改
                }
                return(true);

                #endregion
            }
            //if (buffer[9] == 0x5A)
            //{
            //    #region 接收lasttime.xml文件
            //    int gatewayId = AuxiliaryMethod.byte4ToInt(buffer, 1);
            //    //m_asyncSocketServer.Redis.HashSet<string>(gatewayId.ToString(), "lasttime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));  //当前心跳时间
            //    //m_asyncSocketServer.Redis.HashIncrement(gatewayId.ToString(), "heartbeat", 1);
            //    //lock (m_asyncSocketUserToken)
            //    //{
            //    //    m_asyncSocketUserToken.ConnectSocket.Send(buffer);
            //    //}
            //    path = @"C:\Users\LKY\Desktop\lasttime.xml";
            //    using (FileStream fsWrite = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
            //    {
            //        fsWrite.Write(buffer, 12, buffer.Length-15);  //需要修改
            //    }
            //    return true;
            //    #endregion


            //}
            //else if (buffer[9] == 0xF0)
            //{
            //    #region //注册信息
            //    return true;
            //    #endregion
            //}
            //else if (buffer[9] == 0x50)
            //{
            //    #region //实时数据
            //    int[] data = new int[10000];
            //    int[,] allData = new int[21, 200];
            //    for (int i = 0; i < 3250; i++)
            //    {
            //        data[i] = BitConverter.ToInt16(buffer, 2 * i + 12);
            //    }

            //    for (int i = 0; i < 50; i++)
            //    {
            //        allData[0, i] = data[i];

            //    }
            //    string sql = "UPDATE zhuban SET [dz1]= " + allData[0, 0] + " ,[dz2]=" + allData[0, 1] + " ,[dz3]=" + allData[0, 2] + " ,[dz4]=" + allData[0, 3] + " ,[dz5]= " + allData[0, 4] + " ,[dz6]= " + allData[0, 5] + " ,[dz7]= " + allData[0, 6] + " ,[dz8]= " + allData[0, 7] + " ,[dz9]= "
            //                           + allData[0, 8] + ",[dz10]=  " + allData[0, 9] + " ,[dz11] = " + allData[0, 10] + ",[dz12] = " + allData[0, 11] + ",[dz13] = " + allData[0, 12] + ",[dz14] = " + allData[0, 13] + ",[dz15] = " + allData[0, 14] + ",[dz16] = " + allData[0, 15] + ",[dz17] = "
            //                           + allData[0, 16] + ",[dz18] = " + allData[0, 17] + " ,[dz19] = " + allData[0, 18] + ",[dz20] = " + allData[0, 19] + ",[dz21] = " + allData[0, 20] + ",[dz22] = " + allData[0, 21] + ",[dz23] = " + allData[0, 22] + ",[dz24] = " + allData[0, 23] + ",[dz25] = "
            //                           + allData[0, 24] + ",[dz26] = " + allData[0, 25] + " ,[dz27] = " + allData[0, 26] + ",[dz28] = " + allData[0, 27] + ",[dz29] = " + allData[0, 28] + ",[dz30] = " + allData[0, 29] + ",[dz31] = " + allData[0, 30] + ",[dz32] = " + allData[0, 31] + ",[dz33] = "
            //                           + allData[0, 32] + ",[dz34] = " + allData[0, 33] + " ,[dz35] = " + allData[0, 34] + ",[dz36] = " + allData[0, 35] + ",[dz37] = " + allData[0, 36] + ",[dz38] = " + allData[0, 37] + ",[dz39] = " + allData[0, 38] + ",[dz40] = " + allData[0, 39] + ",[dz41] = "
            //                           + allData[0, 40] + ",[dz42] = " + allData[0, 41] + ",[dz43] = " + allData[0, 42] + ",[dz44] = " + allData[0, 43] + ",[dz45] = " + allData[0, 44] + ",[dz46] = " + allData[0, 45] + ",[dz47] = " + allData[0, 46] + ",[dz48] = " + allData[0, 47] + ",[dz49] = " + allData[0, 48] + ",[dz50] = " + allData[0, 49] + " WHERE wgbh =" + gateWay + " ";
            //    DbHelperSQL.ExecuteSql(sql);



            //    for (int i = 0; i < 20; i++)
            //    {
            //        for (int j = 0; j < 160; j++)
            //        {
            //            allData[i + 1, j] = data[50 + i * 160 + j];   //allData[1,0]-allData[1,149]对应的是1-150地址位
            //        }
            //        string xg = "xiangji" + (i + 1);
            //        string up_sql = "UPDATE " + xg + " SET [dz1]= " + allData[i + 1, 0] + " ,[dz4]=" + allData[i + 1, 3] + " ,[dz5]=" + allData[i + 1, 4] + " ,[dz8]=" + allData[i + 1, 7] + " ,[dz9]= " + allData[i + 1, 8] + " ,[dz10]= " + allData[i + 1, 9] + " ,[dz11]= " + allData[i + 1, 10] + " ,[dz12]= " + allData[i + 1, 11] + " ,[dz13]= "
            //                         + allData[i + 1, 12] + ",[dz19]=  " + allData[i + 1, 18] + " ,[dz20] = " + allData[i + 1, 19] + ",[dz21] = " + allData[i + 1, 20] + ",[dz22] = " + allData[i + 1, 21] + ",[dz23] = " + allData[i + 1, 22] + ",[dz25] = " + allData[i + 1, 24] + ",[dz26] = " + allData[i + 1, 25] + ",[dz27] = "
            //                         + allData[i + 1, 26] + ",[dz28] = " + allData[i + 1, 27] + " ,[dz29] = " + allData[i + 1, 28] + ",[dz30] = " + allData[i + 1, 29] + ",[dz31] = " + allData[i + 1, 30] + ",[dz32] = " + allData[i + 1, 31] + ",[dz33] = " + allData[i + 1, 32] + ",[dz34] = " + allData[i + 1, 33] + ",[dz35] = "
            //                         + allData[i + 1, 34] + ",[dz36] = " + allData[i + 1, 35] + " ,[dz37] = " + allData[i + 1, 36] + ",[dz38] = " + allData[i + 1, 37] + ",[dz39] = " + allData[i + 1, 38] + ",[dz40] = " + allData[i + 1, 39] + ",[dz41] = " + allData[i + 1, 40] + ",[dz42] = " + allData[i + 1, 41] + ",[dz43] = "
            //                         + allData[i + 1, 42] + ",[dz44] = " + allData[i + 1, 43] + " ,[dz45] = " + allData[i + 1, 44] + ",[dz46] = " + allData[i + 1, 45] + ",[dz47] = " + allData[i + 1, 46] + ",[dz48] = " + allData[i + 1, 47] + ",[dz49] = " + allData[i + 1, 48] + ",[dz50] = " + allData[i + 1, 49] + ",[dz51] = "
            //                         + allData[i + 1, 50] + ",[dz52] = " + allData[i + 1, 51] + " ,[dz53] = " + allData[i + 1, 52] + ",[dz54] = " + allData[i + 1, 53] + ",[dz55] = " + allData[i + 1, 54] + ",[dz56] = " + allData[i + 1, 55] + ",[dz57] = " + allData[i + 1, 56] + ",[dz58] = " + allData[i + 1, 57] + ",[dz59] = "
            //                         + allData[i + 1, 58] + ",[dz60] = " + allData[i + 1, 59] + " ,[dz61] = " + allData[i + 1, 60] + ",[dz62] = " + allData[i + 1, 61] + ",[dz63] = " + allData[i + 1, 62] + ",[dz64] = " + allData[i + 1, 63] + ",[dz65] = " + allData[i + 1, 64] + ",[dz66] = " + allData[i + 1, 65] + ",[dz67] = "
            //                         + allData[i + 1, 66] + ",[dz68] = " + allData[i + 1, 67] + " ,[dz69] = " + allData[i + 1, 68] + ",[dz70] = " + allData[i + 1, 69] + ",[dz71] = " + allData[i + 1, 70] + ",[dz72] = " + allData[i + 1, 71] + ",[dz73] = " + allData[i + 1, 72] + ",[dz74] = " + allData[i + 1, 73] + ",[dz75] = "
            //                         + allData[i + 1, 74] + ",[dz77] = " + allData[i + 1, 76] + " ,[dz78] = " + allData[i + 1, 77] + ",[dz79] = " + allData[i + 1, 78] + ",[dz81] = " + allData[i + 1, 80] + ",[dz82] = " + allData[i + 1, 81] + ",[dz83] = " + allData[i + 1, 82] + ",[dz84] = " + allData[i + 1, 83] + ",[dz85] = "
            //                         + allData[i + 1, 84] + ",[dz86] = " + allData[i + 1, 85] + " ,[dz87] = " + allData[i + 1, 86] + ",[dz88] = " + allData[i + 1, 87] + ",[dz89] = " + allData[i + 1, 88] + ",[dz90] = " + allData[i + 1, 89] + ",[dz91] = " + allData[i + 1, 90] + ",[dz92] = " + allData[i + 1, 91] + " ,[dz93] = "
            //                         + allData[i + 1, 92] + ",[dz94] = " + allData[i + 1, 93] + " ,[dz95] = " + allData[i + 1, 94] + ",[dz96] = " + allData[i + 1, 95] + ",[dz97] = " + allData[i + 1, 96] + ",[dz98] = " + allData[i + 1, 97] + ",[dz99] = " + allData[i + 1, 98] + ",[dz100] = " + allData[i + 1, 99] + ",[dz102] = "
            //                         + allData[i + 1, 101] + ",[dz103] = " + allData[i + 1, 102] + ",[dz104] = " + allData[i + 1, 103] + ",[dz105] = " + allData[i + 1, 104] + ",[dz106] = " + allData[i + 1, 105] + ",[dz113] = " + allData[i + 1, 112] + ",[dz114] = " + allData[i + 1, 113] + ",[dz115] = " + allData[i + 1, 114] + ",[dz121] = "
            //                         + allData[i + 1, 120] + ",[dz350] = " + allData[i + 1, 150] + ",[dz351] = " + allData[i + 1, 151] + ",[dz352] = " + allData[i + 1, 152] + ",[dz353] = " + allData[i + 1, 153] + ",[dz354] = " + allData[i + 1, 154] + ",[dz355] = " + allData[i + 1, 155] + ",[dz356] = " + allData[i + 1, 156] + ",[dz357] = "
            //                         + allData[i + 1, 157] + ",[dz358] = " + allData[i + 1, 158] + " WHERE wgbh =" + gateWay + " ";
            //        DbHelperSQL.ExecuteSql(up_sql);
            //    }

            //    return true;
            //    #endregion
            //}
        }