public HttpResponseMessage Service()
        {
            //将当前请求对象转换为传统HttpRequestBase对象
            HttpRequestBase requ = this.GetRequest();

            //初始化数据传递对象
            TransmitData transmitData = new TransmitData();

            //将请求附带参数赋值给TransmitData对象
            transmitData.SetRequestPara(requ);

            //获取当前回调的事件名
            string eventType = transmitData.requestPara["EventType"].ToString();

            string responseJSON = new Handles(transmitData).Handle(eventType);

            //当没有找到EventType对应Handle方法时
            if (string.IsNullOrEmpty(responseJSON))
            {
                throw new Exception("未找到“" + eventType + "”方法!");
            }

            return(new HttpResponseMessage {
                Content = new StringContent(responseJSON, System.Text.Encoding.UTF8, "application/json")
            });
        }
Esempio n. 2
0
 public EditFormulaForm(TransmitData transmitData)
 {
     InitializeComponent();
     this.transmitData           = transmitData;
     loadGlobalChineseCharacters = LoadGlobalChineseCharacters.GetInstance();
     initUI();
 }
Esempio n. 3
0
        public TransmitData getCurrentSelected(MaskType mt)
        {
            TransmitData sdRtn = new TransmitData();

            sdRtn.data = new CANData();
            TreeNode   tnSelected = MessageTreeView.SelectedNode;
            CANMessage cMsg;

            if (typeof(CANMessage).Equals(tnSelected.Tag.GetType()))
            {
                cMsg          = tnSelected.Tag as CANMessage;
                sdRtn.data.ID = cMsg.ID;
                sdRtn.data.SetData(cMsg.BuildMessage(mt));
                sdRtn.cycle = cMsg.TxPeriod;
            }
            else if (typeof(CANSignal).Equals(tnSelected.Tag.GetType()))
            {
                cMsg = tnSelected.Parent.Tag as CANMessage;
                CANSignal cSignal = tnSelected.Tag as CANSignal;
                sdRtn.data.ID = cMsg.ID;
                sdRtn.data.SetData(cSignal.encode(mt));
                sdRtn.cycle = cMsg.TxPeriod;
            }
            else
            {
                sdRtn = null;
            }
            return(sdRtn);
        }
Esempio n. 4
0
        /// <summary>
        /// 直接从这里提取一个要发送的主体字节集数据;已经加密完成
        /// </summary>
        /// <param name="state">StateBase</param>
        /// <returns>字节集</returns>
        private static byte[] FileGetSendDate(TransmitData state)
        {
            int Date_Max = state.BufferSize - 24;

            if (state.SendFile.FileDateAll == null)
            {
                return(null);//说明文件已经发完了
            }
            int FileDateAllLenth = state.SendFile.FileDateAll.Length;

            if (FileDateAllLenth <= Date_Max)
            {
                state.SendFile.SendDate    = SendSubjectEncryption(state.SendFile.FileDateAll, state.SendFile.FileLabel);
                state.SendFile.FileDateAll = null;
            }
            else
            {
                //现在送出去
                byte[] dateS = new byte[Date_Max];
                //剩下的数据
                byte[] dateL = new byte[FileDateAllLenth - Date_Max];
                Array.Copy(state.SendFile.FileDateAll, 0, dateS, 0, Date_Max);
                Array.Copy(state.SendFile.FileDateAll, Date_Max, dateL, 0, FileDateAllLenth - Date_Max);
                state.SendFile.FileDateAll = dateL;
                //在这里加入主体暗号_fileSubjectCode;
                state.SendFile.SendDate = SendSubjectEncryption(dateS, state.SendFile.FileLabel);
            }
            return(state.SendFile.SendDate);
        }
        public void Transmit(TransmitData data)
        {
            if (!IsOpen)
            {
                return;
            }
            Task.Factory.StartNew(() =>
            {
                if (!DoesItPassFilter(data))
                {
                    return;
                }

                List <string> udpStrings = ConvertCANPackageToInfluxdbUDPPackage(data);


                RaiseReceivedData(new ReceivedData()
                {
                    Time    = _watch.ElapsedMilliseconds / 1000.0,
                    CanId   = data.CanId,
                    DLC     = data.DLC,
                    IsExtId = data.IsExtId,
                    Payload = data.Payload
                });


                foreach (var el in udpStrings)
                {
                    SendToInfluxDB(el);
                }
            });
        }
        private List <string> ConvertCANPackageToInfluxdbUDPPackage(TransmitData data)
        {
            List <string> result = new List <string>();

            foreach (var filter in _config.Filters.Where(x =>
                                                         (x.Header.IsExtId == data.IsExtId) &&
                                                         (x.Header.DLC == data.DLC) &&
                                                         (x.Header.Id == data.CanId) &&
                                                         (data.Payload.BinaryAnd(x.Header.MaskBytes).IsEquals(x.Header.ValueBytes))))
            {
                foreach (var insert in filter.Inserts)
                {
                    string exp = insert.Field.Value;
                    for (int i = 0; i < data.Payload.Length; i++)
                    {
                        exp = exp.Replace($"data{i}", data.Payload[i].ToString());
                    }



                    try
                    {
                        result.Add($"{insert.Measurement},{insert.Tag.Name}={insert.Tag.Value} {insert.Field.Name}={new DataTable().Compute(exp, null).ToString().Replace(",", ".")}");
                    }
                    catch { }
                }
            }


            return(result);
        }
Esempio n. 7
0
        /// <summary>
        /// 文件数据分析处理中心;如果是发送方发过来的数据让接收方去处理
        /// </summary>
        /// <param name="fileDate">文件数据</param>
        /// <param name="stateOne">StateBase</param>
        /// <returns>处理以后的数据</returns>
        internal static byte[] ReceiveDateTO(byte[] fileDate, TransmitData stateOne)
        {
            if (fileDate.Length < 7)
            {
                return(null);
            }
            byte[] haveDate = null;
            byte   code     = fileDate[1];

            if (code == CipherCode._receiveUser)
            {
                if (fileSend == null)//这里没有开启;直接让对方取消
                {
                    haveDate = EncDecFile.FileSevenEncryption(CipherCode._sendUser, CipherCode._fileCancel, ByteToDate.ByteToInt(3, fileDate));
                }
                else
                {
                    haveDate = fileSend.ReceiveDateTO(fileDate, stateOne);
                }
            }
            else if (code == CipherCode._sendUser)
            {
                if (fileReceive == null)//这里没有开启;直接让对方取消
                {
                    haveDate = EncDecFile.FileSevenEncryption(CipherCode._receiveUser, CipherCode._fileCancel, ByteToDate.ByteToInt(3, fileDate));
                }
                else
                {
                    haveDate = fileReceive.ReceiveDateTO(fileDate, stateOne);
                }
            }
            return(haveDate);
        }
Esempio n. 8
0
 /// <summary>
 /// 通过StateBase中断所有的文件;服务器用到的
 /// </summary>
 /// <param name="stateOne">StateBase</param>
 internal static void FileStopITxBase(TransmitData stateOne)
 {
     if (fileSend != null)
     {
         foreach (FileState state in fileSend.FS)
         {
             if (state.StateOne == stateOne)
             {
                 state.StateFile = 2;
                 fileSend.SendMust.FileBreak(state.FileLabel, "对方下线或断线");
             }
         }
     }
     else if (fileReceive != null)
     {
         foreach (FileState state in fileReceive.FS)
         {
             if (state.StateOne == stateOne)
             {
                 state.StateFile = 2;
                 fileReceive.ReceiveMust.FileBreak(state.FileLabel, "对方下线或断线");
             }
         }
     }
 }
Esempio n. 9
0
        public async Task Run(TransmitData transmitData)
        {
            try
            {
                using var dbContext = new EFContext();
                DateTime  NowTime   = DateTime.Now;
                NbCommand nbCommand = new NbCommand
                {
                    CmdCode   = transmitData.CommandCode,
                    MessageID = transmitData.MesssageID,
                    CmdData   = DataHelper.BytesToHexStr(transmitData.Data),
                    CmdId     = transmitData.UUID.ToString().ToUpper(),
                    EventTime = NowTime,
                    Timestamp = NowTime,
                    Topic     = transmitData.Topic,
                    TopicType = "light",
                    Account   = "System"
                };
                await dbContext.NbCommands.AddAsync(nbCommand); //先插入发送命令表中

                await dbContext.SaveChangesAsync();             //保证数据库中存在值

                var res = await Send(transmitData.Topic, nbCommand.CmdData);
            }
            catch (Exception ex)
            {
            }
        }
Esempio n. 10
0
        private void ShotCommand_Execute()
        {
            TransmitData data = new TransmitData()
            {
                CanId   = (int)this.CanId,
                IsExtId = this.IsExtId,
                DLC     = (int)this.DLC,
                Payload = this.Payload.ToArray()
            };

            var results = new List <ValidationResult>();

            if (!Validator.TryValidateObject(data, new ValidationContext(data), results, true))
            {
                foreach (var error in results)
                {
                    MessageBox.Show(error.ErrorMessage, (string)Manager <LanguageCultureInfo> .StaticInstance.GetResource("#WarningMsgBoxTitle"), MessageBoxButton.OK, MessageBoxImage.Error);
                }

                if (Status == TransmitState.Transmiting)
                {
                    RunCommand.Execute();
                }

                return;
            }

            Task.Run(() => { TransmitToSelectedChannels?.Invoke(data); });
        }
Esempio n. 11
0
 public ChooseColumnForm(TransmitData transmitData)
 {
     this.transmitData           = transmitData;
     loadGlobalChineseCharacters = LoadGlobalChineseCharacters.GetInstance();
     InitializeComponent();
     initUI();
     addColumnCheckBox(transmitData.columnsNameList, transmitData.columnTypeDict);
     clearNotNeedData(transmitData);
 }
Esempio n. 12
0
        public void Transmit(TransmitData data)
        {
            SendDataToProxy(data);

            string response = _process.StandardOutput.ReadLine();
            var    match    = Regex.Match(response,
                                          @"([0-1]{1});" +
                                          @"([0-9a-fA-F]{8});" +
                                          @"([0-9a-fA-F]{1});" +
                                          @"([0-9a-fA-F])+;" +
                                          @"([0-9a-fA-F]{4});");

            if (!match.Success)
            {
                return;
            }

            ReceivedData result = new ReceivedData();

            try
            {
                result.DLC = Convert.ToInt32(match.Groups[3].Value, 16);
            }
            catch { return; }


            match = Regex.Match(response,
                                @"([0-1]{1});" +
                                @"([0-9a-fA-F]{8});" +
                                @"([0-9a-fA-F]{1});" +
                                @"([0-9a-fA-F]{" + (result.DLC * 2) + "});" +
                                @"([0-9a-fA-F]{4});");


            if (!match.Success)
            {
                return;
            }

            try
            {
                result.IsExtId = Convert.ToInt32(match.Groups[1].Value, 16) == 0 ? false : true;
                result.CanId   = Convert.ToInt32(match.Groups[2].Value, 16);
                result.Time    = Convert.ToInt32(match.Groups[5].Value, 16) / 1000.0;
                result.Payload = new byte[result.DLC];

                for (int i = 0; i < result.DLC; i++)
                {
                    result.Payload[i] = Convert.ToByte(match.Groups[4].Value.Substring(i * 2, 2), 16);
                }
            }
            catch { return; }


            RaiseReceivedData(result);
        }
        private bool DoesItPassFilter(TransmitData data)
        {
            InfuxDBFilter a = _config.Filters.FirstOrDefault(x =>
                                                             (x.Header.IsExtId == data.IsExtId) &&
                                                             (x.Header.DLC == data.DLC) &&
                                                             (x.Header.Id == data.CanId) &&
                                                             (data.Payload.BinaryAnd(x.Header.MaskBytes).IsEquals(x.Header.ValueBytes)));

            return(a == null ? false : true);
        }
Esempio n. 14
0
        public static void GetAasx(IHttpContext context)
        {
            string ret = "ERROR";

            if (context.Request.PathParameters.Count == 3)
            {
                string   path     = context.Request.PathInfo;
                string[] split    = path.Split('/');
                string   node     = split[2];
                string   aasIndex = split[3];

                TransmitData td = new TransmitData();
                td.source      = sourceName;
                td.destination = node;
                td.type        = "getaasx";
                td.extensions  = aasIndex;

                // publishRequest.Add(td);

                if (parentDomain != "GLOBALROOT")
                {
                    publishRequest.Add(td);
                }
                else
                {
                    for (int i = 0; i < publishResponse.Length; i++)
                    {
                        if (publishResponse[i] == null)
                        {
                            publishResponse[i] = new List <TransmitData> {
                            };
                            publishResponse[i].Add(td);
                            if (childs.Count != 0)
                            {
                                publishResponseChilds[i] = new List <string> {
                                };
                                foreach (string value in childs)
                                {
                                    publishResponseChilds[i].Add(value);
                                }
                            }
                            break;
                        }
                    }
                }


                ret = "Downloaded .AASX from node " + node + " at index " + aasIndex + " will be stored in user download directory!";
            }

            context.Response.ContentType     = ContentType.TEXT;
            context.Response.ContentEncoding = Encoding.UTF8;
            context.Response.ContentLength64 = ret.Length;
            context.Response.SendResponse(ret);
        }
Esempio n. 15
0
        /// <summary>
        /// 发送方的文件进行续传;如果回复是null;说明不存在
        /// </summary>
        /// <param name="fileLable">文件标签</param>
        /// <param name="stateOne">StateBase</param>
        /// <returns>byte[]</returns>
        internal byte[] FileContinue(int fileLable, TransmitData stateOne)
        {
            byte[]    haveDate = null;
            FileState state    = FileLabelToState(fileLable);

            if (state != null && state.StateFile == 2)
            {
                haveDate       = EncDecFile.FileSevenEncryption(CipherCode._sendUser, CipherCode._fileContinue, fileLable);
                state.StateOne = stateOne;//可以续传;用新的stateOne代替旧的
            }
            return(haveDate);
        }
Esempio n. 16
0
        public static async void ThreadLoop()
        {
            while (true)
            {
                // Test data to publish
                string testPublish = "";
                if (testRequest == "")
                {
                    testPublish = "{ \"source\" : \"" + sourceName + "\" , \"count\" : \"" + count + "\" }";
                    count++;
                }
                else
                {
                    testPublish = await getTestData(testRequest);
                }

                TransmitData td = new TransmitData();
                td.source = sourceName; // must be a unique name in the overall node network
                td.type   = "test";     // AASX Server publishes type "submodel"
                td.publish.Add(testPublish);

                TransmitFrame tf = new TransmitFrame();
                tf.source = sourceName;
                tf.data.Add(td);

                string publish = JsonConvert.SerializeObject(tf, Formatting.Indented);
                Console.WriteLine("Publish data:\n" + publish + "\n");

                var handler = new HttpClientHandler();
                handler.DefaultProxyCredentials = CredentialCache.DefaultCredentials;
                var client = new HttpClient(handler);

                string content = "";
                try
                {
                    var contentJson = new StringContent(publish, System.Text.Encoding.UTF8, "application/json");
                    var result      = client.PostAsync(connectDomain + "/publish", contentJson).Result;
                    content = ContentToString(result.Content);
                }
                catch
                {
                    Console.WriteLine("ERROR: Publish Timeout!\n");
                }

                if (content != "")
                {
                    // Received JSON content as TransmitFrame
                    Console.WriteLine("Received Subscribe Data:\n" + content + "\n");
                }

                Thread.Sleep(3000);
            }
        }
Esempio n. 17
0
        /// <summary>
        /// 接收方的文件进行续传;如果回复是null;说明不存在
        /// </summary>
        /// <param name="fileLable">文件标签</param>
        /// <param name="stateOne">StateBase</param>
        /// <returns>byte[]</returns>
        internal byte[] FileContinue(int fileLable, TransmitData stateOne)
        {
            byte[]    haveDate = null;
            FileState state    = FileLabelToState(fileLable);

            if (state != null && state.StateFile == 2)
            {
                haveDate = EncDecFile.ReceiveContingueEncryption(CipherCode._fileContinue, state);
                ExpandBuffer(state, stateOne);
            }
            return(haveDate);
        }
Esempio n. 18
0
 /// <summary>
 /// 扩充因要接收文件而增大的缓冲区
 /// </summary>
 /// <param name="state">FileState</param>
 /// <param name="stateOne">stateOne</param>
 private void ExpandBuffer(FileState state, TransmitData stateOne)
 {
     if (state.StateOne != stateOne)
     {
         if (stateOne.Buffer.Length != BufferSize)
         {
             stateOne.BufferBackup = stateOne.Buffer;
             stateOne.Buffer       = new byte[BufferSize];
         }
         state.StateOne = stateOne;
     }
 }
Esempio n. 19
0
        /// <summary>
        /// Trasmit data to CAN channel.
        /// </summary>
        /// <param name="data">Data to be transmited.</param>
        public void Transmit(TransmitData data)
        {
            if (_port == null)
            {
                return;
            }

            if (!_port.IsOpen)
            {
                Owner.Disconnect();
            }


            var validatorResults = new List <ValidationResult>();

            if (!Validator.TryValidateObject(data, new ValidationContext(data), validatorResults, true))
            {
                string errors = "";
                foreach (var el in validatorResults)
                {
                    errors += $"{el.ErrorMessage}\r\n";
                }
                throw new ArgumentException($"Transmit data is invalid:\r\n{errors}");
            }

            if (!IsOpen || IsListenOnly)
            {
                return;
            }

            string transmit   = "";
            string payloadstr = "";

            for (int i = 0; i < data.DLC; i++)
            {
                payloadstr += data.Payload[i].ToString("X2");
            }

            if (data.IsExtId)
            {
                transmit = $"T{data.CanId.ToString("X8")}{data.DLC.ToString("X1")}{payloadstr}\r";
            }
            else
            {
                transmit = $"t{data.CanId.ToString("X3")}{data.DLC.ToString("X1")}{payloadstr}\r";
            }

            lock (_port)
            {
                _port.Write(transmit);
            }
        }
Esempio n. 20
0
 /// <summary>
 /// 对文件进行续传;只要一个文件标签,会自动分析是发送方还是接收方的文件标签;
 /// </summary>
 /// <param name="fileLable">文件标签</param>
 /// <param name="stateOne">StateBase</param>
 /// <returns></returns>
 internal static byte[] FileContinue(int fileLable, TransmitData stateOne)
 {
     byte[] haveDate = null;
     if (fileSend != null)
     {
         haveDate = fileSend.FileContinue(fileLable, stateOne);
     }
     else if (haveDate == null && fileReceive != null)
     {
         haveDate = fileReceive.FileContinue(fileLable, stateOne);
     }
     return(haveDate);
 }
 public SetDateTypeParameterForm(TransmitData transmitData)
 {
     this.transmitData = transmitData;
     InitializeComponent();
     loadGlobalChineseCharacters       = LoadGlobalChineseCharacters.GetInstance();
     this.selectColumnList             = transmitData.selectedColumn;
     this.columnTypeDict               = transmitData.columnTypeDict;
     this.selectedColumnVariableDict   = transmitData.selectedColumnVariableDict;
     tmpTwoDateColumnRelationContainer = new TwoDateColumnRelationContainer <string>();
     //relationContainerList = new List<TwoDateColumnRelationContainer<string>>();
     excelHandle           = new ExcelHandle();
     relationContainerList = excelHandle.getExistRelationFormExistExcel();
     initUI();
 }
Esempio n. 22
0
 public AssignmentForm(TransmitData transmitData)
 {
     this.transmitData  = transmitData;
     selectedColumnList = transmitData.selectedColumn;
     InitializeComponent();
     loadGlobalChineseCharacters      = LoadGlobalChineseCharacters.GetInstance();
     this.selectedColumnVariableDict  = assignVariableName();
     this.weightRelation              = new Dictionary <int, int>();
     this.weightAndColumnNameRelation = new Dictionary <int, string>();
     initUI();
     initDataGridView();
     clearNotNeedData(transmitData);
     transmitData.selectedColumnVariableDict = this.selectedColumnVariableDict;
 }
Esempio n. 23
0
 /// <summary>
 /// 对数据加入暗号与数据标签
 /// </summary>
 /// <param name="date">要加密的数据</param>
 /// <param name="textCode">数据模型的暗号</param>
 /// <param name="state">StateBase</param>
 /// <returns>加密之后的数据(1暗号+1暗号+4数据标签+date)</returns>
 private static byte[] encryptionTemporary(byte[] date, byte textCode, TransmitData state)
 {
     if (date.Length > state.BufferSize - 20)
     {
         //超出通过文件大数据包处理发送
         return(EncDecSeparateDate.SendHeadEncryption(date, textCode, state));
     }
     //给发送的数据进行编号
     state.SendDateLabel = RandomPublic.RandomNumber(16787);
     //编号并加密 (加密
     byte[] dateOverall = ByteToDate.OffsetEncryption(date, state.SendDateLabel, 2);
     dateOverall[0] = CipherCode._commonCode;
     dateOverall[1] = textCode;
     return(dateOverall);
 }
Esempio n. 24
0
 /// <summary>
 /// 返回分包数据11位的数据包包头(暗号类型1+暗号1+原暗号+数据标签+长度)
 /// </summary>
 /// <param name="date">数据</param>
 /// <param name="textCode">原暗号,什么文件</param>
 /// <param name="state">StateBase</param>
 /// <returns>加密之后的包头</returns>
 internal static byte[] SendHeadEncryption(byte[] date, byte textCode, TransmitData state)
 {
     state.SendFile           = new TransmitFile(date);
     state.SendFile.FileLabel = RandomPublic.RandomNumber(14562);
     byte[] headDate = new byte[11];
     //写入暗号
     headDate[0] = CipherCode._bigDateCode;
     headDate[1] = CipherCode._fileHeadCode;
     headDate[2] = textCode;
     //写入数据标签
     ByteToDate.IntToByte(state.SendFile.FileLabel, 3, headDate);
     //写入数据长度
     ByteToDate.IntToByte(date.Length, 7, headDate);
     return(headDate);
 }
Esempio n. 25
0
        /// <summary>
        /// 对文本和图片数据进行解密;
        /// </summary>
        /// <param name="date">接收到的数据</param>
        /// <param name="state">StateBase</param>
        /// <returns>返回一个图片</returns>
        internal static DataModel deciphering(byte[] date, TransmitData state)
        {
            DataModel stateCode = null;

            //小于6,是说:暗号类型1位+暗号1位+数据标签4位
            if (date.Length < 6)
            {
                return(stateCode);//收到的数据不正确
            }
            byte headDate = date[1];

            //当是图片与文本时
            if (headDate == CipherCode._textCode || headDate == CipherCode._photographCode)
            {
                int SendDateLabel = 0;
                //取得数据,并取得数据标签
                byte[] dateAll = ByteToDate.OffsetDecrypt(date, out SendDateLabel, 2);
                //回复此数据标签的数据是成功收到了
                byte[] ReplyDate = ByteToDate.CombinationTwo(CipherCode._commonCode, CipherCode._dateSuccess, SendDateLabel);
                //判断是否文本
                if (headDate == CipherCode._textCode)
                {
                    //文本
                    string str = Encoding.UTF8.GetString(dateAll);
                    stateCode = new DataModel(CipherCode._textCode, str, ReplyDate);//解析出来是文本数据
                }
                else
                {
                    //图片
                    stateCode = new DataModel(CipherCode._photographCode, dateAll, ReplyDate);//解释出来是图片数据
                }
            }
            else if (headDate == CipherCode._dateSuccess)//数据成功或重发
            {
                //找出已发数据的标签
                int SendDateLabel = ByteToDate.ByteToInt(2, date);
                if (headDate == CipherCode._dateSuccess)
                {
                    stateCode = new DataModel(headDate);//生成一个成功信息的数据模型
                    if (SendDateLabel == state.SendDateLabel)
                    {
                        state.SendDate = null;
                    }                         //已经成功对已发数据进行删除
                }
            }
            return(stateCode);
        }
Esempio n. 26
0
        private void SendDataToProxy(TransmitData data)
        {
            string payload = "";

            for (int i = 0; i < data.DLC; i++)
            {
                payload += data.Payload[i].ToString("X2");
            }

            string response = $"{(data.IsExtId ? "1" : "0")};" +
                              $"{data.CanId.ToString("X8")};" +
                              $"{data.DLC.ToString("X1")};" +
                              $"{payload};" +
                              $"{((int)(0)).ToString("X4")};";

            _process.StandardInput.WriteLine(response);
        }
Esempio n. 27
0
 /// <summary>
 /// 读取缓冲区数据,并清空
 /// </summary>
 /// <param name="stateOne">StateBase</param>
 /// <param name="insert">数据实际长度</param>
 /// <returns>需要的数据</returns>
 internal static byte[] DateOneManage(TransmitData stateOne, int insert)
 {
     byte[] receiveByte = null;
     if (stateOne.Buffer[0] == 0 && stateOne.BufferBackup != null && stateOne.BufferBackup.Length >= insert)
     {
         receiveByte = stateOne.BufferBackup;
         //清空备用缓冲区
         stateOne.BufferBackup = null;
     }//主要用于缓冲区有扩大缩小
     else
     {
         receiveByte = stateOne.Buffer;
     }
     byte[] haveDate = ByteToDate.ByteToByte(receiveByte, insert, 0);
     Array.Clear(stateOne.Buffer, 0, stateOne.Buffer.Length);
     return(haveDate);
 }
Esempio n. 28
0
 /// <summary>
 /// 对文本和图片数据进行加密;如果长度超过限制,直接抛给文件处理中心
 /// </summary>
 /// <param name="stateCode">StateCode</param>
 /// <param name="state">StateBase</param>
 /// <returns>要发送的数据</returns>
 internal static byte[] encryption(DataModel stateCode, TransmitData state)
 {
     byte[] returnByte = null;
     //表示字符暗号
     if (stateCode.State == CipherCode._textCode)
     {
         //取得文本数据
         byte[] date = Encoding.UTF8.GetBytes(stateCode.Datestring);
         //对数据主体部分进行加密,加密之后的数据(1暗号+1暗号+4数据标签+date)
         returnByte = encryptionTemporary(date, stateCode.State, state);
     }
     else if (stateCode.State == CipherCode._photographCode)
     {
         //对数据主体部分进行加密,加密之后的数据(1暗号+1暗号+4数据标签+date)
         returnByte = encryptionTemporary(stateCode.DateByte, stateCode.State, state);
     }
     return(returnByte);
 }
Esempio n. 29
0
        /// <summary>
        /// 发送文件
        /// </summary>
        /// <param name="fileLable">文件标签</param>
        /// <param name="fileName">文件地址</param>
        /// <param name="stateOne">StateBase</param>
        /// <returns>形成之后的数据</returns>
        internal byte[] Send(ref int fileLable, string fileName, TransmitData stateOne)
        {
            int        fileLenth = 0;
            FileStream fs;

            try
            {
                fs        = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                fileLenth = (int)fs.Length;
            }
            catch (Exception Ex) { throw new Exception(Ex.Message); }
            fileLable = RandomPublic.RandomNumber(16787);
            FileState fileState = new FileState(fileLable, fileLenth, fileName, fs);

            fileState.StateOne = stateOne;
            FS.Add(fileState);
            byte[] haveByte = EncDecFile.FileHeadEncryption(fileState);
            return(haveByte);
        }
Esempio n. 30
0
        public async Task Execute(IJobExecutionContext context)
        {
            logger.Info("执行时间同步任务..................");
            try
            {
                using var dbContext = new EFContext();
                await dbContext.TNL_TunnelLights.ForEachAsync(async l =>
                {
                    var IMEI            = l.IMEI;
                    Guid guid           = Guid.NewGuid();
                    DateTime NowTime    = DateTime.Now;
                    var year            = NowTime.Year.ToString("X4");
                    var month           = NowTime.Month.ToString("X2");
                    var day             = NowTime.Day.ToString("X2");
                    var week            = ((int)NowTime.DayOfWeek).ToString("X2");
                    var hour            = NowTime.Hour.ToString("X2");
                    var minute          = NowTime.Minute.ToString("X2");
                    var second          = NowTime.Second.ToString("X2");
                    var RTCHex          = year + month + day + week + hour + minute + second;
                    var RTCBytes        = HexFormatHelper.StringConvertHexBytes(RTCHex);
                    var RTCTransmitHex  = TransmitHelper.SendNBComand(guid.ToByteArray(), RTCBytes, (byte)NBCommondCode.DateSync);
                    var RTCtransmitData = new TransmitData
                    {
                        Topic       = AppSetting.LightTopicBefore + IMEI,
                        CommandCode = DataHelper.BytesToHexStr(new byte[] { (byte)NBCommondCode.DateSync }),
                        MesssageID  = 0,
                        Data        = RTCTransmitHex,
                        UUID        = guid
                    };
                    await TransmitContext.GetInstance().GetTransmitSchedule().Run(RTCtransmitData);
                    await Task.Delay(100);
                });
            }
            catch (Exception ex)
            {
                logger.Error(ex.ToString());
            }

            logger.Info("执行时间同步任务完成..................");
        }