Ver código fonte

fix:采集增加刀具锁定状态

wang.sq@aliyun.com 2 semanas atrás
pai
commit
f3be247f98
3 arquivos alterados com 254 adições e 47 exclusões
  1. 222 46
      HEIDENHAIN/Form1.cs
  2. 27 0
      HEIDENHAIN/Heidenhain.csproj
  3. 5 1
      HEIDENHAIN/body/ResponseBody.cs

+ 222 - 46
HEIDENHAIN/Form1.cs

@@ -19,6 +19,7 @@ using System.Net.NetworkInformation;
 using System.Diagnostics.PerformanceData;
 using Newtonsoft.Json.Linq;
 using System.Reflection;
+using System.Security.Cryptography;
 
 namespace HEIDENHAIN
 {
@@ -345,11 +346,13 @@ namespace HEIDENHAIN
                                             IJHDataEntry2List ToolList = dataAccess.GetDataEntry2(ToolNumberAccessor, DNC_DATA_UNIT_SELECT.DNC_DATA_UNIT_SELECT_METRIC, false).GetChildList();
 
                                             //报警期限
-                                            toolsInfo.warnLife = ToolList[10].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA).ToString();
+                                            toolsInfo.warnLife = ToolList[11].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA).ToString();
                                             //刀具寿命目标值
-                                            toolsInfo.targetLife = ToolList[11].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA).ToString();
+                                            toolsInfo.targetLife = ToolList[12].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA).ToString();
                                             //Cur_Time使用时间
-                                            toolsInfo.curTime = ToolList[12].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA).ToString();
+                                            toolsInfo.curTime = ToolList[13].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA).ToString();
+                                            // 刀具锁定状态,
+                                            toolsInfo.tl = ToolList[8].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA).ToString();
 
                                             toolsList.Add(toolsInfo);
                                         }
@@ -363,8 +366,8 @@ namespace HEIDENHAIN
 
                                     //机外对刀仪数据
                                     JObject jsonObject = JObject.Parse(hdhBody.CutterData);
-
-
+                                    // 返回的结果,数据
+                                    var returnData = new Dictionary<string, object>();
 
                                     JHDataAccess dataAccess = Machine.GetInterface(HeidenhainDNCLib.DNC_INTERFACE_OBJECT.DNC_INTERFACE_JHDATAACCESS);
                                     dataAccess.SetAccessMode(DNC_ACCESS_MODE.DNC_ACCESS_MODE_TABLEDATAACCESS, "");
@@ -378,58 +381,192 @@ namespace HEIDENHAIN
                                     IJHDataEntry2List ToolLines = ToolTable.GetChildList();
 
 
-                                    //设置刀具名
-                                    ToolLines[1].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterName"), false);
-                                    //刀具长度
-                                    ToolLines[2].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterZl"), false);
-                                    //刀具半径 
-                                    ToolLines[3].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterXl"), false);
-                                    //刀具寿命
-                                    ToolLines[11].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterTime2"), false);
-                                    //刀具类型
-                                    ToolLines[13].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterTypDnc"), false);
-                                    //PLC状态
-                                    ToolLines[15].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterPlcBit"), false);
-                                    //刀具使用寿命,不允许吧超过该值
-                                    ToolLines[45].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterOverTime"), false);
-
-                                    /*车刀表数据设置更新*/
-                                    //车刀表数据查询语句
-                                    string CheDaoColumnNamesAccessor = @"\TABLE\TOOLTURN\T\" + jsonObject.GetValue("cutterT");
-                                    // 查询表数据
-                                    IJHDataEntry2 CheDaoTable = dataAccess.GetDataEntry2(CheDaoColumnNamesAccessor, DNC_DATA_UNIT_SELECT.DNC_DATA_UNIT_SELECT_METRIC, false);
-                                    // 获取字段列表
-                                    IJHDataEntry2List CheDaoLines = CheDaoTable.GetChildList();
-
-                                    // 设置刀具名
-                                    CheDaoLines[1].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterName"), false);
-                                    // 设置刀具长度
-                                    CheDaoLines[2].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterZl"), false);
-                                    // 车刀X方向半径
-                                    CheDaoLines[3].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterXl"), false);
-                                    // 车刀方向
-                                    CheDaoLines[10].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterTo"), false);
-                                    // 主轴定向角
-                                    CheDaoLines[11].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterOri"), false);
-                                    // 设置车刀类型
-                                    CheDaoLines[17].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterTypDncSub"), false);
+                                    //设置刀具名-对应机床表name
+                                    var data1 = ToolLines[1].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("cutterName", data1);
+                                    ToolLines[1].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterName", out JToken cutterName) ? jsonObject.GetValue("cutterName") : "" , false);
+
+                                    //刀具类型 - 对应机床TYP
+                                    var data2 = ToolLines[13].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("cutterTypDnc", data2);
+                                    ToolLines[13].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterTypDnc", out JToken cutterTypDnc) ? jsonObject.GetValue("cutterTypDnc") : "0", false);
+
+                                    //刀具长度 - 对应机床 L
+                                    var data3 = ToolLines[2].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("cutterZl", data3);
+                                    ToolLines[2].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterZl", out JToken cutterZl) ? jsonObject.GetValue("cutterZl") : "0", false);
+
+                                    //刀具半径  - 对应机床R
+                                    var data4 = ToolLines[3].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("cutterXl", data4);
+                                    ToolLines[3].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterXl", out JToken cutterXl) ?  jsonObject.GetValue("cutterXl") : "0", false);
+
+                                    //刀具寿命 - 对应机床time1
+                                    var data5 = ToolLines[10].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("cutterTime1", data5);
+                                    ToolLines[10].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterTime1", out JToken cutterTime1) ? jsonObject.GetValue("cutterTime1") : "0", false);
+
+                                    //刀具寿命 - 对应机床time2
+                                    var data6 = ToolLines[11].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("cutterTime2", data6);
+                                    ToolLines[11].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterTime2", out JToken cutterTime2) ? jsonObject.GetValue("cutterTime2") : "0", false);
+
+                                    //PLC状态 - 对应机床
+                                    var data7 = ToolLines[15].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("cutterPlcBit", data7);
+                                    ToolLines[15].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterPlcBit", out JToken cutterPlcBit) ? jsonObject.GetValue("cutterPlcBit") : "0", false);
+
+                                    //刀具使用寿命,不允许超过该值 -- 对应机床
+                                    var data8 = ToolLines[45].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("cutterOverTime", data8);
+                                    ToolLines[45].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterOverTime", out JToken cutterOverTime) ? jsonObject.GetValue("cutterOverTime") : "0", false);
+
+                                    //在刀具轴方向上的刀齿长
+                                    var data9 = ToolLines[16].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("lcuts", data9);
+                                    ToolLines[16].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("lcuts", out JToken lcuts) ? jsonObject.GetValue("lcuts") : "0", false);
+
+                                    //准确定义刀具的切削刃正面宽度
+                                    var data10 = ToolLines[46].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("rcuts", data10);
+                                    ToolLines[46].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("rcuts", out JToken rcuts) ? jsonObject.GetValue("rcuts") : "0", false);
+
+                                    //准确定义刀具的刀具可用长度
+                                    var data11 = ToolLines[17].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("lu", data11);
+                                    ToolLines[17].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("lu", out JToken lu) ? jsonObject.GetValue("lu") : "0", false);
+
+                                    //准确定义刀具的刀颈半径
+                                    var data12 = ToolLines[18].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("rn", data12);
+                                    ToolLines[18].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("rn", out JToken rn) ? jsonObject.GetValue("rn") : "0", false);
+
+                                    //最大的切入角度
+                                    var data13 = ToolLines[19].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("angle", data13);
+                                    ToolLines[19].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("angle", out JToken angle) ? jsonObject.GetValue("angle") : "0", false);
+
+                                    var data14 = ToolLines[31].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    returnData.Add("nmax", data14);
+                                    ToolLines[31].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("nmax", out JToken nmax) ? jsonObject.GetValue("nmax") : "0", false);
+
+
+                                    // 如果没有子车刀类型,不需要往车刀表添加
+                                    if (jsonObject.TryGetValue("cutterTypSubDnc", out JToken value))
+                                    {
+                                        /*车刀表数据设置更新*/
+                                        // 车刀表数据查询语句
+                                        string CheDaoColumnNamesAccessor = @"\TABLE\TOOLTURN\T\" + jsonObject.GetValue("cutterT");
+                                        // 查询表数据
+                                        IJHDataEntry2 CheDaoTable = dataAccess.GetDataEntry2(CheDaoColumnNamesAccessor, DNC_DATA_UNIT_SELECT.DNC_DATA_UNIT_SELECT_METRIC, false);
+                                        // 获取字段列表
+                                        IJHDataEntry2List CheDaoLines = CheDaoTable.GetChildList();
+
+                                        // 设置刀具名-对应机床表name
+                                        CheDaoLines[1].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterName", out JToken cutterName_cd) ? jsonObject.GetValue("cutterName") : "", false);
+
+                                        // 设置刀具在Z轴方向上的长度 - 对应机床 ZL
+                                        var cdData1 = CheDaoLines[2].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["cutterZl"] = cdData1;
+                                        CheDaoLines[2].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterZl", out JToken cutterZl_cd) ? jsonObject.GetValue("cutterZl") : "0", false);
+
+                                        // 车刀在X轴方向上的长度  - 对应机床XL
+                                        var cdData2 = CheDaoLines[3].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["cutterXl"] = cdData2;
+                                        CheDaoLines[3].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterXl", out JToken cutterXl_cd) ? jsonObject.GetValue("cutterXl") : "0", false);
+
+                                        // 车刀在y轴方向上的长度  - 对应机床yL
+                                        var cdData3 = CheDaoLines[4].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["cutterYl"] = cdData3;
+                                        CheDaoLines[4].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterYl", out JToken cutterYl_cd) ? jsonObject.GetValue("cutterYl") : "0", false);
+
+                                        // 切削刃半径  - 对应机床rs
+                                        var cdData4 = CheDaoLines[8].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["cutterRs"] = cdData4;
+                                        CheDaoLines[8].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterRs", out JToken cutterRs_cd) ? jsonObject.GetValue("cutterRs") : "0", false);
+
+                                        // 设置车刀子类型
+                                        var cdData5 = CheDaoLines[18].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["cutterTypSubDnc"] = cdData5;
+                                        CheDaoLines[18].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterTypSubDnc", out JToken cutterTypSubDnc_cd) ? jsonObject.GetValue("cutterTypSubDnc") : "", false);
+
+                                        // 车刀方向 TO 刀具定向?
+                                        var cdData6 = CheDaoLines[10].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["cutterTo"] = cdData6;
+                                        CheDaoLines[10].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterTo", out JToken cutterTo_cd) ? jsonObject.GetValue("cutterTo") : "0", false);
+
+                                        //刀具长度1的差值
+                                        var cdData7 = CheDaoLines[5].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["dzl"] = cdData7;
+                                        CheDaoLines[5].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("dzl", out JToken dzl_cd) ? jsonObject.GetValue("dzl") : "0", false);
+
+                                        //刀具长度2的差值
+                                        var cdData8 = CheDaoLines[6].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["dxl"] = cdData8;
+                                        CheDaoLines[6].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("dxl", out JToken dxl_cd) ? jsonObject.GetValue("dxl") : "0", false);
+
+                                        //刀具长度3的差值
+                                        var cdData9 = CheDaoLines[7].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["dyl"] = cdData9;
+                                        CheDaoLines[7].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("dyl", out JToken dyl_cd) ? jsonObject.GetValue("dyl") : "0", false);
+
+                                        //刀具半径的差值
+                                        var cdData10 = CheDaoLines[9].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["drs"] = cdData10;
+                                        CheDaoLines[9].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("drs", out JToken drs_cd) ? jsonObject.GetValue("drs") : "0", false);
+
+                                        //开槽刀宽度的差值
+                                        var cdData11 = CheDaoLines[17].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["dcw"] = cdData11;
+                                        CheDaoLines[17].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("dcw", out JToken dcw_cd) ? jsonObject.GetValue("dcw") : "0", false);
+
+                                        // 主轴定向角 0ri
+                                        var cdData12 = CheDaoLines[11].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["cutterOri"] = cdData12;
+                                        CheDaoLines[11].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterOri", out JToken cutterOri_cd) ? jsonObject.GetValue("cutterOri") : "0", false);
+
+                                        // 下刀角
+                                        var cdData13 = CheDaoLines[16].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["tangle"] = cdData13;
+                                        CheDaoLines[16].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("tangle", out JToken tangle_cd) ? jsonObject.GetValue("tangle") : "0", false);
+
+                                        // 刀尖角
+                                        var cdData14 = CheDaoLines[15].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["pangle"] = cdData14;
+                                        CheDaoLines[15].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("pangle", out JToken pangle_cd) ? jsonObject.GetValue("pangle") : "0", false);
+
+                                        // 切槽刀的切削长度
+                                        var cdData15 = CheDaoLines[17].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["cutlength"] = cdData15;
+                                        CheDaoLines[17].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutlength", out JToken cutlength_cd) ? jsonObject.GetValue("cutlength") : "0", false);
+
+                                        // 切槽刀的切削长度
+                                        var cdData16 = CheDaoLines[18].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                        returnData["cutwidth"] = cdData16;
+                                        CheDaoLines[18].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutwidth", out JToken cutwidth_cd) ? jsonObject.GetValue("cutwidth") : "0", false);
 
+                                    }
 
                                     /*刀位表数据设置更新*/
                                     //刀位表数据查询语句
+
+                                    string writeOrDel = jsonObject.GetValue("writeOrDel").ToString();
                                     string DaoWeiColumnNamesAccessor = @"\TABLE\TOOL_P\P\" + jsonObject.GetValue("cutterP");
+                                    if (writeOrDel == "2") {
+                                        DaoWeiColumnNamesAccessor = @"\TABLE\TOOL_P\T\" + jsonObject.GetValue("cutterT");
+                                    }
                                     // 查询表数据
                                     IJHDataEntry2 DaoWeiTable = dataAccess.GetDataEntry2(DaoWeiColumnNamesAccessor, DNC_DATA_UNIT_SELECT.DNC_DATA_UNIT_SELECT_METRIC, false);
                                     // 获取字段列表
                                     IJHDataEntry2List DaoWeiLines = DaoWeiTable.GetChildList();
 
                                     // 设置刀号
-                                    DaoWeiLines[1].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterT"), false);
-
+                                    DaoWeiLines[1].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterT", out JToken cutterT_dw) ? jsonObject.GetValue("cutterT") : "0", false);
                                     // 设置刀具名
-                                    DaoWeiLines[2].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("cutterName"), false);
+                                    DaoWeiLines[2].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.TryGetValue("cutterT", out JToken cutterName_dw) ? jsonObject.GetValue("cutterName") : "", false);
 
                                     responseBody.msg = "数据设置成功";
+                                    responseBody.returnData = JsonConvert.SerializeObject(returnData);
                                     responseBody.result = true;
                                 }
                                 else if (hdhBody.Type == ActionTypeEnum.WriteDeviationValue.ToString())
@@ -448,7 +585,14 @@ namespace HEIDENHAIN
                                     // 获取字段列表
                                     IJHDataEntry2List ToolLines = ToolTable.GetChildList();
 
-                                    //设置偏差值
+                                    //设置偏差值,先设置偏差值为零
+                                    ToolLines[1].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, 0, false);
+                                    ToolLines[2].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, 0, false);
+                                    ToolLines[3].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, 0, false);
+                                    ToolLines[4].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, 0, false);
+                                    ToolLines[5].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, 0, false);
+                                    ToolLines[6].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, 0, false);
+
                                     ToolLines[1].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("exactXaxisOffset"), false);
                                     ToolLines[2].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("exactYaxisOffset"), false);
                                     ToolLines[3].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("exactZaxisOffset"), false);
@@ -456,8 +600,40 @@ namespace HEIDENHAIN
                                     ToolLines[5].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("exactBaxisOffset"), false);
                                     ToolLines[6].SetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA, jsonObject.GetValue("exactCaxisOffset"), false);
 
-                                    responseBody.msg = "数据设置成功";
-                                    responseBody.result = true;
+                                    // 校验偏差值
+                                    Thread.Sleep(50);
+
+                                    Boolean checkThrough = true;
+                                    string isreason = null;
+
+                                    var data1 = ToolLines[1].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    if (data1 != Convert.ToDouble(jsonObject.GetValue("exactXaxisOffset"))) { checkThrough = false; isreason = "exactXaxisOffset"; }
+
+                                    var data2 = ToolLines[2].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    if (data2 != Convert.ToDouble(jsonObject.GetValue("exactYaxisOffset"))) { checkThrough = false; isreason = "exactYaxisOffset"; }
+
+                                    var data3 = ToolLines[3].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    if (data3 != Convert.ToDouble(jsonObject.GetValue("exactZaxisOffset"))) { checkThrough = false; isreason = "exactZaxisOffset"; }
+
+                                    var data4 = ToolLines[4].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+                                    if (data4 != Convert.ToDouble(jsonObject.GetValue("exactAaxisOffset"))) { checkThrough = false; isreason = "exactAaxisOffset"; }
+
+                                    var data5 = ToolLines[5].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+
+                                    if (data5 != Convert.ToDouble(jsonObject.GetValue("exactBaxisOffset"))) { checkThrough = false; isreason = "exactBaxisOffset"; }
+                                    var data6 = ToolLines[6].GetPropertyValue(DNC_DATAENTRY_PROPKIND.DNC_DATAENTRY_PROPKIND_DATA);
+
+                                    if (data6 != Convert.ToDouble(jsonObject.GetValue("exactCaxisOffset"))) { checkThrough = false; isreason = "exactCaxisOffset"; }
+
+                                    if (!checkThrough)
+                                    {
+                                        responseBody.msg = "数据校验不成功,异常字段"+ isreason;
+                                        responseBody.result = false;
+                                    }
+                                    else {
+                                        responseBody.msg = "数据设置成功";
+                                        responseBody.result = true;
+                                    }
                                 }
                                 else if (hdhBody.Type == ActionTypeEnum.ReadProbeData.ToString())
                                 {

+ 27 - 0
HEIDENHAIN/Heidenhain.csproj

@@ -12,6 +12,21 @@
     <FileAlignment>512</FileAlignment>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
     <Deterministic>true</Deterministic>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <PlatformTarget>AnyCPU</PlatformTarget>
@@ -97,5 +112,17 @@
     <Content Include="dll\Interop.HeidenhainDNCLib.dll" />
     <Content Include="dll\Newtonsoft.Json.dll" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
+      <Visible>False</Visible>
+      <ProductName>Microsoft .NET Framework 4.7.2 %28x86 和 x64%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>

+ 5 - 1
HEIDENHAIN/body/ResponseBody.cs

@@ -14,6 +14,8 @@ namespace IMCS.HeidenHain
         public string msg
         { get; set; } = "调用成功";
 
+        public string returnData { get; set; }
+
         public int statusCode { get; set; } = 200;
 
         public string toolsInfo { get; set; } = "";
@@ -39,7 +41,9 @@ namespace IMCS.HeidenHain
 
         public string curTime { get; set; }
 
-       
+        public string tl { get; set; }
+
+
 
     }