1
dengjunjie
2025-12-25 3db3b2244255ca7eadc4babe1cc4430bc22cb46b
´úÂë¹ÜÀí/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PLCJob.cs
@@ -2,6 +2,7 @@
using HslCommunication;
using HslCommunication.Core;
using Microsoft.VisualBasic.FileIO;
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
using Quartz;
using SixLabors.ImageSharp.PixelFormats;
using System;
@@ -36,7 +37,13 @@
            _formulaDetailService = formulaDetailService;
            _processInfoService = processInfoService;
        }
        private readonly string set = "0x16,0x4D,0x0D,0x30,0x34,0x30,0x31,0x44,0x30,0x35,0x2E";//主机发送设置扫描模式为主机模式的命令,扫描器返回接收到的命令和<ACK>(0x06)后,将扫描模式更改为主机模式
        private readonly string Text = "开启扫码";//主机发送设置扫描模式为主机模式的命令,扫描器返回接收到的命令和<ACK>(0x06)后,将扫描模式更改为主机模式
        private readonly string command = "0x16,0x54,0x0D";//发送开始解码命令;"0x16,0x55,0x0D"发送停止解码命令
        SerialPortCommunicator portCommunicator1 = new SerialPortCommunicator("COM1", 9600, "上线扫码枪");
        static bool IsConnected1 = false;
        SerialPortCommunicator portCommunicator2 = new SerialPortCommunicator("COM2", 9600, "上线扫码枪");
        static bool IsConnected2 = false;
        public Task Execute(IJobExecutionContext context)
        {
@@ -48,6 +55,7 @@
                    OtherDevice device = (OtherDevice)value;
                    try
                    {
                        var Heart = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolHeart);
                        var EMG = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolEMG);
                        var AutoExecuting = device.GetValue<R_PLCDBName, bool>(R_PLCDBName.rboolAutoExecuting);
@@ -60,9 +68,32 @@
                            var Location1ScanDone = device.GetValue<W_PLCDBName, bool>(W_PLCDBName.wboolLocation1ScanDone);
                            if (Location1ScanStart && !Location1ScanDone)//控制扫码枪扫描托盘码,根据托盘码查询组盘数据,判断托盘绑定成品是否已绑定所有所需零件
                            {
                                #region MyRegion
                                #region ä¸²å£è¿žæŽ¥
                                if (!IsConnected1) IsConnected1 = portCommunicator1.Connect();
                                if (!IsConnected2) IsConnected2 = portCommunicator2.Connect();
                                byte[] dataToSend1 = Encoding.ASCII.GetBytes(command);//转成字节数组
                                portCommunicator1.Write(dataToSend1);
                                string receiveData = portCommunicator2.ToString(Encoding.UTF8);
                                //if (receiveData == "0x16,0x54,0x0D")
                                //{
                                //    Console.WriteLine(receiveData);
                                byte[] dataToSend2 = Encoding.ASCII.GetBytes("PL106");//转成字节数组
                                portCommunicator2.Write(dataToSend2);
                                //}
                                string PalletCode = portCommunicator1.ToString(Encoding.UTF8);
                                if (PalletCode.IsNotEmptyOrNull())
                                {
                                    var boxing = _boxingService.Repository.QueryFirst(x => x.PalletCode == PalletCode);
                                }
                                IsConnected1 = !portCommunicator1.Disconnect();
                                IsConnected2 = !portCommunicator2.Disconnect();
                                #endregion
                                #endregion
                                device.SetValue(W_PLCDBName.wboolLocation1ScanDone, true);
                            }
                            else if (!Location1ScanDone && Location1ScanStart)
                            else if (!Location1ScanStart && Location1ScanDone)
                            {
                                device.SetValue(W_PLCDBName.wboolLocation1ScanDone, false);
                            }