如下,利用Kepserve与PLC通讯,建立点位后需根据点位名称建立连接通讯,手动建立时太过繁琐,利用c#解析json功能一键解析所有创建的点位信息动态添加到数据库,方便快捷。
{
"project": {
"common.ALLTYPES_DESCRIPTION": "使用模拟器驱动程序的示例项目",
"servermain.PROJECT_TITLE": "模拟器驱动程序演示",
"channels": [
{
"common.ALLTYPES_NAME": "Chanel",
"common.ALLTYPES_DESCRIPTION": "模拟器通道示例",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Simulator",
"devices": [
{
"common.ALLTYPES_NAME": "Group",
"common.ALLTYPES_DESCRIPTION": "模拟器设备示例",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Simulator",
"tags": [
{
"common.ALLTYPES_NAME": "Item1",
"common.ALLTYPES_DESCRIPTION": "用于验证客户端连接的加速读/写标记",
},
{
"common.ALLTYPES_NAME": "Item2",
"common.ALLTYPES_DESCRIPTION": "用于验证客户端连接的常量读/写标记",
}
]
}
]
},
{
"common.ALLTYPES_NAME": "opcGroup",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Siemens TCP/IP Ethernet",
"devices": [
{
"common.ALLTYPES_NAME": "Group",
"common.ALLTYPES_DESCRIPTION": "1010工位",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Siemens TCP/IP Ethernet",
"tag_groups": [
{
"common.ALLTYPES_NAME": "Client",
"common.ALLTYPES_DESCRIPTION": "客户端",
"tags": [
{
"common.ALLTYPES_NAME": "Item1",
"common.ALLTYPES_DESCRIPTION": "工件到位",
}
]
},
{
"common.ALLTYPES_NAME": "Server",
"common.ALLTYPES_DESCRIPTION": "服务端",
"tags": [
{
"common.ALLTYPES_NAME": "Item1",
"common.ALLTYPES_DESCRIPTION": "工件到位",
}
]
}
]
}
]
}
]
}
}
代码如下:
static void Main(string[] args)
{
var jsonContext = File.ReadAllText(@"C:\Users\Administrator\Desktop\Group.json");
JObject output = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(jsonContext);
var json = output["project"]["channels"].ToList();
foreach (var item in json)
{
var channelsName = item["common.ALLTYPES_NAME"].ToString();
foreach (var devices in item["devices"].ToList())
{
var devicesName = devices["common.ALLTYPES_NAME"]?.ToString();
var devicesDesc = devices["common.ALLTYPES_DESCRIPTION"]?.ToString();
var flagTags = !string.IsNullOrEmpty(devices["tags"]?.ToString());
if (flagTags)
{
foreach (var tags in devices["tags"].ToList())
{
var itemName = tags["common.ALLTYPES_NAME"]?.ToString();
var itemDesc = tags["common.ALLTYPES_DESCRIPTION"]?.ToString();
Console.WriteLine(channelsName + "." + devicesName + "." + itemName);
Console.WriteLine(itemDesc);
Console.WriteLine(" -- ");
}
}
else
{
foreach (var tag_groups in devices["tag_groups"].ToList())
{
var tag_groupsName = tag_groups["common.ALLTYPES_NAME"]?.ToString();
var tag_groupsDesc = tag_groups["common.ALLTYPES_DESCRIPTION"]?.ToString();
foreach (var tags in tag_groups["tags"])
{
var tag_Name = tags["common.ALLTYPES_NAME"]?.ToString();
var tag_Desc = tags["common.ALLTYPES_DESCRIPTION"]?.ToString();
Console.WriteLine(channelsName + "." + devicesName + "." + tag_groupsName + "." + tag_Name);
Console.WriteLine(tag_Desc);
Console.WriteLine(" -- ");
}
}
}
}
}
Console.Read();
}