..
This commit is contained in:
@@ -635,7 +635,7 @@ namespace AGVSimulator.Forms
|
||||
/// <summary>
|
||||
/// 맵 스캔 모드에서 RFID로부터 노드 생성
|
||||
/// </summary>
|
||||
private void CreateNodeFromRfidScan(string rfidId, VirtualAGV selectedAGV)
|
||||
private void CreateNodeFromRfidScan(ushort rfidId, VirtualAGV selectedAGV)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -644,7 +644,7 @@ namespace AGVSimulator.Forms
|
||||
var currentDirection = directionItem?.Direction ?? AgvDirection.Forward;
|
||||
|
||||
// 중복 RFID 확인
|
||||
var existingNode = _simulatorCanvas.Nodes?.FirstOrDefault(n => n.RfidId.Equals(rfidId, StringComparison.OrdinalIgnoreCase));
|
||||
var existingNode = _simulatorCanvas.Nodes?.FirstOrDefault(n => n.RfidId == rfidId);
|
||||
if (existingNode != null)
|
||||
{
|
||||
// 이미 존재하는 노드로 이동
|
||||
@@ -805,7 +805,7 @@ namespace AGVSimulator.Forms
|
||||
if (agv.CurrentNodeId != null && agv.CurrentNodeId != _lastSentNodeId)
|
||||
{
|
||||
var rfid = GetRfidByNodeId(agv.CurrentNodeId);
|
||||
if (!string.IsNullOrEmpty(rfid))
|
||||
if (rfid > 0)
|
||||
{
|
||||
SendTag(rfid);
|
||||
_lastSentNodeId = agv.CurrentNodeId;
|
||||
@@ -842,7 +842,7 @@ namespace AGVSimulator.Forms
|
||||
|
||||
// RFID 값 확인
|
||||
var rfidId = _rfidTextBox.Text.Trim();
|
||||
if (string.IsNullOrEmpty(rfidId))
|
||||
if (ushort.TryParse(rfidId,out ushort rfidvalue)==false)
|
||||
{
|
||||
MessageBox.Show("RFID 값을 입력해주세요.", "알림", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
return;
|
||||
@@ -856,13 +856,13 @@ namespace AGVSimulator.Forms
|
||||
// 맵 스캔 모드일 때: 노드 자동 생성
|
||||
if (_isMapScanMode)
|
||||
{
|
||||
CreateNodeFromRfidScan(rfidId, selectedAGV);
|
||||
CreateNodeFromRfidScan(rfidvalue, selectedAGV);
|
||||
this._simulatorCanvas.FitToNodes();
|
||||
return;
|
||||
}
|
||||
|
||||
// RFID에 해당하는 노드 직접 찾기
|
||||
var targetNode = _simulatorCanvas.Nodes?.FirstOrDefault(n => n.RfidId.Equals(rfidId, StringComparison.OrdinalIgnoreCase));
|
||||
var targetNode = _simulatorCanvas.Nodes?.FirstOrDefault(n => n.RfidId == rfidvalue);
|
||||
if (targetNode == null)
|
||||
{
|
||||
MessageBox.Show($"RFID '{rfidId}'에 해당하는 노드를 찾을 수 없습니다.\n\n사용 가능한 RFID 목록:\n{GetAvailableRfidList()}",
|
||||
@@ -1255,10 +1255,12 @@ namespace AGVSimulator.Forms
|
||||
/// <summary>
|
||||
/// 노드 ID를 RFID 값으로 변환 (NodeResolver 사용)
|
||||
/// </summary>
|
||||
private string GetRfidByNodeId(string nodeId)
|
||||
private ushort GetRfidByNodeId(string nodeId)
|
||||
{
|
||||
var node = _simulatorCanvas.Nodes?.FirstOrDefault(n => n.Id == nodeId);
|
||||
return node?.HasRfid() == true ? node.RfidId : nodeId;
|
||||
if (node == null) return 0;
|
||||
if (node.HasRfid()) return node.RfidId;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1267,9 +1269,9 @@ namespace AGVSimulator.Forms
|
||||
private string GetDisplayName(string nodeId)
|
||||
{
|
||||
var node = _simulatorCanvas.Nodes?.FirstOrDefault(n => n.Id == nodeId);
|
||||
if (node != null && !string.IsNullOrEmpty(node.RfidId))
|
||||
if (node != null && node.HasRfid())
|
||||
{
|
||||
return node.RfidId;
|
||||
return node.RfidId.ToString("0000");
|
||||
}
|
||||
return $"({nodeId})";
|
||||
}
|
||||
@@ -1366,7 +1368,7 @@ namespace AGVSimulator.Forms
|
||||
{
|
||||
var info = advancedResult.DetailedPath[i];
|
||||
var rfidId = GetRfidByNodeId(info.NodeId);
|
||||
var nextRfidId = info.NextNodeId != null ? GetRfidByNodeId(info.NextNodeId) : "END";
|
||||
var nextRfidId = info.NextNodeId != null ? GetRfidByNodeId(info.NextNodeId).ToString("0000") : "-END-";
|
||||
|
||||
var flags = new List<string>();
|
||||
if (info.CanRotate) flags.Add("회전가능");
|
||||
@@ -1616,12 +1618,8 @@ namespace AGVSimulator.Forms
|
||||
/// </summary>
|
||||
private string GetNodeDisplayName(MapNode node)
|
||||
{
|
||||
if (node == null)
|
||||
return "-";
|
||||
|
||||
if (!string.IsNullOrEmpty(node.RfidId))
|
||||
return node.RfidId;
|
||||
|
||||
if (node == null) return "-";
|
||||
if (node.HasRfid()) return node.RfidId.ToString("0000");
|
||||
return $"({node.Id})";
|
||||
}
|
||||
|
||||
@@ -1792,7 +1790,7 @@ namespace AGVSimulator.Forms
|
||||
this.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
// RFID 텍스트박스에 값 입력
|
||||
_rfidTextBox.Text = nodeA.RfidId;
|
||||
_rfidTextBox.Text = nodeA.RfidId.ToString();
|
||||
|
||||
// 방향 콤보박스 선택
|
||||
SetDirectionComboBox(direction);
|
||||
@@ -1808,7 +1806,7 @@ namespace AGVSimulator.Forms
|
||||
this.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
// RFID 텍스트박스에 값 입력
|
||||
_rfidTextBox.Text = nodeB.RfidId;
|
||||
_rfidTextBox.Text = nodeB.RfidId.ToString();
|
||||
|
||||
// 방향 콤보박스 선택
|
||||
SetDirectionComboBox(direction);
|
||||
@@ -2415,19 +2413,18 @@ namespace AGVSimulator.Forms
|
||||
catch { }
|
||||
}
|
||||
|
||||
public void SendTag(string tagno)
|
||||
public void SendTag(ushort tagno)
|
||||
{
|
||||
if (_emulatorPort == null || !_emulatorPort.IsOpen) return;
|
||||
|
||||
tagno = tagno.PadLeft(6, '0');
|
||||
if (tagno.Length > 6) tagno = tagno.Substring(0, 6);
|
||||
var tagnostr = tagno.ToString("000000");
|
||||
|
||||
var barr = new List<byte>();
|
||||
barr.Add(0x02);
|
||||
barr.Add((byte)'T');
|
||||
barr.Add((byte)'A');
|
||||
barr.Add((byte)'G');
|
||||
barr.AddRange(System.Text.Encoding.Default.GetBytes(tagno));
|
||||
barr.AddRange(System.Text.Encoding.Default.GetBytes(tagnostr));
|
||||
barr.Add((byte)'*');
|
||||
barr.Add((byte)'*');
|
||||
barr.Add(0x03);
|
||||
|
||||
Reference in New Issue
Block a user