2025-11-01 15:24:28 +08:00

137 lines
4.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Rovinj.Device;
using Rovinj.Log;
using Rovinj.Reader;
using Rovinj.Reader.Silion;
using Rovinj.Tunnel;
using Rovinj.Tunnel.Plc;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TunnelNuget;
using static TunnelNuget.InfoParams;
namespace UITunnel
{
internal class Program
{
/// <summary>
/// 模拟连接隧道机
/// </summary>
static void Main(string[] args)
{
//创建日志目录
if (!Directory.Exists("log"))
Directory.CreateDirectory("log");
//初始化日志组件(仅供测试使用)
Rovinj.Log.LogHelper.InitLogger(new Rovinj.Log.TextLog($"log\\{DateTime.Now:yyyy-MM-dd}.log"));
//隧道机业务层
RfidTunnel rfidTunnel = new RfidTunnel();
////配置RFID读写器参数
#region RFID读写器参数
//SilionReaderConfig readerConfig = new SilionReaderConfig()
//{
// Qvalue = 5,
// Session = 1,
// ReadTID = false,
// Target = 0,
// RfMode = 1,
// IsFastRead = true,
// QuickModeType = 3,
// Antennas = new List<SilionAntennaConfig>(),
//};
//double power = 30; //功率
//int antCount = 4; //4个天线
////根据用户输入的天线数量(默认 4 个),给每个天线端口配置功率和启用状态。
//for (int i = 0; i < antCount; i++)
//{
// readerConfig.Antennas.Add(new SilionAntennaConfig()
// {
// IsEnabled = true,
// PortNumber = (ushort)(i + 1),
// TxPowerInDbm = power
// });
//}
#endregion
var readerParams = new SilionReaderParams
{
QValue = 5,
Session = 1,
ReadTID = false,
Target = 0,
RfMode = 1,
IsFastRead = true,
QuickModeType = 3,
AntCount = 4,
PowerDbm = 30
};
SilionReaderConfig readerConfig = SilionReaderFactory.Create(readerParams);
#region PLC连接方式
//ConnectionConfig plcConnectionConfig = new ConnectionConfig();
//plcConnectionConfig.ConnectionMode = ConnectionMode.Network; //网口连接模式
//plcConnectionConfig.NetworkAddress = "192.168.1.250"; //PLC IP地址
//plcConnectionConfig.NetworkPort = 502; //PLC 端口号
#endregion
var PlcParameters = new PlcConnectionParams
{
Address = "192.168.1.250",
Mode = ConnectionMode.Network,
Port = 502
};
ConnectionConfig plcConnectionConfig = PlcConnectionFactory.Create(PlcParameters);
#region
//ConnectionConfig readerConnectionConfig = new ConnectionConfig();
//readerConnectionConfig.Args = new object[] { antCount }; //天线数量默认是4个天线支持1,2,4,8,16
//readerConnectionConfig.ConnectionMode = ConnectionMode.Network; //网口连接模式
//readerConnectionConfig.NetworkAddress = "192.168.1.100";
#endregion
var ReaderParameters = new ReaderConnectionParams
{
Args = new object[] { 4 },
Mode = ConnectionMode.Network,
Address = "192.168.1.100"
};
ConnectionConfig readerConnectionConfig = ReaderConnectionFactory.Create(ReaderParameters);
//封装成隧道配置 根据用户选择,判断是三菱还是西门子 PLC。
TunnelConfig tunnelConfig = new TunnelConfig()
{
PlcType = PlcType.Mitsubishi_FX5U, //PLC类型
PlcConnectionConfig = plcConnectionConfig, //PLC连接配置
ReaderConnectionConfig = readerConnectionConfig, //读写器连接配置
ReaderConfig = readerConfig, //读写器配置
ReaderType = Rovinj.Tunnel.Reader.ReaderType.Silion //读写器类型
};
//西门子PLC暂时不支持使用串口的通讯方式
if ((tunnelConfig.PlcType == PlcType.Mitsubishi_FX5U || tunnelConfig.PlcType == PlcType.Siemens)
&& tunnelConfig.PlcConnectionConfig.ConnectionMode != ConnectionMode.Network)
{
LogHelper.Error("暂不支持的连接方式!");
return;
}
//是否连接成功
bool result = rfidTunnel.ConnectTunnel(readerConfig, plcConnectionConfig, tunnelConfig);
if (result)
{
}
}
}
}