生成本地ini文件

代码展示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/// <summary>
/// 系统配置文件路径
/// </summary>
private string sysInfoPath = Application.StartupPath + "\\Sysinfo.ini";
/// <summary>
/// 系统配置文件服务类
/// </summary>
private SysInfoService sysInfoService = new SysInfoService();

public FrmMain()
{
InitializeComponent();
sysInfoService.SetSysInfoToPath(new SysInfo() , sysInfoPath);
}

不难发现 ,通信参数少了一个 ,应该是四个的 ,原因:IP地址是字符串

image

解决方案:写入一个默认的字符串

image

这里就正常了

image

读取ini信息

笑死 ,自己粗心大意 ,断点打错地方了 ,使劲排查错误 ,真的是要被自己给蠢死了啊

image

代码展示:

1
2
3
4
private void FrmMain_Load(object sender, EventArgs e)
{
this.sysInfo = sysInfoService.GetSysInfoFromPath(sysInfoPath);
}

SysInfoService代码展示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/// <summary>
/// 系统信息服务类
/// </summary>
public class SysInfoService
{
/// <summary>
/// 读取配置文件并返回SysInfo对象
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public SysInfo GetSysInfoFromPath(string path)
{
try
{
SysInfo sysInfo = new SysInfo();
// 读取配置文件
sysInfo.IPAddress = IniConfigHelper.ReadIniData("通信参数", "IP地址", "127.0.0.1", path);
// 最后一个加true是为了忽略大小写
sysInfo.CpuType = (CpuType)Enum.Parse(typeof(CpuType), IniConfigHelper.ReadIniData("通信参数", "CPU类型", "S71500", path), true);
sysInfo.Rack = Convert.ToInt16(IniConfigHelper.ReadIniData("通信参数", "机架号", "0", path));
sysInfo.Slot = Convert.ToInt16(IniConfigHelper.ReadIniData("通信参数", "槽号", "0", path));

// sysInfo.AutoStart = Convert.ToBoolean(IniConfigHelper.ReadIniData("系统参数", "自动启动", "false", path));
sysInfo.AutoStart = IniConfigHelper.ReadIniData("系统参数", "自动启动", "false", path) == "1";
sysInfo.ScreenTime = Convert.ToInt32(IniConfigHelper.ReadIniData("系统参数", "息屏时间", "0", path));
sysInfo.LogoffTime = Convert.ToInt32(IniConfigHelper.ReadIniData("系统参数", "注销时间", "0", path));
sysInfo.CameraIndex = Convert.ToInt32(IniConfigHelper.ReadIniData("系统参数", "摄像头序号", "0", path));
return sysInfo;
}
catch (Exception)
{

return null;
}
}

/// <summary>
/// 将SysInfo对象写入到配置文件
/// </summary>
/// <param name="sysInfo"></param>
/// <param name="path"></param>
/// <returns></returns>
public bool SetSysInfoToPath(SysInfo sysInfo, string path)
{
bool result = true;
result &= IniConfigHelper.WriteIniData("通信参数", "IP地址", sysInfo.IPAddress, path);
result &= IniConfigHelper.WriteIniData("通信参数", "CPU类型", sysInfo.CpuType.ToString(), path);
result &= IniConfigHelper.WriteIniData("通信参数", "机架号", sysInfo.Rack.ToString(), path);
result &= IniConfigHelper.WriteIniData("通信参数", "插槽号", sysInfo.Slot.ToString(), path);

result &= IniConfigHelper.WriteIniData("系统参数", "开机启动", sysInfo.AutoStart ? "1" : "0", path);
result &= IniConfigHelper.WriteIniData("系统参数", "息屏时间", sysInfo.ScreenTime.ToString(), path);
result &= IniConfigHelper.WriteIniData("系统参数", "注销时间", sysInfo.LogoffTime.ToString(), path);
result &= IniConfigHelper.WriteIniData("系统参数", "摄像头序号", sysInfo.CameraIndex.ToString(), path);
return result;
}
}