Files
ENIG/Cs_HMI/Project/ViewForm/fAgv.cs
backuppc 98d638cd9a ..
2025-12-05 17:31:56 +09:00

192 lines
6.5 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using COMM;
namespace Project.ViewForm
{
public partial class fAgv : Form
{
public fAgv()
{
InitializeComponent();
this.FormClosed += FIO_FormClosed;
}
private void fFlag_Load(object sender, EventArgs e)
{
this.timer1.Start();
}
private void FIO_FormClosed(object sender, FormClosedEventArgs e)
{
this.timer1.Stop();
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
lbIP.Text = PUB.IP;
label1.Text = PUB.AGV.LastSTS;
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;
if (timer1.Enabled) timer1.Start();
else timer1.Stop();
}
private void button1_Click(object sender, EventArgs e)
{
PUB.AGV.AGVErrorReset();
if(PUB.sm.Step == StateMachine.eSMStep.RUN)
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
}
private void button2_Click(object sender, EventArgs e)
{
PUB.log.Add($"사용자 충전 명령 전송 : {PUB.setting.ChargerID}");
PUB.AGV.AGVCharge(PUB.setting.ChargerID, true);
if (PUB.sm.Step == StateMachine.eSMStep.RUN)
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
}
private void button3_Click(object sender, EventArgs e)
{
PUB.AGV.AGVCharge(PUB.setting.ChargerID, false);
if (PUB.sm.Step == StateMachine.eSMStep.RUN)
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
}
private void button4_Click(object sender, EventArgs e)
{
PUB.AGV.AGVMoveStop("userbutton page:fagv button:button4");
if (PUB.sm.Step == StateMachine.eSMStep.RUN)
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
}
private void button5_Click(object sender, EventArgs e)
{
PUB.AGV.AGVMoveStop("user button clic fagv",arDev.Narumi.eStopOpt.MarkStop);
if (PUB.sm.Step == StateMachine.eSMStep.RUN)
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
}
private void button7_Click(object sender, EventArgs e)
{
PUB.AGV.AGVMoveManual(arDev.Narumi.ManulOpt.FS, arDev.Narumi.Speed.Low, arDev.Narumi.Sensor.AllOn);
if (PUB.sm.Step == StateMachine.eSMStep.RUN)
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
}
private void button6_Click(object sender, EventArgs e)
{
PUB.AGV.AGVMoveManual(arDev.Narumi.ManulOpt.BS, arDev.Narumi.Speed.Low, arDev.Narumi.Sensor.AllOn);
if (PUB.sm.Step == StateMachine.eSMStep.RUN)
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
}
private void button8_Click(object sender, EventArgs e)
{
PUB.AGV.AGVMoveRun();
}
private void button9_Click(object sender, EventArgs e)
{
PUB.AGV.TurnGDSCenterScope();
if (PUB.sm.Step == StateMachine.eSMStep.RUN)
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
}
private void button16_Click(object sender, EventArgs e)
{
var inputbox = AR.UTIL.InputBox("input value","100");
if (inputbox.Item1 == false) return;
if (int.TryParse(inputbox.Item2, out int value) == false) return;
PUB.AGV.SetBackturnTime(value);
if (PUB.sm.Step == StateMachine.eSMStep.RUN)
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
}
private void button10_Click(object sender, EventArgs e)
{
var inputbox = AR.UTIL.InputBox("input value","50");
if (inputbox.Item1 == false) return;
if (int.TryParse(inputbox.Item2, out int value) == false) return;
PUB.AGV.SetGateOutOffTime(value);
if (PUB.sm.Step == StateMachine.eSMStep.RUN)
PUB.sm.SetNewStep(StateMachine.eSMStep.IDLE);
}
private void button14_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.ON);
}
private void button15_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.OFF);
}
private void button11_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
}
private void button13_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.DN);
}
private void button12_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.STP);
}
}
}