From 81c11601c53be1870ffaec9649e55bc98f2cf1fe Mon Sep 17 00:00:00 2001 From: backuppc Date: Mon, 10 Nov 2025 17:25:51 +0900 Subject: [PATCH] .. --- Cs_HMI/Project/CSetting.cs | 2 +- Cs_HMI/Project/ViewForm/fAgv.cs | 38 +++++++++++++++++-- Cs_HMI/SubProject/AGV/Structure/AgvData.cs | 18 +++++++++ Cs_HMI/SubProject/AGV/Structure/ErrorFlag.cs | 31 +++++++++++++++ Cs_HMI/SubProject/AGV/Structure/Signals.cs | 33 +++++++++++++++- .../SubProject/AGV/Structure/SystemFlag0.cs | 31 +++++++++++++++ .../SubProject/AGV/Structure/SystemFlag1.cs | 31 +++++++++++++++ 7 files changed, 178 insertions(+), 6 deletions(-) diff --git a/Cs_HMI/Project/CSetting.cs b/Cs_HMI/Project/CSetting.cs index d993a5a..275d148 100644 --- a/Cs_HMI/Project/CSetting.cs +++ b/Cs_HMI/Project/CSetting.cs @@ -166,7 +166,7 @@ namespace Project [Category("General Setting"), Browsable(false)] public string Language { get; set; } - [Category("General Setting"), DisplayName("Full Screen Window State"), + [Browsable(false), Category("General Setting"), DisplayName("Full Screen Window State"), Description("화면을 전체화면으로 사용 합니다.")] public Boolean FullScreen { get; set; } public bool DetectManualCharge { get; set; } diff --git a/Cs_HMI/Project/ViewForm/fAgv.cs b/Cs_HMI/Project/ViewForm/fAgv.cs index 6209be2..6e1dbbf 100644 --- a/Cs_HMI/Project/ViewForm/fAgv.cs +++ b/Cs_HMI/Project/ViewForm/fAgv.cs @@ -37,13 +37,43 @@ namespace Project.ViewForm timer1.Stop(); lbIP.Text = PUB.IP; label1.Text = PUB.AGV.LastSTS; - richTextBox1.Text = PUB.AGV.system0.ToString(); - richTextBox2.Text = PUB.AGV.system1.ToString(); - richTextBox3.Text = PUB.AGV.signal.ToString() + "\n" + PUB.AGV.data.ToString(); - richTextBox4.Text = PUB.AGV.error.ToString(); + + richTextBox1.Rtf = PUB.AGV.system0.ToRtfString(); + richTextBox2.Rtf = PUB.AGV.system1.ToRtfString(); + richTextBox3.Rtf = CombineRtfStrings(PUB.AGV.signal.ToRtfString(), PUB.AGV.data.ToRtfString()); + richTextBox4.Rtf = PUB.AGV.error.ToRtfString(); + timer1.Start(); } + private string CombineRtfStrings(string rtf1, string rtf2) + { + // RTF 문자열 합치기: 첫 번째 RTF의 닫는 } 제거하고 두 번째 RTF의 헤더 제거 + var rtf1Body = rtf1.Replace("}", "").Trim(); + var rtf2Lines = rtf2.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); + + var sb = new System.Text.StringBuilder(); + sb.Append(rtf1Body); + + // 두 번째 RTF의 헤더 부분 건너뛰기 + bool skipHeader = true; + foreach (var line in rtf2Lines) + { + if (line.Contains(@"\line") || (!line.StartsWith(@"{\rtf") && !line.StartsWith(@"{\colortbl") && !line.Contains("}"))) + { + skipHeader = false; + } + + if (!skipHeader && !line.Trim().Equals("}")) + { + sb.AppendLine(line); + } + } + + sb.AppendLine("}"); + return sb.ToString(); + } + private void fAgv_VisibleChanged(object sender, EventArgs e) { this.timer1.Enabled = this.Visible; diff --git a/Cs_HMI/SubProject/AGV/Structure/AgvData.cs b/Cs_HMI/SubProject/AGV/Structure/AgvData.cs index 7fa5ef0..3dc598a 100644 --- a/Cs_HMI/SubProject/AGV/Structure/AgvData.cs +++ b/Cs_HMI/SubProject/AGV/Structure/AgvData.cs @@ -60,6 +60,24 @@ namespace arDev return sb.ToString(); } + public string ToRtfString() + { + var sb = new System.Text.StringBuilder(); + sb.AppendLine(@"{\rtf1\ansi\deff0"); + sb.AppendLine(@"{\colortbl ;\red0\green0\blue255;}"); // Color 1 = Blue + + sb.AppendLine($"[Sts] : {Sts}" + @"\line"); + sb.AppendLine($"[Speed] : {Speed}" + @"\line"); + sb.AppendLine($"[Direction] : {Direction}" + @"\line"); + sb.AppendLine($"[guidesensor] : {guidesensor}" + @"\line"); + sb.AppendLine($"[TagNo] : {TagNo}" + @"\line"); + sb.AppendLine($"[CallNo] : {CallNo}" + @"\line"); + sb.AppendLine($"[CCANo] : {CCANo}" + @"\line"); + + sb.AppendLine("}"); + return sb.ToString(); + } + } } diff --git a/Cs_HMI/SubProject/AGV/Structure/ErrorFlag.cs b/Cs_HMI/SubProject/AGV/Structure/ErrorFlag.cs index e8ebb06..b97669d 100644 --- a/Cs_HMI/SubProject/AGV/Structure/ErrorFlag.cs +++ b/Cs_HMI/SubProject/AGV/Structure/ErrorFlag.cs @@ -91,6 +91,37 @@ namespace arDev } return sb.ToString(); } + + public string ToRtfString() + { + var sb = new System.Text.StringBuilder(); + sb.AppendLine(@"{\rtf1\ansi\deff0"); + sb.AppendLine(@"{\colortbl ;\red0\green0\blue255;}"); // Color 1 = Blue + + for (int i = 0; i < 16; i++) + { + var def = Enum.IsDefined(typeof(eflag), i); + if (def) + { + var flag = (eflag)i; + var value = _value.Get(i); + string line = $"[{i:00}][{flag}] : {value}"; + + // : true가 포함된 줄은 파란색 + if (value == true) + { + sb.AppendLine(@"\cf1 " + line + @"\cf0\line"); + } + else + { + sb.AppendLine(line + @"\line"); + } + } + } + + sb.AppendLine("}"); + return sb.ToString(); + } } } diff --git a/Cs_HMI/SubProject/AGV/Structure/Signals.cs b/Cs_HMI/SubProject/AGV/Structure/Signals.cs index a8f0484..5eea990 100644 --- a/Cs_HMI/SubProject/AGV/Structure/Signals.cs +++ b/Cs_HMI/SubProject/AGV/Structure/Signals.cs @@ -73,11 +73,42 @@ namespace arDev var value = _value.Get(i); sb.AppendLine($"[{i:00}][{flag}] : {value}"); } - + } return sb.ToString(); } + public string ToRtfString() + { + var sb = new System.Text.StringBuilder(); + sb.AppendLine(@"{\rtf1\ansi\deff0"); + sb.AppendLine(@"{\colortbl ;\red0\green0\blue255;}"); // Color 1 = Blue + + for (int i = 0; i < 16; i++) + { + var def = Enum.IsDefined(typeof(eflag), i); + if (def) + { + var flag = (eflag)i; + var value = _value.Get(i); + string line = $"[{i:00}][{flag}] : {value}"; + + // : true가 포함된 줄은 파란색 + if (value == true) + { + sb.AppendLine(@"\cf1 " + line + @"\cf0\line"); + } + else + { + sb.AppendLine(line + @"\line"); + } + } + } + + sb.AppendLine("}"); + return sb.ToString(); + } + } } diff --git a/Cs_HMI/SubProject/AGV/Structure/SystemFlag0.cs b/Cs_HMI/SubProject/AGV/Structure/SystemFlag0.cs index 5e3b2ba..2274b0e 100644 --- a/Cs_HMI/SubProject/AGV/Structure/SystemFlag0.cs +++ b/Cs_HMI/SubProject/AGV/Structure/SystemFlag0.cs @@ -69,6 +69,37 @@ namespace arDev } return sb.ToString(); } + + public string ToRtfString() + { + var sb = new System.Text.StringBuilder(); + sb.AppendLine(@"{\rtf1\ansi\deff0"); + sb.AppendLine(@"{\colortbl ;\red0\green0\blue255;}"); // Color 1 = Blue + + for (int i = 0; i < 16; i++) + { + var def = Enum.IsDefined(typeof(eflag), i); + if (def) + { + var flag = (eflag)i; + var value = _value.Get(i); + string line = $"[{i:00}][{flag}] : {value}"; + + // : true가 포함된 줄은 파란색 + if (value == true) + { + sb.AppendLine(@"\cf1 " + line + @"\cf0\line"); + } + else + { + sb.AppendLine(line + @"\line"); + } + } + } + + sb.AppendLine("}"); + return sb.ToString(); + } } } diff --git a/Cs_HMI/SubProject/AGV/Structure/SystemFlag1.cs b/Cs_HMI/SubProject/AGV/Structure/SystemFlag1.cs index 2207285..f6e82f7 100644 --- a/Cs_HMI/SubProject/AGV/Structure/SystemFlag1.cs +++ b/Cs_HMI/SubProject/AGV/Structure/SystemFlag1.cs @@ -89,6 +89,37 @@ namespace arDev return sb.ToString(); } + public string ToRtfString() + { + var sb = new System.Text.StringBuilder(); + sb.AppendLine(@"{\rtf1\ansi\deff0"); + sb.AppendLine(@"{\colortbl ;\red0\green0\blue255;}"); // Color 1 = Blue + + for (int i = 0; i < 16; i++) + { + var def = Enum.IsDefined(typeof(eflag), i); + if (def) + { + var flag = (eflag)i; + var value = _value.Get(i); + string line = $"[{i:00}][{flag}] : {value}"; + + // : true가 포함된 줄은 파란색 + if (value == true) + { + sb.AppendLine(@"\cf1 " + line + @"\cf0\line"); + } + else + { + sb.AppendLine(line + @"\line"); + } + } + } + + sb.AppendLine("}"); + return sb.ToString(); + } + } }