void progressBarBW_DoWork(object sender, DoWorkEventArgs e) { loggerInformation = new LoggerInformation(); if (SerialPort.GetPortNames().Contains(serialPort.PortName)) { errorDectected = communicationService.GenerateHexFile(serialPort, loggerInformation); Log.Write(LogConstant.ReadingLogger); } }
public bool CreateExcel(LoggerInformation loggerInformation) { var decoder = new HexFileDecoder(loggerInformation); var loggerVariables = decoder.AssignLoggerVariables(); if (loggerVariables.LoggerState != "Logging" && loggerVariables.LoggerState != "Stopped") { return(false); } var saveFilePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Temprecord\\TempLite\\"; var excelPath = saveFilePath + loggerInformation.SerialNumber + ".xlsx"; var excel = new ExcelPackage(); var workSheet = excel.Workbook.Worksheets.Add(loggerInformation.SerialNumber); CreateLayout(workSheet, loggerInformation, loggerVariables); excel.SaveAs(new FileInfo(excelPath)); return(true); }
private void CreateLayout(ExcelWorksheet workSheet, LoggerInformation loggerInformation, LoggerVariables loggerVariables) { var decoder = new HexFileDecoder(loggerInformation); var channelTwoEnabled = loggerVariables.IsChannelTwoEnabled; var channelOne = loggerVariables.ChannelOne; var channelTwo = loggerVariables.ChannelTwo; var saveFilePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Temprecord\\TempLite\\"; var path = saveFilePath + "Images\\"; if (channelOne.OutsideLimits == 0 && channelTwo.OutsideLimits == 0) { var tickImage = Image.FromFile(path + LabelConstant.WithinLimitImage); var setPosition = workSheet.Drawings.AddPicture(LabelConstant.WithinLimit, tickImage); setPosition.SetSize(145, 128); setPosition.SetPosition(80, 295); workSheet.Cells[12, 5].Value = LabelConstant.WithinLimit; workSheet.Cells[12, 5].Style.Font.Bold = true; workSheet.Cells[12, 5].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; } else { var warningImage = Image.FromFile(path + LabelConstant.LimitsExceededImage); var setPosition = workSheet.Drawings.AddPicture(LabelConstant.LimitsExceeded, warningImage); setPosition.SetSize(145, 128); setPosition.SetPosition(80, 295); workSheet.Cells[12, 5].Value = LabelConstant.LimitsExceeded; workSheet.Cells[12, 5].Style.Font.Bold = true; workSheet.Cells[12, 5].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; } var logoRange = workSheet.Cells[1, 3]; var logoImage = Image.FromFile(path + LabelConstant.LogoIcon); var setLogoPosition = workSheet.Drawings.AddPicture(string.Empty, logoImage); setLogoPosition.SetSize(103, 63); setLogoPosition.SetPosition(10, 65); workSheet.Cells[15, 2, 15, 3].Style.Font.Bold = true; workSheet.Cells[50, 2, 50, 3].Style.Font.Bold = true; workSheet.Cells[2, 1, 2, 5].Style.Font.Size = 20; workSheet.Cells[2, 1, 2, 5].Style.Font.Color.SetColor(Color.Blue); workSheet.Cells[2, 1, 2, 5].Style.Font.Bold = true; workSheet.Cells[4, 1, 4, 5].Style.Border.Top.Style = ExcelBorderStyle.Double; workSheet.Cells[4, 1, 4, 5].Style.Border.Top.Color.SetColor(Color.Blue); workSheet.Cells[1, 5].Value = DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm:sss UTC"); workSheet.Cells[2, 1].Value = LabelConstant.Title; workSheet.Cells[2, 5].Value = LabelConstant.SerialNumber + loggerVariables.SerialNumber; FillCells(workSheet, LabelConstant.Model, loggerInformation.LoggerName); FillCells(workSheet, LabelConstant.LoggerState, loggerVariables.LoggerState); FillCells(workSheet, LabelConstant.Battery, loggerVariables.BatteryPercentage); FillCells(workSheet, LabelConstant.SamplePeriod, loggerVariables.SameplePeriod); FillCells(workSheet, LabelConstant.StartDelay, loggerVariables.StartDelay); FillCells(workSheet, LabelConstant.FirstSample, loggerVariables.FirstSample); FillCells(workSheet, LabelConstant.LastSample, loggerVariables.LastSample); FillCells(workSheet, LabelConstant.RecordedSample, loggerVariables.RecordedSamples.ToString()); FillCells(workSheet, LabelConstant.TagsPlaced, loggerVariables.TagsPlaced.ToString()); row++; FillCells(workSheet, LabelConstant.Channel, LabelConstant.ChannelOneLabel); if (channelTwoEnabled) { workSheet.Cells[row - 1, 3].Value = LabelConstant.ChannelTwoLabel; } row++; FillChannelStatCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.PresentUpperLimit, c => c.PresetUpperLimit.ToString("N2")); FillChannelStatCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.PresentLowerLimit, c => c.PresetLowerLimit.ToString("N2")); FillChannelStatCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.Mean, c => c.Mean.ToString("N2")); FillChannelStatCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.MKT, c => c.MKT.ToString("N2")); FillChannelStatCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.Max, c => c.Max.ToString("N2")); FillChannelStatCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.Min, c => c.Min.ToString("N2")); FillChannelCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.SampleWithinLimits, c => c.WithinLimits.ToString()); FillChannelCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.TimeWithinLimits, c => c.TimeWithinLimits); FillChannelCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.SampleOutofLimits, c => c.OutsideLimits.ToString()); FillChannelCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.TimeOutOfLimits, c => c.TimeOutLimits); FillChannelCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.SampleAboveLimit, c => c.AboveLimits.ToString()); FillChannelCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.TimeAboveLimit, c => c.TimeAboveLimits); FillChannelCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.SampleBelowLimit, c => c.BelowLimits.ToString()); FillChannelCells(workSheet, channelOne, channelTwo, channelTwoEnabled, LabelConstant.TimeBelowLimit, c => c.TimeBelowLimits); FillCells(workSheet, LabelConstant.UserComment, string.Empty); if (loggerVariables.UserData.Length > 120) { var firstLine = loggerVariables.UserData.Substring(0, loggerVariables.UserData.Length / 2); var secondLine = loggerVariables.UserData.Substring(loggerVariables.UserData.Length / 2); FillCells(workSheet, firstLine, string.Empty); FillCells(workSheet, secondLine, string.Empty); } else { FillCells(workSheet, loggerVariables.UserData, string.Empty); } row = 50; if (channelTwoEnabled) { workSheet.Cells[row, 3].Value = LabelConstant.ChannelTwoLabel; } FillCells(workSheet, LabelConstant.DateTime, LabelConstant.ChannelOneLabel); row++; var startRange = row; var endRange = (row + loggerVariables.RecordedSamples); FillValueCells(workSheet, decoder, loggerVariables, channelOne, channelTwo, startRange, endRange); CreateGraph(workSheet, loggerVariables, channelOne, channelTwo, startRange, endRange); workSheet.Cells[workSheet.Dimension.Address].AutoFitColumns(); }
public bool CreatePDF(LoggerInformation loggerInformation) { double lineCounter = 80; var decoder = new HexFileDecoder(loggerInformation); var loggerVariables = decoder.AssignLoggerVariables(); var channelOne = loggerVariables.ChannelOne; var channelTwo = loggerVariables.ChannelTwo; var channelTwoEnabled = loggerVariables.IsChannelTwoEnabled; var pen = new PDFPen(Color.Black, 1); var font = new PDFFont(FontType.Helvetica, 10, PDF.Drawing.FontStyle.Regular); var boldFont = new PDFFont(FontType.Helvetica, 10, PDF.Drawing.FontStyle.Bold); if (loggerVariables.LoggerState != "Logging" && loggerVariables.LoggerState != "Stopped") { return(false); } var pdfPage = CreateNewPage(font, loggerInformation.SerialNumber); void DrawChannelStatistics(string Label, Func <ChannelConfig, string> getString, double lineConterMultiplier = 1.0) { pdfPage.DrawString(Label, boldFont, Color.Black, PDFcoordinates.firstColumn, (float)lineCounter); pdfPage.DrawString(getString(channelOne) + channelOne.Unit, font, Color.Black, PDFcoordinates.secondColumn, (float)lineCounter); if ((channelTwoEnabled) && Label != LabelConstant.MKT) { pdfPage.DrawString(getString(channelTwo) + channelTwo.Unit, font, Color.Black, PDFcoordinates.thirdColumn, (float)lineCounter); } lineCounter += PDFcoordinates.lineInc * lineConterMultiplier; } void DrawChannelLimits(string Label, Func <ChannelConfig, string> getString, double lineConterMultiplier = 1.0) { pdfPage.DrawString(Label, boldFont, Color.Black, PDFcoordinates.firstColumn, (float)lineCounter); pdfPage.DrawString(getString(channelOne), font, Color.Black, PDFcoordinates.secondColumn, (float)lineCounter); if (channelTwoEnabled) { pdfPage.DrawString(getString(channelTwo), font, Color.Black, PDFcoordinates.thirdColumn, (float)lineCounter); } lineCounter += PDFcoordinates.lineInc * lineConterMultiplier; } void DrawSection(string firstColoumString, string secondColoumString, double lineConterMultiplier = 1.0) { pdfPage.DrawString(firstColoumString, boldFont, Color.Black, PDFcoordinates.firstColumn, (float)lineCounter); pdfPage.DrawString(secondColoumString, font, Color.Black, PDFcoordinates.secondColumn, (float)lineCounter); lineCounter += PDFcoordinates.lineInc * lineConterMultiplier; } if (channelOne.OutsideLimits == 0 && channelTwo.OutsideLimits == 0) { var greenPen = new PDFPen(Color.LimeGreen, 15); pdfPage.DrawLine(greenPen, 550, 163, 570, 180); pdfPage.DrawLine(greenPen, 570, 190, 632, 120); pdfPage.DrawString(LabelConstant.WithinLimit, font, Color.Black, PDFcoordinates.limitInfo_X, PDFcoordinates.limitInfo_Y); } else { var redPen = new PDFPen(Color.OrangeRed, 15); pdfPage.DrawLine(redPen, 550, 125, 610, 190); pdfPage.DrawLine(redPen, 550, 190, 610, 125); pdfPage.DrawString(LabelConstant.LimitsExceeded, font, Color.Black, PDFcoordinates.limitInfo_X, PDFcoordinates.limitInfo_Y); } //Draw the boxes pdfPage.DrawRectangle(pen, PDFcoordinates.box1_X1, PDFcoordinates.box1_Y1, PDFcoordinates.box1_X2 - PDFcoordinates.box1_X1, PDFcoordinates.box1_Y2 - PDFcoordinates.box1_Y1); pdfPage.DrawRectangle(pen, PDFcoordinates.box2_X1, PDFcoordinates.box2_Y1, PDFcoordinates.box2_X2 - PDFcoordinates.box2_X1, PDFcoordinates.box2_Y2 - PDFcoordinates.box2_Y1); pdfPage.DrawRectangle(pen, PDFcoordinates.box3_X1, PDFcoordinates.box3_Y1, PDFcoordinates.box3_X2 - PDFcoordinates.box3_X1, PDFcoordinates.box3_Y2 - PDFcoordinates.box3_Y1); //Draw the Text DrawSection(LabelConstant.Model, loggerInformation.LoggerName); DrawSection(LabelConstant.LoggerState, loggerVariables.LoggerState); DrawSection(LabelConstant.Battery, loggerVariables.BatteryPercentage); DrawSection(LabelConstant.SamplePeriod, loggerVariables.SameplePeriod + LabelConstant.TimeSuffix); DrawSection(LabelConstant.StartDelay, loggerVariables.StartDelay + LabelConstant.TimeSuffix); DrawSection(LabelConstant.FirstSample, loggerVariables.FirstSample); DrawSection(LabelConstant.LastSample, loggerVariables.LastSample); DrawSection(LabelConstant.RecordedSample, loggerVariables.RecordedSamples.ToString()); DrawSection(LabelConstant.TotalTrips, loggerVariables.TotalTrip.ToString()); DrawSection(LabelConstant.TagsPlaced, loggerVariables.TagsPlaced.ToString()); lineCounter -= PDFcoordinates.lineInc * 0.5; pdfPage.DrawLine(pen, 20, lineCounter, 680, lineCounter); lineCounter += PDFcoordinates.lineInc * 0.75; pdfPage.DrawString(LabelConstant.Channel, boldFont, Color.Black, PDFcoordinates.firstColumn, lineCounter); pdfPage.DrawString(LabelConstant.ChannelOneLabel, boldFont, Color.Black, PDFcoordinates.secondColumn, lineCounter); if (channelTwoEnabled) { pdfPage.DrawString(LabelConstant.ChannelTwoLabel, boldFont, Color.Black, PDFcoordinates.thirdColumn, (float)lineCounter); } lineCounter += PDFcoordinates.lineInc; if (channelOne.AboveLimits > 0) { pdfPage.DrawString(DecodeConstant.Exceeded, font, Color.Black, PDFcoordinates.secondColumn + 50, (float)lineCounter); } if (channelTwo.AboveLimits > 0) { pdfPage.DrawString(DecodeConstant.Exceeded, font, Color.Black, PDFcoordinates.thirdColumn + 50, (float)lineCounter); } DrawChannelStatistics(LabelConstant.PresentUpperLimit, c => c.PresetUpperLimit.ToString("N2")); if (channelOne.BelowLimits > 0) { pdfPage.DrawString(DecodeConstant.Exceeded, font, Color.Black, PDFcoordinates.secondColumn + 50, (float)lineCounter); } if (channelTwo.BelowLimits > 0) { pdfPage.DrawString(DecodeConstant.Exceeded, font, Color.Black, PDFcoordinates.thirdColumn + 50, (float)lineCounter); } DrawChannelStatistics(LabelConstant.PresentLowerLimit, c => c.PresetLowerLimit.ToString("N2")); DrawChannelStatistics(LabelConstant.Mean, c => c.Mean.ToString("N2")); DrawChannelStatistics(LabelConstant.MKT, c => c.MKT.ToString("N2")); DrawChannelStatistics(LabelConstant.Max, c => c.Max.ToString("N2")); DrawChannelStatistics(LabelConstant.Min, c => c.Min.ToString("N2")); lineCounter += (PDFcoordinates.lineInc * 0.5); DrawChannelLimits(LabelConstant.SampleWithinLimits, c => c.WithinLimits.ToString()); DrawChannelLimits(LabelConstant.TimeWithinLimits, c => c.TimeWithinLimits); lineCounter += (PDFcoordinates.lineInc * 0.5); DrawChannelLimits(LabelConstant.SampleOutofLimits, c => c.OutsideLimits.ToString()); DrawChannelLimits(LabelConstant.TimeOutOfLimits, c => c.TimeOutLimits); lineCounter += (PDFcoordinates.lineInc * 0.5); DrawChannelLimits(LabelConstant.SampleAboveLimit, c => c.AboveLimits.ToString()); DrawChannelLimits(LabelConstant.TimeAboveLimit, c => c.TimeAboveLimits); lineCounter += (PDFcoordinates.lineInc * 0.5); DrawChannelLimits(LabelConstant.SampleBelowLimit, c => c.BelowLimits.ToString()); DrawChannelLimits(LabelConstant.TimeBelowLimit, c => c.TimeBelowLimits); DrawSection(LabelConstant.UserComment, string.Empty); if (loggerVariables.UserData.Length > 140) { var firstLine = loggerVariables.UserData.Substring(0, loggerVariables.UserData.Length / 2); var secondLine = loggerVariables.UserData.Substring(loggerVariables.UserData.Length / 2); pdfPage.DrawString(firstLine, font, Color.Black, PDFcoordinates.firstColumn, lineCounter); lineCounter += PDFcoordinates.lineInc; pdfPage.DrawString(secondLine, font, Color.Black, PDFcoordinates.firstColumn, lineCounter); lineCounter += PDFcoordinates.lineInc * 0.5; } else { pdfPage.DrawString(loggerVariables.UserData, font, Color.Black, PDFcoordinates.firstColumn, lineCounter); lineCounter += PDFcoordinates.lineInc; } pdfPage.DrawLine(pen, 20, lineCounter, 680, lineCounter); lineCounter += PDFcoordinates.lineInc * 0.75; pdfPage.DrawString(LabelConstant.ChannelOneLabel + channelOne.Unit, font, Color.DarkOliveGreen, PDFcoordinates.secondColumn, lineCounter); if (channelTwoEnabled) { pdfPage.DrawString(LabelConstant.ChannelTwoLabel + channelTwo.Unit, font, Color.MediumPurple, PDFcoordinates.secondColumn + 120, lineCounter); } lineCounter += PDFcoordinates.lineInc; pdfPage.DrawString(LabelConstant.Comment, font, Color.Black, PDFcoordinates.commentX, PDFcoordinates.commentY); pdfPage.DrawString(LabelConstant.Signature, font, Color.Black, PDFcoordinates.sigX, PDFcoordinates.sigY); //Draw graph DrawGraph(decoder, loggerVariables, pdfPage, pen, font); FillInValues(decoder, loggerVariables, loggerInformation.SerialNumber); var saveFilePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Temprecord\\TempLite\\"; var filename = saveFilePath + loggerInformation.SerialNumber + ".pdf"; pdfDocument.Save(filename); return(true); }