コード例 #1
0
ファイル: FileUpLoader.cs プロジェクト: SHWDTech/PowerQuality
        private static void StartRecordProcess(Dictionary <string, string> recordConfigs, View.Progress progress, List <string> fileList)
        {
            var client       = new PostClient($"{ServerAddr}Record");
            var recordParams = new RecordParams
            {
                RecordConfigs = recordConfigs,
                FileList      = fileList,
                RecordName    = recordConfigs["RecordName"]
            };

            var processId = Guid.Parse(client.Post(JsonConvert.SerializeObject(recordParams)).Replace("\"", string.Empty));
            var stage     = string.Empty;

            client.SetParams($"{{record}}:{processId}");
            while (stage != RecordProcessStage.ProcessCompleted && stage != RecordProcessStage.Failed)
            {
                var fatchClient = new PostClient($"{ServerAddr}Record?record={processId}");
                stage = fatchClient.Get().Replace("\"", string.Empty);
                progress.UPdateProgressStage(stage);
                Thread.Sleep(1000);
            }

            progress.FinishUpload();
        }
コード例 #2
0
ファイル: FileUpLoader.cs プロジェクト: SHWDTech/PowerQuality
        public static void UploadRecordFiles(Dictionary <string, string> recordConfigs, View.Progress progress, int startLine, int endLine)
        {
            var currentFileIndex = startLine / 16384;
            var offset           = (startLine % 16384);
            var files            = Directory.GetFiles(recordConfigs["Directory"], "*.HEX", SearchOption.AllDirectories);
            var currentLine      = startLine;
            var fileList         = new List <Dictionary <string, int> >();
            var fileName         = 0;

            while (currentLine < endLine)
            {
                fileList.Add(new Dictionary <string, int>
                {
                    { "file", currentFileIndex },
                    { "offset", offset },
                    { "fileName", fileName }
                });
                fileName++;
                offset       = 0;
                currentLine += 16384;
            }
            _fileCount     = (endLine - startLine) / 16384;
            _fileProcessed = 0;
            var fileNameList = new List <string>();

            foreach (var uploadFile in fileList)
            {
                var file = new RecordFile
                {
                    FileName = uploadFile["fileName"].ToString("D8"),
                    Configs  = recordConfigs
                };
                fileNameList.Add(uploadFile["fileName"].ToString("D8"));
                using (var reader = new BinaryReader(new FileStream(files[uploadFile["fileName"]], FileMode.Open)))
                {
                    file.FileDataBytes = new byte[(int)(reader.BaseStream.Length - uploadFile["offset"] * 16)];
                    reader.BaseStream.Seek(uploadFile["offset"] * 16, SeekOrigin.Begin);
                    reader.Read(file.FileDataBytes, 0, (int)(reader.BaseStream.Length - uploadFile["offset"] * 16));
                }

                var response = string.Empty;
                var tryTimes = 0;
                while (response != "255")
                {
                    if (tryTimes > 10)
                    {
                        return;
                    }
                    response = new PostClient($"{ServerAddr}RecordFile").Post(JsonConvert.SerializeObject(file));
                    tryTimes++;
                }

                _fileProcessed++;
                progress.UpdateProgressBar((_fileProcessed / (_fileCount * 1.0)) * 100);
            }
            StartRecordProcess(recordConfigs, progress, fileNameList);
        }