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 { /// /// 模拟连接隧道机 /// 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(), //}; //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) { } } } }