laatzen/GenesisDisplayTool/RawData.cs
2021-10-01 11:10:17 +02:00

344 lines
15 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Globalization;
using System.Text.RegularExpressions;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Printing;
using ZedGraph;
using System.IO;
namespace GenesisDisplayTool
{
public static partial class RawData
{
public static void DisplayText(String timestamp, String data, CultureInfo culture)
{
if (GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.InvokeRequired)
{
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.Invoke((Action<String, String, CultureInfo>)DisplayText, timestamp, data, culture);
return;
}
try
{
#region Display in textbox
if (!String.IsNullOrEmpty(data))
{
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.rtB_RawData_RxData.AppendText($"{data}");
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.rtB_RawData_RxData.ScrollToCaret();
if (GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.rtB_RawData_RxData.Text.Length > GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.nUD_Settings_RxDataAutoclear.Value)
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.rtB_RawData_RxData.Clear();
#endregion
}
}
catch (Exception ex)
{
ErrorLog.Log(LogErrReason.Exception(), "RawData.DisplayText() failed", $"0x{ex.HResult.ToString("X", culture)}", "first try/catch (Display in textbox)");
return;
}
}
public static void SaveText(String savePath, String timestamp, Boolean loggingEnable, String data, Int32 cyclesToStorage, CultureInfo culture)
{
String _data = data;
#region Save raw data
if (Boolean.Equals(loggingEnable, true))
{
try
{
if (!String.IsNullOrEmpty(_data))
{
var temp = $"{ timestamp}{ _data}";
// if (GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.RawDataToLogCounter > cyclesToStorage)
// {
Task.Run(() =>
{
using (StreamWriter sw = File.AppendText(@savePath))
{
sw.Write(temp);
}
});
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.SetRawDataToLogCounter(0);
// }
// else
// GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.RawDataToLogCounter++;
}
}
catch (Exception ex)
{
ErrorLog.Log(LogErrReason.Exception(), "RawData.SaveText() failed", $"0x{ex.HResult.ToString("X", culture)}", "second try/catch (save raw data)");
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.SetRawLoggingSingleMeterEnable(false);
}
}
#endregion
}
public static void DisplayAndSaveRawMeter1(String rxStringDataChannel, String saveDataPathRawMeter1, String timestamp, Int32 autoclear, ref Boolean loggingEnable, ref String dataToLog, Int32 cyclesToStorage)
{
CultureInfo culture = GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetGlobalCulture();
try
{
#region Display in label
String display = String.Empty;
if (rxStringDataChannel.Count() > 20)
display = $"{ rxStringDataChannel.Substring(0, 20)} [...]";
else
display = rxStringDataChannel;
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.l_RawDataMeter1.Text = display;
#endregion
}
catch (Exception ex)
{
ErrorLog.Log(LogErrReason.Exception(), "RawData.DisplayAndSaveRawMeter1() failed", $"0x{ex.HResult.ToString("X", culture)}", String.Empty);
return;
}
#region Save raw data
if (loggingEnable == true) //LoggingRawEn
{
try
{
rxStringDataChannel = rxStringDataChannel.Replace("\n", String.Empty);
dataToLog = dataToLog + timestamp + rxStringDataChannel + "\r\n";
if (GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetRawDataToLogCounterMeter1() > cyclesToStorage)
{
String temp = dataToLog;
Task.Run(() =>
{
using (StreamWriter sw = File.AppendText(@saveDataPathRawMeter1))
{
sw.Write(temp);
}
});
dataToLog = String.Empty;
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.SetRawDataToLogCounterMeter1(0);
}
else
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.SetRawDataToLogCounterMeter1(GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetRawDataToLogCounterMeter1() + 1);
}
catch (Exception ex)
{
ErrorLog.Log(LogErrReason.Exception(), "RawData.DisplayAndSaveRawMeter1() failed", $"0x{ex.HResult.ToString("X", GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetGlobalCulture())}", "second try/catch (save raw data)");
loggingEnable = false; // LoggingRawEn = false;
}
}
#endregion
}
public static void DisplayAndSaveRawMeter2(String rxStringDataChannel, String saveDataPathRawMeter2, String timestamp, Int32 autoclear, ref Boolean loggingEnable, ref String dataToLog, Int32 cyclesToStorage)
{
try
{
#region Display in label
String display = String.Empty;
if (rxStringDataChannel.Count() > 20)
display = $"{rxStringDataChannel.Substring(0, 20)} [...]";
else
display = rxStringDataChannel;
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.l_RawDataMeter2.Text = display;
#endregion
}
catch (Exception ex)
{
ErrorLog.Log(LogErrReason.Exception(), "RawData.DisplayAndSaveRawMeter2() failed", $"0x{ex.HResult.ToString("X", GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetGlobalCulture())}", String.Empty);
return;
}
#region Save raw data
if (loggingEnable == true) //LoggingRawEn
{
try
{
rxStringDataChannel = rxStringDataChannel.Replace("\n", String.Empty);
dataToLog = $"{dataToLog}{timestamp + rxStringDataChannel}\r\n";
if (GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetRawDataToLogCounterMeter2() > cyclesToStorage)
{
String temp = dataToLog;
Task.Run(() =>
{
using (StreamWriter sw = File.AppendText(@saveDataPathRawMeter2))
{
sw.Write(temp);
}
});
dataToLog = String.Empty;
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.SetRawDataToLogCounterMeter2(0);
}
else
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.SetRawDataToLogCounterMeter2(GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetRawDataToLogCounterMeter2() + 1);
}
catch (Exception ex)
{
ErrorLog.Log(LogErrReason.Exception(), "RawData.DisplayAndSaveRawMeter2() failed", $"0x{ex.HResult.ToString("X", GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetGlobalCulture())}", "second try/catch (save raw data)");
loggingEnable = false; // LoggingRawEn = false;
}
}
#endregion
}
public static void DisplayAndSaveRawMeter3(String rxStringDataChannel, String saveDataPathRawMeter3, String timestamp, Int32 autoclear, ref Boolean loggingEnable, ref String dataToLog, Int32 cyclesToStorage)
{
try
{
#region Display in label
String display = String.Empty;
if (rxStringDataChannel.Count() > 20)
display = $"{rxStringDataChannel.Substring(0, 20)} [...]";
else
display = rxStringDataChannel;
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.l_RawDataMeter3.Text = display;
#endregion
}
catch (Exception ex)
{
ErrorLog.Log(LogErrReason.Exception(), "RawData.DisplayAndSaveRawMeter3() failed", $"0x{ex.HResult.ToString("X")}", String.Empty);
return;
}
#region Save raw data
if (loggingEnable == true) //LoggingRawEn
{
try
{
rxStringDataChannel = rxStringDataChannel.Replace("\n", String.Empty);
dataToLog = dataToLog + timestamp + rxStringDataChannel + "\r\n";
if (GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetRawDataToLogCounterMeter3() > cyclesToStorage)
{
String temp = dataToLog;
Task.Run(() =>
{
using (StreamWriter sw = File.AppendText(@saveDataPathRawMeter3))
{
sw.Write(temp);
}
});
dataToLog = String.Empty;
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.SetRawDataToLogCounterMeter3(0);
}
else
GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.SetRawDataToLogCounterMeter3(GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetRawDataToLogCounterMeter3() + 1);
}
catch (Exception ex)
{
ErrorLog.Log(LogErrReason.Exception(), "RawData.DisplayAndSaveRawMeter3() failed", $"0x{ex.HResult.ToString("X", GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetGlobalCulture())}", "second try/catch (save raw data)");
loggingEnable = false; // LoggingRawEn = false;
}
}
#endregion
}
public static void Print(String inputText, Boolean setHeader, PrintDocument docToPrint, Int32 hMargin, Int32 vMargin)
{
#region Header
String PrintHeader0 = "------------------------------SENSUS Hannover GmbH-----------------------------------\n\n";
String PrintHeader1 = $" {GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.l_About_Version.Text}\n";
String PrintHeader2 = $" {GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.l_About_Author.Text}\n";
String PrintHeader3 = DateTime.Now.ToString(" yyyy-MM-dd/ HH:mm:ss\n");
String PrintHeader4 = " The content of the raw data-window is shown \n";
String PrintHeader5 = "--------------------------------------------------------------------------------------------------\n\n";
String PrintHeader = String.Empty;
if (setHeader)
PrintHeader = $"{PrintHeader0}{PrintHeader1}{PrintHeader2}{PrintHeader3}{PrintHeader4}{PrintHeader5}";
#endregion
#region Print dialog
PrintDocument DocToPrint = new PrintDocument();
PrintDialog PrintDialog1 = new PrintDialog();
PrintDialog1.AllowSomePages = true;
PrintDialog1.ShowHelp = true;
PrintDialog1.Document = DocToPrint;
DialogResult Result = PrintDialog1.ShowDialog();
#endregion
#region Print settings
DocToPrint.PrintPage += delegate (object sender1, PrintPageEventArgs e1)
{
// e1.Graphics.DrawString(PrintHeader+RxDataBox.Text, new Font("Times New Roman", 12), new SolidBrush(Color.Black), new RectangleF(0, 0, docToPrint.DefaultPageSettings.PrintableArea.Width, docToPrint.DefaultPageSettings.PrintableArea.Height));
e1.Graphics.DrawString(PrintHeader + inputText, new Font("Times New Roman", 12), new SolidBrush(Color.Black), new RectangleF(hMargin, vMargin, docToPrint.DefaultPageSettings.PrintableArea.Width, docToPrint.DefaultPageSettings.PrintableArea.Height));
};
#endregion
#region Perform printing
if (Result == DialogResult.OK)
{
try
{
Task.Run(() =>
{
DocToPrint.Print();
});
}
catch (Exception ex)
{
ErrorLog.Log(LogErrReason.Exception(), "RawData.Print() failed", $"0x{ex.HResult.ToString("X", GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetGlobalCulture())}", String.Empty);
MessageBox.Show("Printing Error", "Form closing", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion
}
public static RichTextBox SetTextbox(String RxString, Int32 clearval)
{
RichTextBox Textbox = new RichTextBox();
try
{
#region Display in textbox
Textbox.AppendText(RxString);
Textbox.ScrollToCaret();
if (Textbox.Text.Length > clearval) // nUD_Settings_RxDataAutoclear.Value
Textbox.Clear();
#endregion
}
catch (Exception ex)
{
ErrorLog.Log(LogErrReason.Exception(), "SetTextbox() failed", $"0x{ex.HResult.ToString("X", GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetGlobalCulture())}", "first try/catch (Display in textbox)");
}
return Textbox;
}
public static void Log(String RxString, DecodedData[] decoded, String saveDataPathRaw, ref Boolean loggingRawEn)
{
#region Save raw data
if (loggingRawEn) // LoggingRawEn
{
//Task.Run(() =>
//{
try
{
using (StreamWriter sw = File.AppendText(@saveDataPathRaw))
{
RxString = RxString.Replace("\n", String.Empty);
sw.WriteLine(decoded[0].RawTimestamp + RxString);
//sw.Dispose();
}
}
catch (Exception ex)
{
ErrorLog.Log(LogErrReason.Exception(), "Log() failed", $"0x{ex.HResult.ToString("X", GENESIS_DISPLAY_TOOL._GENESIS_DISPLAY_TOOL.GetGlobalCulture())}", "second try/catch (save raw data)");
loggingRawEn = false;
}
//});
}
#endregion
}
}
}