| | |
| | | using System.Drawing.Imaging; |
| | | using System.IO.Ports; |
| | | using System.Linq; |
| | | using System.Net.WebSockets; |
| | | using System.Text; |
| | | using System.Text.RegularExpressions; |
| | | using System.Threading.Tasks; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; |
| | | using AutoMapper; |
| | | using HslCommunication.WebSocket; |
| | | 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; |
| | | using WIDESEA_ISerialPortRepository; |
| | | using WIDESEA_SerialPortRepository; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseRepository; |
| | | using WIDESEAWCS_DTO.SerialPort; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | using WIDESEAWCS_QuartzJob.StackerCrane.Enum; |
| | | using WIDESEAWCS_Tasks.ConveyorLineJob; |
| | | using WIDESEAWCS_Tasks.StackerCraneJob; |
| | | using WIDESEAWCS_TaskInfoService; |
| | | using WIDESEAWCS_Tasks.SerialPort; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | [DisallowConcurrentExecution] |
| | | public class SerialPortJob : JobBase, IJob, IDisposable |
| | | public class SerialPortJob : JobBase, IJob,IDisposable |
| | | { |
| | | public void Dispose() |
| | | { |
| | |
| | | private readonly IPutakeRepository _putakeRepository; |
| | | private readonly IProcessRepository _processRepository; |
| | | private readonly ITorqueOpRepository _orqueOpRepository; |
| | | public SerialPortJob(IPutakeRepository putakeRepository, IProcessRepository processRepository, ITorqueOpRepository torqueOpRepository) |
| | | |
| | | private WebSocketServer _webSocketContext; |
| | | private readonly IProcessServer _processServer; |
| | | private readonly IPutakeServer _putakeServer; |
| | | private readonly ITorqueOpServer _torqueOpServer; |
| | | |
| | | static string takeid = ""; // å¨å¾ªç¯å¼å§å声æ takeid |
| | | |
| | | public SerialPortJob(ITorqueOpServer torqueOpServer,IPutakeServer putakeServer,IProcessServer processServer, IPutakeRepository putakeRepository, IProcessRepository processRepository, ITorqueOpRepository torqueOpRepository, WebSocketServer webSocketContext) |
| | | { |
| | | _putakeRepository = putakeRepository; |
| | | _processRepository = processRepository; |
| | | _orqueOpRepository = torqueOpRepository; |
| | | _webSocketContext = webSocketContext; |
| | | _processServer = processServer; |
| | | _putakeServer = putakeServer; |
| | | _torqueOpServer= torqueOpServer; |
| | | } |
| | | |
| | | |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | |
| | | if (serialPortDevice != null) |
| | | { |
| | | List<DeviceProDTO> deviceProDTOs = serialPortDevice.DeviceProDTOs; |
| | | |
| | | foreach (var item in deviceProDTOs) |
| | | { |
| | | if (item.DeviceProParamName != CommandType.Get.ToString() && item.DeviceProParamName != CommandType.Set.ToString()) |
| | |
| | | DeviceProtocolDetailDTO? deviceProtocolDetail = serialPortDevice.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(CommandType) && x.ProtocolDetailType == nameof(CommandType.Set)); |
| | | if (deviceProtocolDetail != null) |
| | | { |
| | | |
| | | //å
æ¥ç¶æåç»ï¼ææ¶é´éåº |
| | | string group = item.DeviceProDataBlock; |
| | | |
| | | |
| | | //è¿é夿ç»å«ä¸ä¸ªçæ¯é£ä¸ªï¼å°±æ¥é£ä¸ªå·¥èºè¡¨çå¼ |
| | | if (group == "çµæ°") |
| | | { |
| | | |
| | | // å
çDt_TorqueOpè¡¨ï¼æ¥è¯¢å°ç°å¨è¿æ¡æ°æ®çä»»å¡å·åæ¥éª¤ |
| | | var take = _putakeRepository.QueryData(x => x.Pustatus == 2 && x.Grouptype == group).OrderBy(x => x.Dispatchtime).First(); |
| | | if (take==null) |
| | | string group = item.DeviceProDataBlock;//ç»å« |
| | | if (group == "çµæ°" || group == "å°æ²" || group == "æºæ¢°") |
| | | { // **æ¥è¯¢ä»»å¡ä¿¡æ¯ä¸æ¬¡** |
| | | var takeResponse = _putakeServer.PerformTasks(group); |
| | | if (takeResponse == null || !takeResponse.Status) |
| | | { |
| | | //çäºç©ºå°±å |
| | | Console.WriteLine($"ä»»å¡å级表æ¥å£é误ï¼{takeResponse?.Message}"); |
| | | continue; |
| | | } |
| | | |
| | | //æ¥å°æè¯¥æ¡æ°æ®äº |
| | | var process = _processRepository.QueryData(x => x.CraftType == group).OrderBy(x => x.SetpNum).First(); |
| | | |
| | | |
| | | |
| | | float torqueone = process.TorqueOne;//读å°å¼äº |
| | | float torquetow = process.TorqueTwo; |
| | | if (torqueone != 0) |
| | | var take = JsonConvert.DeserializeObject<Dt_Putake>(JsonConvert.SerializeObject(takeResponse.Data)); |
| | | takeid = take?.Njtakeid; // ç¼åä»»å¡å· |
| | | if (takeid != null) |
| | | { |
| | | serialPortDevice.Communicator.Write(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue.Replace("[setNum]", (torqueone * 1000).ToString().PadLeft(7, '0')) + "\r"); |
| | | //è¿éç»å®è®¾å®å¼å°± æ¥åå¨å¼è¡¨ è¿ä¸ªæ°æ®æ¯å¦æ»¡è¶³äºï¼æ»¡è¶³äºå°±è¿è¡ä¸ä¸ä¸ªå¼ï¼ä¸æ»¡è¶³å°±ä¸åä¸ç´ç»å¼ |
| | | var num= _orqueOpRepository.QueryData(x => x.TakeId == take.Njtakeid && x.GroupOp == group && x.TorqueSize == torqueone).Count(); |
| | | if (num!= process.TorqueOneQuantity) |
| | | { |
| | | |
| | | } |
| | | |
| | | ProcessElectricTask(group, serialPortDevice, item, deviceProtocolDetail, takeid); |
| | | } |
| | | if (torquetow != 0) |
| | | { |
| | | serialPortDevice.Communicator.Write(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue.Replace("[setNum]", (torquetow * 1000).ToString().PadLeft(7, '0')) + "\r"); |
| | | } |
| | | |
| | | // // 计ç®å½åæ¥éª¤æéç Torque æ»æ° |
| | | int requiredTorqueCount = process.TorqueOneQuantity + process.TorqueTwoQuantity; |
| | | |
| | | // æ¥è¯¢å½åæ¥éª¤ç TorqueOp è®°å½ï¼å¹é
ProcessSteåç»ï¼æ£æ¥æ¯å¦è¾¾å°è¦æ± |
| | | int torqueCount = _orqueOpRepository.QueryData(x => x.ProcessSte == process.SetpNum && x.GroupOp == group).Count(); |
| | | |
| | | if (torqueCount < requiredTorqueCount) |
| | | { |
| | | // 妿æ°é䏿»¡è¶³ï¼åæ¢è¯»å |
| | | |
| | | break; |
| | | } |
| | | #region |
| | | |
| | | // //å
çå·¥èºè¡¨ä¸æ¥éª¤ä¸ä¸è¦æç弿å¤å°ä¸ª 忥çDt_TorqueOpè¡¨ä¸æ¯å¦æè¯¥ä»»å¡å·idåæ¥éª¤æ»æ°æ¯å¦æ»¡è¶³å·¥èºè¡¨ |
| | | // // æ¥è¯¢ææå·¥èºæ°æ®ï¼æç
§æ¥éª¤å· SetpNum éå¢æåº |
| | | // var processList = _processRepository.QueryData(x => x.CraftType == group) |
| | | // .OrderBy(x => x.SetpNum) |
| | | // .ToList(); |
| | | |
| | | // foreach (var process in processList) |
| | | // { |
| | | // float torqueone = process.TorqueOne;//读å°å¼äº |
| | | // float torquetow = process.TorqueTwo; |
| | | // if (torqueone!=0) |
| | | // { |
| | | // serialPortDevice.Communicator.Write(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue.Replace("[setNum]", (torqueone * 1000).ToString().PadLeft(7, '0')) + "\r"); |
| | | // } |
| | | // if (torquetow != 0) |
| | | // { |
| | | // serialPortDevice.Communicator.Write(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue.Replace("[setNum]", (torquetow * 1000).ToString().PadLeft(7, '0')) + "\r"); |
| | | // } |
| | | |
| | | // // 计ç®å½åæ¥éª¤æéç Torque æ»æ° |
| | | // int requiredTorqueCount = process.TorqueOneQuantity + process.TorqueTwoQuantity; |
| | | |
| | | // // æ¥è¯¢å½åæ¥éª¤ç TorqueOp è®°å½ï¼å¹é
ProcessSteåç»ï¼æ£æ¥æ¯å¦è¾¾å°è¦æ± |
| | | // int torqueCount = _orqueOpRepository.QueryData(x => x.ProcessSte == process.SetpNum&& x.GroupOp== group).Count(); |
| | | |
| | | // if (torqueCount < requiredTorqueCount) |
| | | // { |
| | | // // 妿æ°é䏿»¡è¶³ï¼åæ¢è¯»å |
| | | |
| | | // break; |
| | | // } |
| | | // //符åè¦æ±ï¼ç»§ç»è¯»åä¸ä¸æ¥ |
| | | |
| | | } |
| | | |
| | | //} |
| | | //if (group == "æºæ¢°") |
| | | //{ |
| | | |
| | | //} |
| | | //if (group == "å°æ²") |
| | | //{ |
| | | |
| | | //} |
| | | #endregion |
| | | |
| | | |
| | | serialPortDevice.Communicator.Write(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue.Replace("[setNum]", (5 * 1000).ToString().PadLeft(7, '0')) + "\r"); |
| | | //æå¼ä¸²å£æ¶å
è®¾å¼ |
| | | item.DeviceProParamName = CommandType.Set.ToString(); |
| | | } |
| | | item.DeviceProParamName = CommandType.None.ToString(); |
| | | } |
| | | } |
| | | |
| | |
| | | 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 |
| | |
| | | { |
| | | item.DeviceProParamName = CommandType.Get.ToString(); |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | else if (item.DeviceProParamName == CommandType.Get.ToString()) |
| | | { |
| | | DeviceProtocolDetailDTO? deviceProtocolDetail = serialPortDevice.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(CommandResult) && x.ProtocolDetailType == nameof(CommandResult.GetOK)); |
| | | //03æå |
| | | |
| | | if (deviceProtocolDetail != null && receiveData.Contains(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue)) |
| | | { |
| | | ////è¿éæåä¹åï¼è¦åå¨å°çDt_TorqueOpï¼åä»»å¡å·ï¼ç»ï¼å¼ï¼ |
| | | //string group = ""; |
| | | //if (group == "çµæ°") |
| | | //{ |
| | | // var putake = _putakeRepository.QueryData(x => x.Pustatus == 2 && x.Grouptype == group).OrderByDescending(x => x.Dispatchtime).FirstOrDefault();//æ¯æ¬¡é½æ¿ææ©ç飿¡ |
| | | // var punjid = putake.ID; |
| | | // var Nj = new Dt_TorqueOp() |
| | | // { |
| | | // TakeId = putake.Njtakeid, |
| | | // GroupOp = group, |
| | | // //ProcessSte= processList |
| | | // TorqueSize = receiveData |
| | | |
| | | // }; |
| | | // _orqueOpRepository.AddData(Nj); |
| | | |
| | | //} |
| | | //if (group == "æºæ¢°") |
| | | //{ |
| | | |
| | | //} |
| | | //if (group == "å°æ²") |
| | | |
| | | |
| | | item.DeviceProParamName = CommandType.Set.ToString(); |
| | | //æè¿æ¡æ°æ®æå
¥opè¡¨ä¸ |
| | | string group = item.DeviceProDataBlock; // è®¾å¤æå±ç»å« |
| | | string devicecode = item.DeviceChildCode;//设å¤ç¼å· |
| | | string torqueValue = ExtractTorqueValue(receiveData);//è°ç¨è½¬å¼æ¹æ³ |
| | | if (group == "çµæ°" || group == "å°æ²" || group == "æºæ¢°") |
| | | { |
| | | if (takeid != null) |
| | | { |
| | | SaveTorqueOpData(group, devicecode, torqueValue, takeid); |
| | | } |
| | | |
| | | item.DeviceProParamName = CommandType.None.ToString(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | else if (item.DeviceProParamName == CommandType.Get.ToString()) |
| | | { |
| | | DeviceProtocolDetailDTO? deviceProtocolDetail = serialPortDevice.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(CommandResult) && x.ProtocolDetailType == nameof(CommandResult.GetError)); |
| | | if (deviceProtocolDetail != null && receiveData.Contains(item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue)) |
| | | |
| | | 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.Set.ToString(); |
| | | |
| | | |
| | | |
| | | item.DeviceProParamName = CommandType.None.ToString(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | //建ä¸ä¸ªå¯¹è±¡å°å
¶ä¼ ç»å端 |
| | | //string data = JsonConvert.SerializeObject(serialPortDevice);//è¿éserialPortDeviceæ¯å设æè¿ä¸ªå¯¹è±¡ |
| | | //_webSocketContext.PublishAllClientPayload(data); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | WriteDebug("CommonConveyorLineJob", "test"); |
| | | return Task.CompletedTask; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å°0004000转为4.0 |
| | | /// 0004500转为4.5 |
| | | /// </summary> |
| | | /// <param name="data"></param> |
| | | /// <returns></returns> |
| | | private string ExtractTorqueValue(string data) |
| | | { |
| | | string[] parts = data.Split(','); // æéå·å岿°æ® |
| | | if (parts.Length > 1) // ç¡®ä¿è³å°æä¸¤ä¸ªé¨å |
| | | { |
| | | //è¿åçæ¯ä¸ä¸ªç±»ä¼¼äº82407024103,+0005433,0004500,1702485619 |
| | | string targetValue = parts[1].TrimStart('+'); // ç§»é¤å导 '+' |
| | | if (Regex.IsMatch(targetValue, @"^\d+$")) // ç¡®ä¿æ¯çº¯æ°å |
| | | { |
| | | return (double.Parse(targetValue) / 1000.0).ToString("0.###"); // é¤ä»¥ 1000ï¼ä¿çæå¤ 3 ä½å°æ° |
| | | } |
| | | } |
| | | return "0.000"; // è§£æå¤±è´¥è¿å 0.000 |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// å¤ççµæ°ä»»å¡é»è¾ï¼åéæç©æä»¤å°è®¾å¤ |
| | | /// </summary> |
| | | /// <param name="group">ä»»å¡åç»</param> |
| | | /// <param name="serialPortDevice">串å£è®¾å¤</param> |
| | | /// <param name="item">设å¤ä¿¡æ¯</param> |
| | | /// <param name="deviceProtocolDetail">设å¤å议详æ
</param> |
| | | private void ProcessElectricTask(string group, SerialPortDevice serialPortDevice, DeviceProDTO item, DeviceProtocolDetailDTO deviceProtocolDetail,string takeid) |
| | | { |
| | | //1.è·åå½åä»»å¡å· //IPutakeServeréé¢çå¾
æ§è¡çç¬¬ä¸æ¡ä»»å¡ï¼ |
| | | //var take = _putakeRepository.QueryData(x => x.Grouptype == group) |
| | | // .OrderBy(x => x.Dispatchtime) |
| | | // .FirstOrDefault(); |
| | | |
| | | |
| | | //2.è°ç¨Getcircuitæ¿å°å½åæ¥éª¤ |
| | | var process = _processServer.Getcircuit(group, takeid); |
| | | |
| | | if (process != null && process.Status) |
| | | { |
| | | var list = JsonConvert.SerializeObject(process.Data); |
| | | var data = JsonConvert.DeserializeObject<ProcessData>(list); |
| | | |
| | | if (data?.proNow != null) |
| | | { |
| | | |
| | | int setpNum = data.proNow.SetpNum; |
| | | int sum = data.proNow.TorqueSum; |
| | | double torqueone = data.proNow.TorqueOne; |
| | | double torquetwo = data.proNow.TorqueTwo; |
| | | |
| | | int onequantity = data.proNow.TorqueOneQuantity; |
| | | int towquantity = data.proNow.TorqueTwoQuantity; |
| | | |
| | | |
| | | //夿op表ä¸è¿ä¸ªå¼æ¯å¦æè¯¥æ¡ä»»å¡çæ°æ® |
| | | //var op = _orqueOpRepository.QueryData(x => x.TakeId == takeid && x.GroupOp == group && x.ProcessSte == setpNum); |
| | | // 3. æ¥è¯¢æç©è®°å½ |
| | | var opResponse = _torqueOpServer.WhetherSaveValueData(takeid, group, setpNum); |
| | | if (opResponse == null || !opResponse.Status || opResponse.Data == null) |
| | | { |
| | | Console.WriteLine($"WhetherSaveValueDataæ¥å£é误ï¼{opResponse?.Message}"); |
| | | return; |
| | | } |
| | | |
| | | var op = JsonConvert.DeserializeObject<List<Dt_TorqueOp>>(JsonConvert.SerializeObject(opResponse.Data)); // ç¡®ä¿è½¬æ¢æ£ç¡® |
| | | |
| | | |
| | | if (op.Any())//夿æ¯å¦ææ°æ® |
| | | { |
| | | //æ¾å°äºå°±è¦å¯¹æ¯ç°å¨opè¡¨ä¸æå¤å°æ¡ï¼æ¯å¦åå·¥èºè¡¨ä¸çç®æ ä¸è´ |
| | | |
| | | // 计ç®ç¬¬ä¸ä¸ªæç©çæ°éï¼å¨ ±1 误差èå´å
ï¼//Math.Abs(5.2 - 4.5) = 0.7 // 计å
¥ Math.Abs(6.0 - 4.5) = 1.5 ä¸è®¡å
¥ |
| | | var oponecount = op.Count(x => Math.Abs(x.TorqueSize - torqueone) <= 1); |
| | | |
| | | int times = 0; |
| | | if (op.Count() > onequantity) |
| | | { |
| | | times = onequantity;//å¦æç¬¬ä¸æ¡ä»¥å满足就移é¤onequantityæ°éçæ°æ® |
| | | } |
| | | else |
| | | { |
| | | times = op.Count();//æ²¡ææ»¡è¶³å°±ç§»é¤å½åçæ°æ®æ°æ® |
| | | } |
| | | |
| | | for (int i = 0; i < times; i++) |
| | | { |
| | | //ç§»é¤ç¬¬ä¸æ¬¡å¼çå½±åï¼ä»¥ä¸ºæå¯è½ä¿©ä¸ªç®æ å¼ç¸è¿è产ç误å¤ï¼ |
| | | op.RemoveAt(0); //ç§»é¤ op å表ç 第ä¸ä¸ªå
ç´ ï¼å³ææ©åå
¥çè®°å½ï¼ |
| | | |
| | | } |
| | | |
| | | // 计ç®ç¬¬äºä¸ªæç©çæ°éï¼å¨ ±1 误差èå´å
ï¼ |
| | | var optowcount = op.Count(x => Math.Abs(x.TorqueSize - torquetwo) <= 1); |
| | | sum = oponecount + optowcount; |
| | | //第ä¸ç§ï¼ç¬¬ä¸ä¸ªæå弿²¡ææå® |
| | | if (oponecount < onequantity && torqueone != 0) |
| | | { |
| | | //è®¾å¼ |
| | | //var com = item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue |
| | | // .Replace("[setNum]", (torqueone * 1000).ToString().PadLeft(7, '0')) + "\r"; |
| | | var com = item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue |
| | | .Replace("[setNum]", Math.Round(torqueone * 1000).ToString().PadLeft(7, '0')) + "\r"; |
| | | //æ ¼å¼åææ´æ° |
| | | |
| | | serialPortDevice.Communicator.Write(com); |
| | | //WriteDebug("åå
¥", com); |
| | | } |
| | | //第äºç§ï¼ç¬¬ä¸ä¸ªå¼æå®äºï¼ç¬¬äºä¸ªæ²¡ææå® |
| | | if (oponecount == onequantity && optowcount < towquantity && torquetwo != 0) |
| | | { |
| | | //è®¾å¼ |
| | | var com = item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue |
| | | .Replace("[setNum]", Math.Round(torquetwo * 1000).ToString().PadLeft(7, '0')) + "\r"; |
| | | serialPortDevice.Communicator.Write(com); |
| | | } |
| | | } |
| | | //è¿éè¿ä¸ªä»»å¡ç¬¬ä¸æ¬¡æ§è¡ï¼op表ä¸è¯å®æ¯æ²¡ææ°æ®çï¼ææç¬¬ä¸æ¬¡å°±è¦æå·¥èºè¡¨ä¸çå¼ç»å® |
| | | else if(!op.Any()&& torqueone!=0)//鲿¢æ¥éª¤ä¸ä¸torqueoneçå¼ä¸º0å¯¼è´æ¥é |
| | | { |
| | | //è®¾å¼ |
| | | var com = item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue |
| | | .Replace("[setNum]", Math.Round(torqueone * 1000).ToString().PadLeft(7, '0')) + "\r"; |
| | | serialPortDevice.Communicator.Write(com); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | Console.WriteLine("proNow 为空"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | Console.WriteLine($"Getcireitæ¥å£é误ï¼{process?.Message}"); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åéæç©æä»¤å°è®¾å¤ |
| | | /// </summary> |
| | | /// <param name="serialPortDevice">串å£è®¾å¤</param> |
| | | /// <param name="item">设å¤ä¿¡æ¯</param> |
| | | /// <param name="deviceProtocolDetail">设å¤å议详æ
</param> |
| | | /// <param name="torqueValue">æç©å¼</param> |
| | | private void SendTorqueCommand(SerialPortDevice serialPortDevice, DeviceProDTO item, DeviceProtocolDetailDTO deviceProtocolDetail, double torqueValue) |
| | | { |
| | | var com = item.DeviceChildCode + deviceProtocolDetail.ProtocalDetailValue |
| | | .Replace("[setNum]", Math.Round(torqueValue * 1000).ToString().PadLeft(7, '0')) + "\r"; |
| | | serialPortDevice.Communicator.Write(com); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// åå¨æç©æ°æ®å° `op` 表 |
| | | /// </summary> |
| | | private void SaveTorqueOpData(string group, string devicecode, string torqueValue,string takeid) |
| | | { |
| | | |
| | | //è°ç¨Getcircuitæ¿å°å½åæ¥éª¤ |
| | | var process = _processServer.Getcircuit(group, takeid); |
| | | |
| | | if (process != null && process.Status) |
| | | { |
| | | var list = JsonConvert.SerializeObject(process.Data); |
| | | var dataz = JsonConvert.DeserializeObject<ProcessData>(list); |
| | | |
| | | if (dataz?.proNow != null) |
| | | { |
| | | |
| | | int setpNum = dataz.proNow.SetpNum; |
| | | int sum = dataz.proNow.TorqueSum; |
| | | double torqueone = dataz.proNow.TorqueOne; |
| | | int onequantity = dataz.proNow.TorqueOneQuantity; |
| | | int towquantity = dataz.proNow.TorqueTwoQuantity; |
| | | double torquetwo = dataz.proNow.TorqueTwo; |
| | | Dt_TorqueOp Addop = new Dt_TorqueOp() |
| | | { |
| | | DeviceCode = devicecode, |
| | | TakeId = takeid, |
| | | GroupOp = group, |
| | | ProcessSte = setpNum, |
| | | TorqueSize = float.TryParse(torqueValue, out float torque) ? torque : 0.0f, // è¿éè¿è¡å符串å°floatçè½¬æ¢ |
| | | CreateDate = DateTime.Now, |
| | | }; |
| | | //_orqueOpRepository.AddData(Addop); |
| | | _torqueOpServer.AddData(Addop); |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |