using System.ComponentModel;
using NewLife;
namespace SmartA4;
/// <summary>A2硬件工厂</summary>
public class A4
{
#region 属性
/// <summary>SYS LED 指示灯</summary>
[DisplayName("指示灯")]
public OutputPort Led { get; } = new OutputPort { FileName = "/dev/led" };
/// <summary>SYS LED 指示灯</summary>
[DisplayName("指示灯")]
public OutputPort Led2 { get; } = new OutputPort { FileName = "/dev/led2" };
/// <summary>SYS LED 指示灯</summary>
[DisplayName("指示灯")]
public OutputPort Led3 { get; } = new OutputPort { FileName = "/dev/led3" };
/// <summary>蜂鸣器</summary>
[DisplayName("蜂鸣器")]
public OutputPort Buzzer { get; } = new OutputPort { FileName = "/dev/buzzer" };
/// <summary>FUN按键</summary>
[DisplayName("FUN按键")]
public InputPort Key { get; } = new InputPort { FileName = "/dev/key" };
/// <summary>USB电源</summary>
[DisplayName("USB电源")]
public OutputPort UsbPower { get; } = new OutputPort { FileName = "/dev/usbpwr" };
///// <summary>看门狗</summary>
//public Watchdog Watchdog { get; } = new Watchdog { FileName = "/dev/watchdog" };
/// <summary>串口名</summary>
public String[] ComNames = new[] { "/dev/ttyS1", "/dev/ttyS2", "/dev/ttyS3", "/dev/ttyS4" };
#endregion
#region 串口
///// <summary>创建串口</summary>
///// <param name="com">串口COM1/COM2/COM3/COM4,全部支持RS485,其中COM3/COM4复用RS232</param>
///// <param name="baudrate"></param>
///// <returns></returns>
///// <exception cref="ArgumentOutOfRangeException"></exception>
//public SerialPort CreateSerial(Int32 com, Int32 baudrate = 9600)
//{
// if (com <= 0 || com > 4) throw new ArgumentOutOfRangeException(nameof(com), $"无效串口COM{com},支持COM1/COM2/COM3/COM4");
// return new SerialPort(ComNames[com - 1], baudrate);
//}
///// <summary>创建Modbus</summary>
///// <param name="com"></param>
///// <param name="baudrate"></param>
///// <returns></returns>
///// <exception cref="ArgumentOutOfRangeException"></exception>
//public Modbus CreateModbus(Int32 com, Int32 baudrate = 9600)
//{
// if (com <= 0 || com > 4) throw new ArgumentOutOfRangeException(nameof(com), $"无效串口COM{com},支持COM1/COM2/COM3/COM4");
// return new ModbusRtu { PortName = ComNames[com - 1], Baudrate = baudrate };
//}
#endregion
#region 方法
/// <summary>
/// 设置主机名
/// </summary>
/// <param name="name"></param>
/// <exception cref="ArgumentNullException"></exception>
public void SetHostName(String name)
{
name = name?.Trim();
if (name.IsNullOrEmpty()) throw new ArgumentNullException(nameof(name));
// 修改主机名
var file = "/etc/hostname";
File.WriteAllText(file, name + Environment.NewLine);
// 在hosts文件中添加主机名解析
file = "/etc/hosts";
if (File.Exists(file))
{
var lines = File.ReadAllLines(file);
var flag = false;
foreach (var line in lines)
{
var ss = line.Split(' ', '\t');
if (ss[0] == "127.0.0.1" && ss[^1] == name)
{
flag = true;
break;
}
}
if (!flag) File.AppendAllText(file, $"\r\n127.0.0.1\t{name}\t{name}\r\n");
}
}
#endregion
}
|