Пример #1
0
        /// <summary>
        /// 获取CC00的返回数据
        /// </summary>
        /// <param name="x300"></param>
        /// <returns></returns>
        private byte[] Get0xCC00(TX300 x300)
        {
            byte[] cc00 = new byte[23];
            Buffer.BlockCopy(x300.Content, 0, cc00, 0, 17);
            cc00[0] = 0x17;
            cc00[7] = 0xFF;
            cc00[8] = 0xFF;
            // 心跳时间间隔,7分钟
            cc00[17] = 0x07;
            WbsDateTime dt = new WbsDateTime(DateTime.Now);

            Buffer.BlockCopy(dt.DateTimeToByte, 0, cc00, 19, 4);
            dt = null;
            return(cc00);
        }
Пример #2
0
        /// <summary>
        /// 处理接收到的数据
        /// </summary>
        /// <param name="data"></param>
        private void HandleReceivedData(AsyncUserDataBuffer data)
        {
            int index = 0, len = data.Buffer.Length;

            while (index < len)
            {
                byte[] temp = new byte[len - index];
                Buffer.BlockCopy(data.Buffer, index, temp, 0, len - index);
                TX300 x300 = new TX300();
                x300.Content = temp;
                x300.package_to_msg();
                // 保存历史记录
                //SaveTX300History(x300, data.ReceiveTime);
                // 更新设备状态
                HandleTX300Status(x300, data);
                if (null != _server)
                {
                    if (x300.CommandID == 0xCC00)
                    {
                        byte[] cc00 = new byte[23];
                        Buffer.BlockCopy(x300.Content, 0, cc00, 0, 17);
                        cc00[0]  = 0x17;
                        cc00[7]  = 0xFF;
                        cc00[8]  = 0xFF;
                        cc00[17] = 0x07;
                        WbsDateTime dt = new WbsDateTime(DateTime.Now);
                        Buffer.BlockCopy(dt.DateTimeToByte, 0, cc00, 19, 4);
                        dt = null;
                        if (data.PackageType == AsyncDataPackageType.TCP)
                        {
                            _server.Send(data.SocketHandle, cc00);
                        }
                        else
                        {
                            _server.Send(data.Port, data.IP, cc00);
                        }
                        cc00 = null;
                    }
                    else
                    {
                        // 返回回执
                        TX300Resp resp = new TX300Resp();
                        resp.CommandID  = x300.CommandID;
                        resp.PackageID  = x300.PackageID;
                        resp.SequenceID = x300.SequenceID;
                        resp.Status     = 0;
                        resp.Package();
                        if (data.PackageType == AsyncDataPackageType.TCP)
                        {
                            _server.Send(data.SocketHandle, resp.Content);
                        }
                        else
                        {
                            _server.Send(data.Port, data.IP, resp.Content);
                        }
                    }
                }
                HandleCommandResponsed(x300);
                index += x300.TotalLength;
            }
        }