..
This commit is contained in:
214
Emulator/AGVEmulator/RunCode/_AGV.cs
Normal file
214
Emulator/AGVEmulator/RunCode/_AGV.cs
Normal file
@@ -0,0 +1,214 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using static AGVEmulator.DevAGV;
|
||||
|
||||
|
||||
namespace AGVEmulator
|
||||
{
|
||||
public partial class Form1
|
||||
{
|
||||
private void Agv_Command(object sender, commandargs e)
|
||||
{
|
||||
switch (e.Command.ToLower())
|
||||
{
|
||||
case "stopmark":
|
||||
agvViewer1.StopbyMark = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
private void Agv_StsValueChanged(object sender, DevAGV.StsValueChangedArgs e)
|
||||
{
|
||||
Console.WriteLine($"STS [{e.vtype}] VAL={e.Value}");
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
this.BeginInvoke(new EventHandler<StsValueChangedArgs>(Agv_StsValueChanged), sender, e);
|
||||
return;
|
||||
}
|
||||
switch (e.vtype)
|
||||
{
|
||||
case DevAGV.estsvaluetype.direction:
|
||||
foreach (RadioButton c in this.groupBox5.Controls)
|
||||
{
|
||||
if (c.Text[0].Equals(e.Value))
|
||||
{
|
||||
c.Checked = true;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
c.Checked = false;
|
||||
}
|
||||
c.Refresh();
|
||||
}
|
||||
groupBox5.Refresh();
|
||||
break;
|
||||
case DevAGV.estsvaluetype.bunki:
|
||||
foreach (RadioButton c in this.groupBox2.Controls)
|
||||
{
|
||||
if (c.Text[0].Equals(e.Value))
|
||||
{
|
||||
c.Checked = true;
|
||||
c.Refresh();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DevAGV.estsvaluetype.speed:
|
||||
foreach (RadioButton c in this.groupBox4.Controls)
|
||||
{
|
||||
if (c.Text[0].Equals(e.Value))
|
||||
{
|
||||
c.Checked = true;
|
||||
c.Refresh();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DevAGV.estsvaluetype.sensor:
|
||||
foreach (RadioButton c in this.groupBox8.Controls)
|
||||
{
|
||||
if (c.Text.Equals(e.Value))
|
||||
{
|
||||
c.Checked = true;
|
||||
c.Refresh();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void Agv_ValueChanged(object sender, DevAGV.ValueChangedArgs e)
|
||||
{
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
this.Invoke(new EventHandler<ValueChangedArgs>(Agv_ValueChanged), sender, e);
|
||||
return;
|
||||
}
|
||||
|
||||
//내부값이 바뀌었다면 컨트롤을 변경해준다.
|
||||
switch (e.vtype)
|
||||
{
|
||||
|
||||
case DevAGV.evaluetype.system0:
|
||||
foreach (CheckBox c in panel6.Controls)
|
||||
{
|
||||
var idx = int.Parse(c.Tag.ToString());
|
||||
if (idx == e.Idx)
|
||||
{
|
||||
c.Checked = e.Value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DevAGV.evaluetype.system1:
|
||||
|
||||
var v = (DevAGV.esystemflag1)e.Idx;
|
||||
if (e.Value)
|
||||
{
|
||||
if (v == esystemflag1.agv_run)
|
||||
{
|
||||
agvViewer1.wat.Restart();
|
||||
}
|
||||
if (v == esystemflag1.agv_stop)
|
||||
{
|
||||
agvViewer1.wat.Stop();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
foreach (CheckBox c in panel7.Controls)
|
||||
{
|
||||
var idx = int.Parse(c.Tag.ToString());
|
||||
if (idx == e.Idx)
|
||||
{
|
||||
c.Checked = e.Value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DevAGV.evaluetype.error:
|
||||
foreach (CheckBox c in panel9.Controls)
|
||||
{
|
||||
var idx = int.Parse(c.Tag.ToString());
|
||||
if (idx == e.Idx)
|
||||
{
|
||||
c.Checked = e.Value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DevAGV.evaluetype.signal:
|
||||
foreach (CheckBox c in panel8.Controls)
|
||||
{
|
||||
var idx = int.Parse(c.Tag.ToString());
|
||||
if (idx == e.Idx)
|
||||
{
|
||||
c.Checked = e.Value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void Agv_RequestStatusData(object sender, DevAGV.RequestStatusDataArgs e)
|
||||
{
|
||||
//UInt16 system0 = 0xFFFF;
|
||||
//UInt16 system1 = 0xFFFF;
|
||||
//UInt16 error = 0xFFFF;
|
||||
//byte signal = 0xFF;
|
||||
|
||||
aaplycheckboxbit(ref AGV.system0, panel6);
|
||||
aaplycheckboxbit(ref AGV.system1, panel7);
|
||||
aaplycheckboxbit(ref AGV.error, panel9);
|
||||
aaplycheckboxbit(ref AGV.signal, panel8);
|
||||
|
||||
if (this.agvViewer1.StopbyMark) AGV.sts_speed = 'S';
|
||||
else AGV.sts_speed = GetGroupItemCheckbox(groupBox4);
|
||||
AGV.sts_bunki = GetGroupItemCheckbox(groupBox2);
|
||||
AGV.sts_dir = GetGroupItemCheckbox(groupBox5);
|
||||
AGV.sts_sensor = GetGroupItemCheckbox(groupBox8);
|
||||
|
||||
//this.Invoke(new Action(() =>
|
||||
//{
|
||||
// e.system0 = system0;
|
||||
// e.system1 = system1;
|
||||
// e.error = error;
|
||||
// e.signal = signal;
|
||||
// e.speed = GetGroupItemCheckbox(groupBox4);
|
||||
// e.bunki = GetGroupItemCheckbox(groupBox2);
|
||||
// e.direction = GetGroupItemCheckbox(groupBox5);
|
||||
// e.sensor = GetGroupItemCheckbox(groupBox8);
|
||||
|
||||
// e.volt = 23.4f;
|
||||
//}));
|
||||
}
|
||||
private void AGV_Message(object sender, AR.Dev.RS232.MessageEventArgs e)
|
||||
{
|
||||
var dev = sender as AR.Dev.RS232;
|
||||
if (dev is DevBMS)
|
||||
{
|
||||
logBMS.Add(e.Message);
|
||||
}
|
||||
else if (dev is DevAGV)
|
||||
{
|
||||
logAGV.Add(e.Message);
|
||||
}
|
||||
else if (dev is DevXBE)
|
||||
{
|
||||
if (e.MsgType == AR.Dev.RS232.MessageType.Send)
|
||||
logCAL.Add(">> " + e.Data.HexString());
|
||||
else if (e.MsgType == AR.Dev.RS232.MessageType.Recv)
|
||||
logCAL.Add("<< " + e.Data.HexString());
|
||||
else logCAL.Add(e.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Emulator/AGVEmulator/RunCode/_BMS.cs
Normal file
60
Emulator/AGVEmulator/RunCode/_BMS.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
|
||||
namespace AGVEmulator
|
||||
{
|
||||
public partial class Form1
|
||||
{
|
||||
private void BMS_Message(object sender, AR.Dev.RS232.MessageEventArgs e)
|
||||
{
|
||||
|
||||
logBMS.Add(e.Message);
|
||||
|
||||
}
|
||||
|
||||
private void BMS_RequestVoltageData(object sender, DevBMS.RequestVoltageDataArgs e)
|
||||
{
|
||||
|
||||
//cell전압값추가
|
||||
for (int i = 0; i < cellvolt.Length; i++)
|
||||
{
|
||||
this.cellvolt[i] = (UInt16)rnd.Next(3300, 3350);
|
||||
}
|
||||
Array.Copy(this.cellvolt, 0, e.cellVolt, 0, 8);
|
||||
this.btc1.Invoke(new Action(() =>
|
||||
{
|
||||
var idx = 0;
|
||||
btc1.Text = (this.cellvolt[idx++] / 1000f).ToString();
|
||||
btc2.Text = (this.cellvolt[idx++] / 1000f).ToString();
|
||||
btc3.Text = (this.cellvolt[idx++] / 1000f).ToString();
|
||||
btc4.Text = (this.cellvolt[idx++] / 1000f).ToString();
|
||||
btc5.Text = (this.cellvolt[idx++] / 1000f).ToString();
|
||||
btc6.Text = (this.cellvolt[idx++] / 1000f).ToString();
|
||||
btc7.Text = (this.cellvolt[idx++] / 1000f).ToString();
|
||||
btc8.Text = (this.cellvolt[idx++] / 1000f).ToString();
|
||||
}));
|
||||
|
||||
}
|
||||
private void Bms_RequestBatteryData(object sender, DevBMS.RequestBatteryDataArgs e)
|
||||
{
|
||||
if (checkBox1.Checked)
|
||||
this.trackBar1.Invoke(new Action(() =>
|
||||
{
|
||||
this.trackBar1.Value -= 1;
|
||||
trackBar1_Scroll(null, null);
|
||||
}));
|
||||
|
||||
e.CurA = (int)BMS_CurA;
|
||||
e.MaxA = (int)BMS_MaxA;
|
||||
e.Remain = BMS_Remain;
|
||||
e.Volt = BMS_Volt;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
40
Emulator/AGVEmulator/RunCode/_XBEE.cs
Normal file
40
Emulator/AGVEmulator/RunCode/_XBEE.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using ENIG;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
|
||||
namespace AGVEmulator
|
||||
{
|
||||
public partial class Form1
|
||||
{
|
||||
|
||||
private void CAL_Message(object sender, AR.Dev.RS232.MessageEventArgs e)
|
||||
{
|
||||
|
||||
if (e.MsgType == AR.Dev.RS232.MessageType.Send)
|
||||
logCAL.Add(">> " + System.Text.Encoding.Default.GetString(e.Data));
|
||||
else if (e.MsgType == AR.Dev.RS232.MessageType.Recv)
|
||||
logCAL.Add("<< " + System.Text.Encoding.Default.GetString( e.Data));
|
||||
else logCAL.Add(e.Message);
|
||||
|
||||
}
|
||||
private void CAL_ProtocReceived(object sender, ENIG.EEProtocol.DataEventArgs e)
|
||||
{
|
||||
//throw new NotImplementedException();
|
||||
var dev = (DeviceType)e.ReceivedPacket.ID;
|
||||
if (dev == DeviceType.AGV1 || dev == DeviceType.AGV2)
|
||||
{
|
||||
//agv에서 들어오는 데이터
|
||||
var cmd = e.ReceivedPacket.Command;
|
||||
if(cmd == 3)
|
||||
{
|
||||
//status
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user