Пример #1
0
        /// <summary>
        /// 启用连接外部设备
        /// </summary>
        /// <param name="_cfg"></param>
        private void SubDeviceInitial()
        {
            try
            {
                AE2DeviceFactory fac = new AE2DeviceFactory();
                //IO模块
                adam = fac.CreateAdamDevice(appConfig.Adam.PortNumber);
                adam.NetChangedAction = (d, n) =>
                {
                    ShowToAllForms(m => m.ADAMNet = n);
                };
                adam.OnSensorTrigger += Adam_OnSensorTrigger;

                //RFID
                rfid = fac.CreateRFIDDevice(appConfig.Rfid);
                //相当于连接变化时的事件
                rfid.NetChangedAction = (d, n) =>
                {
                    ShowToAllForms(m =>
                    {
                        m.RFIDNet = n;
                        m.PrintlnInfo("RFID已连接。");
                    });
                };
                rfid.OnTagDataReaded = TagReaded;//相当于RFID读到标签后的事件

                //串口条码枪
                scan              = fac.CreateScanDevice(appConfig.Scanner);
                scan.OnScanCoded += Scan_OnScanCoded;

                //OPC
                opc = fac.CreateOpcDevice(appConfig.Opc);
                opc.LineStopChangedAction = (s) =>
                {
                    ShowToAllForms(v => v.StopLine = s);
                };
                opc.NetChangedAction = (d, s) =>
                {
                    ShowToAllForms(m =>
                    {
                        m.PLCNet = s;
                    });
                };
                opc.ShieldChangedAction = s =>
                {
                    ShowToAllForms(m =>
                    {
                        m.ShieldStatus = !s;
                        m.PrintlnInfo(s ? "PLC屏蔽PC信号" : "PLC启动接收PC信号");
                    });
                };

                mwCard = fac.CreateCardDevice(appConfig.MwCard);
                Log.Information("设备初始化完成");
            }
            catch (Exception ex)
            {
                Log.Error("外设模块初始化出错," + ex.Message, ex);
            }
        }
Пример #2
0
        /// <summary>
        /// 建立通讯
        /// 调用同步方法连接时,会报MianForm已经Disposed的异常
        /// </summary>
        /// <returns></returns>
        public bool Connect()
        {
            try
            {
                if (TightenToolClient == null)
                {
                    AE2DeviceFactory fac = new AE2DeviceFactory();
                    TightenToolClient = fac.CreateTightenDevice(tdConfig);
                    TightenToolClient.NetChangedAction      = TdNetChanged;
                    TightenToolClient.OnLastTightenData     = ReadLastTightenData;
                    TightenToolClient.OnVehicleNumberAction = ReadVinNumber;
                }
                var start = DateTime.Now;

                if (TightenToolClient.Connect())
                {
                    NetStatus = true;
                    //Subscribe();
                }
                var cost            = DateTime.Now - start;
                int connectCostTime = cost.Seconds + 2;
                Debug.WriteLine($"拧紧连接耗时{connectCostTime - 2}s");
                Log.Information($"拧紧机{tdConfig.Host}通讯连接{(NetStatus ? "成功" : "失败")}。");
                return(NetStatus);
            }
            catch (Exception ex)
            {
                Log.Error("拧紧通讯初始化失败", ex);
                NetChangedAction?.Invoke(tdConfig.ToolId, false);
                return(false);
            }
        }