浏览代码

解析刀具信息

oyq28 1 年之前
父节点
当前提交
a25f78898a

+ 59 - 1
Kede/Utils/OpcUaUtils.cs

@@ -9,6 +9,7 @@ using System.Text;
 using System.Threading.Tasks;
 using Kede;
 using Newtonsoft.Json.Linq;
+using System.IO;
 namespace TestAgreement.utils
 {
     internal class OpcUaUtils
@@ -63,7 +64,64 @@ namespace TestAgreement.utils
                 List<string> valuesList = new List<string>();
                 for (int i = 0; i < values.Count; i++)
                 {
-                    valuesList.Add(values[i].ToString());
+                    if (values[i].ToString().Contains(";")){
+                        string[] parts = values[i].ToString().Split(";");
+                        // 创建字典来存储解析后的数据
+                        Dictionary<string, string> data = new Dictionary<string, string>();
+                        string mon = null;
+                        // 逐个处理键值对
+                        foreach (string part in parts)
+                        {
+                            if (part.StartsWith("MON"))//0-关闭;1-时间;2-磨损量;3-计件
+                            {
+                                mon = part.Substring(3);
+                                data["mon"] = part.Substring(3);
+                            }
+
+                            if (part.StartsWith("NUM"))//刀具号
+                            {
+                                data["number"] = part.Substring(3);
+                            }
+                            else if (part.StartsWith("NAM"))//刀具名
+                            {
+                                data["name"] = part.Substring(3);
+                            }
+                            else if (part.StartsWith("LIF"))//刀具磨损量
+                            {
+                                data["wear"] = part.Substring(3);
+                            }
+                            else if (part.StartsWith("ALM") &&  mon == "1")//刀具寿命预警
+                            {
+                                data["warnLife"] = part.Substring(3);
+                            }
+                            else if (part.StartsWith("TAR"))//刀具寿命目标值
+                            {
+                                data["targetLife"] = part.Substring(3);
+                            }
+                            else if (part.StartsWith("STR"))//刀具半径
+                            {
+                                data["toolRadius"] = part.Substring(3);
+                            }
+                            else if (part.StartsWith("EDP")) //刀具位置
+                            {
+                                data["toolPosition"] = part.Substring(3);
+                            }
+                            else if (part.StartsWith("ALM") && mon == "2")//刀具磨损量预警
+                            {
+                                data["wearWarn"] = part.Substring(3);
+                            }
+
+                        }
+
+                        // 将字典转换为JSON格式的字符串
+                        string json = JsonConvert.SerializeObject(data, Formatting.Indented);
+                        valuesList.Add(json);
+                    }
+                    else
+                    {
+                        valuesList.Add(values[i].ToString());
+                    }
+                    
                    
                 }
                 responseBody.values = valuesList;

二进制
Kede/bin/Debug/net5.0-windows/Kede.dll


二进制
Kede/bin/Debug/net5.0-windows/Kede.exe


二进制
Kede/bin/Debug/net5.0-windows/Kede.pdb


文件差异内容过多而无法显示
+ 422 - 0
Kede/bin/Debug/net5.0-windows/YGLog/2024-08-16.txt


部分文件因为文件数量过多而无法显示