a
qiuyao
2025-03-24 72942308915441381c5753057585677ce22b8032
ÏîÄ¿´úÂë/WIDESEAWCS_Server Õýʽ/WIDESEAWCS_Tasks/SerialPort/SerialPortJob.cs
@@ -12,6 +12,7 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using Quartz;
using SqlSugar;
using StackExchange.Profiling.Internal;
@@ -75,7 +76,6 @@
                SerialPortDevice serialPortDevice = (SerialPortDevice)context.JobDetail.JobDataMap.Get("JobParams");
                if (serialPortDevice != null)
                {
                    List<DeviceProDTO> deviceProDTOs = serialPortDevice.DeviceProDTOs;
                    foreach (var item in deviceProDTOs)
                    {
@@ -131,6 +131,7 @@
                                                    //格式化成整数
                                                    serialPortDevice.Communicator.Write(com);
                                                    WriteDebug("写入", com);
                                                }
                                                //第二种,第一个值扭完了,第二个没有扭完
                                                if (oponecount==onequantity&& optowcount < towquantity&& torquetwo!=0)
@@ -146,9 +147,7 @@
                                    }
                                }
                                #endregion
                                item.DeviceProParamName = CommandType.Set.ToString();
                                item.DeviceProParamName = CommandType.None.ToString();
                            }
                        }
@@ -159,28 +158,19 @@
                            if (deviceProtocolDetail != null)
                            {
                                serialPortDevice.Communicator.Write(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue, "\r");//打开串口时先设值
                                WriteDebug("写入", item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue);
                            }
                        }
                        else if (CommandType.Set.ToString() == item.DeviceProParamName)
                        {
                            DeviceProtocolDetailDTO? deviceProtocolDetail = serialPortDevice.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(CommandType) && x.ProtocolDetailType == nameof(CommandType.Set));
                            //设值
                            if (deviceProtocolDetail != null)
                            {
                                serialPortDevice.Communicator.Write(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue, "\r");//打开串口时先设值
                            }
                        }
                        if (serialPortDevice.Communicator.Buffers.Count > 0)
                        {
                            string? receiveData = serialPortDevice.Communicator.ToString(Encoding.Default);
                            if (!string.IsNullOrEmpty(receiveData))
                            {
                                Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + receiveData);
                                Console.WriteLine("serialPortDevice:" + DateTime.Now.ToString("HH:mm:ss.fff") + receiveData);
                                if (item.DeviceProParamName == CommandType.Set.ToString())
                                if (item.DeviceProParamName == CommandType.Set.ToString() || item.DeviceProParamName == CommandType.None.ToString())
                                {
                                    DeviceProtocolDetailDTO? deviceProtocolDetail = serialPortDevice.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(CommandResult) && x.ProtocolDetailType == nameof(CommandResult.SetOK));
                                    //parseok 
@@ -200,7 +190,7 @@
                                        string group = item.DeviceProDataBlock; // è®¾å¤‡æ‰€å±žç»„别
                                        string devicecode = item.DeviceChildCode;//设备编号
                                        string torqueValue = ExtractTorqueValue(receiveData);
                                        if (group == "电气")
                                        {
                                            #region
@@ -238,21 +228,27 @@
                                                    };
                                                }
                                            }
                                                    #endregion
                                                    item.DeviceProParamName = CommandType.Set.ToString();
                                            #endregion
                                            item.DeviceProParamName = CommandType.None.ToString();
                                        }
                                      
                                    }
                                    DeviceProtocolDetailDTO? deviceProtocolDetail2 = serialPortDevice.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(CommandResult) && x.ProtocolDetailType == nameof(CommandResult.GetError));
                                    if (deviceProtocolDetail2 != null && receiveData.Contains(item.DeviceChildCode + deviceProtocolDetail2.ProtocalDetailValue))
                                    {
                                        item.DeviceProParamName = CommandType.None.ToString();
                                    }
                                }
                            }
                            //建一个对象将其传给前端
                            string data = JsonConvert.SerializeObject(serialPortDevice);//这里serialPortDevice是假设有这个对象
                            _webSocketContext.PublishAllClientPayload(data);
                            //string data = JsonConvert.SerializeObject(serialPortDevice);//这里serialPortDevice是假设有这个对象
                            //_webSocketContext.PublishAllClientPayload(data);
                        }
                    }