Files
ENIG/Cs_HMI/Project/ViewForm/fAgv.cs
2025-12-17 15:53:18 +09:00

202 lines
7.0 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;
rtSystem0.Rtf = PUB.AGV.system0.ToRtfString();
rtSystem1.Rtf = PUB.AGV.system1.ToRtfString();
rtSignal1.Rtf = PUB.AGV.signal1.ToRtfString();
rtSignal2.Rtf = PUB.AGV.signal2.ToRtfString();
rtData.Rtf = PUB.AGV.data.ToRtfString();
rtError.Rtf = PUB.AGV.error.ToRtfString();
lbPortName.Text = $"AGV:{PUB.setting.Port_AGV}\nBMS:{PUB.setting.Port_BAT}";
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( arDev.Narumi.eRunOpt.Forward);
}
private void button9_Click(object sender, EventArgs e)
{
var inputbox = AR.UTIL.InputBox("input value", "1000");
if (inputbox.Item1 == false) return;
if (UInt16.TryParse(inputbox.Item2, out UInt16 value) == false) return;
PUB.AGV.TurnGDSCenterScope(value);
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);
}
private void button17_Click(object sender, EventArgs e)
{
PUB.AGV.AGVMoveRun(arDev.Narumi.eRunOpt.Backward);
}
}
}