Ejemplo n.º 1
0
        public bool Connect()
        {
            try
            {
                byte[] bytStatus = new byte[1];
                int    num       = MXIO_CS.MXEIO_Init();
                switch (MXIO_CS.MXEIO_E1K_Connect(Encoding.UTF8.GetBytes(this.ipAddress), this.port, this.timeOut, this.hConnection, Encoding.UTF8.GetBytes(this.password)))
                {
                case 0:
                    switch (MXIO_CS.MXEIO_CheckConnection(this.hConnection[0], this.timeOut, bytStatus))
                    {
                    case 0:
                        return(true);

                    case 0x7d1:
                    case 0xfa2:
                        MXIO_CS.MXEIO_Exit();
                        break;
                    }
                    return(false);

                case 0x7d1:
                case 0xfa2:
                    MXIO_CS.MXEIO_Exit();
                    break;
                }
                return(false);
            }
            catch (Exception exception)
            {
                CLog.WriteErrLogInTrace(string.Format("在连接IOLogik时出错,{0}", exception.Message));
                return(false);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Moxa1200"/> class.
        /// </summary>
        /// <exception cref="System.Exception">Moxa ioLogic 1200 driver failed to initialize.</exception>
        public Moxa1200()
        {
            ExtractEmbeddedAssembly();

            MoxaStatus status = (MoxaStatus)MXIO_CS.MXEIO_Init();

            if (status != MoxaStatus.Ok)
            {
                throw new Exception("Moxa ioLogic 1200 driver failed to initialize.");
            }
        }
Ejemplo n.º 3
0
 public VmIOReaderHome()
 {
     uiContext = SynchronizationContext.Current;
     DIs       = new ObservableCollection <DigitalInput>();
     Relays    = new ObservableCollection <Relay>();
     SetupHTTPClient();
     ret = MXIO_CS.MXEIO_Init();
     ret = MXIO_CS.MXEIO_E1K_Connect(System.Text.Encoding.UTF8.GetBytes(IpAddress), Port, Timeout, hConnection, System.Text.Encoding.UTF8.GetBytes(Password));
     testDelay();
     DIs.Insert(0, new DigitalInput()
     {
         diIndex  = 0,
         diMode   = 0,
         diStatus = 0
     });
     DIs.Insert(1, new DigitalInput()
     {
         diIndex  = 0,
         diMode   = 0,
         diStatus = 0
     }); DIs.Insert(0, new DigitalInput()
     {
         diIndex  = 0,
         diMode   = 0,
         diStatus = 0
     });
     DIs.Insert(1, new DigitalInput()
     {
         diIndex  = 1,
         diMode   = 0,
         diStatus = 0
     });
     Relays.Insert(0, new Relay()
     {
         relayIndex             = 0,
         relayStatus            = 0,
         relayCurrentCount      = 0,
         relayCurrentCountReset = 0,
         relayMode       = 0,
         relayTotalCount = 0
     });
     Relays.Insert(1, new Relay()
     {
         relayIndex             = 1,
         relayStatus            = 0,
         relayCurrentCount      = 0,
         relayCurrentCountReset = 0,
         relayMode       = 0,
         relayTotalCount = 0
     });
     //StartDIListenerThread();
 }
Ejemplo n.º 4
0
        public MXIOManager(Logger logger)
        {
            this.Logger = logger;
            Logger.Log(LogLevel.INFO, "Initializing the MXIO library...");
            int ret;

            // DLL version.
            ret = MXIO_CS.MXIO_GetDllVersion();
            Logger.Log(LogLevel.INFO, "DLL Version: {0}.{1}.{2}.{3}", (ret >> 12) & 0xF, (ret >> 8) & 0xF, (ret >> 4) & 0xF, (ret) & 0xF);

            // Build date.
            ret = MXIO_CS.MXIO_GetDllBuildDate();
            Logger.Log(LogLevel.INFO, "DLL Build Date: {0:x}/{1:x}/{2:x}", (ret >> 16), (ret >> 8) & 0xFF, (ret) & 0xFF);

            // Init.
            ret = MXIO_CS.MXEIO_Init();
            if (ret != MXIO_CS.MXIO_OK)
            {
                throw new MXIOException("MXIO init failed: {0}.", ret);
            }
        }
Ejemplo n.º 5
0
        private void eXX_DO_Write(string IPAddr, UInt16 Port, UInt32 Timeout, byte Channel, uint Value, int ModuleType)
        {
            Int32[] hConnection = new Int32[16];
            string  Password    = "";
            int     ret         = 0;

            try
            {
                this.myLog.LogAlert(AlertType.System, this.id.ToString(), this.GetType().ToString(), "e1K_DO_Write()", "IPAddr = " + IPAddr.ToString(), "system");
                int init = MXIO_CS.MXEIO_Init();

                if ((MXIO_ModuleType)ModuleType == MXIO_ModuleType.E1212)
                {
                    ret = MXIO_CS.MXEIO_E1K_Connect(System.Text.Encoding.UTF8.GetBytes(IPAddr), Port, Timeout, hConnection, System.Text.Encoding.UTF8.GetBytes(Password));
                    ret = MXIO_CS.E1K_DO_Writes(hConnection[0], Channel, 1, Value);
                    MXIO_CS.MXEIO_Disconnect(hConnection[0]);
                }
                else if ((MXIO_ModuleType)ModuleType == MXIO_ModuleType.E2210)
                {
                    byte bytSlot = 0;
                    ret = MXIO_CS.MXEIO_Connect(System.Text.Encoding.UTF8.GetBytes(IPAddr), Port, Timeout, hConnection);
                    ret = MXIO_CS.DO_Writes(hConnection[0], bytSlot, Channel, 1, Value);
                    MXIO_CS.MXEIO_Disconnect(hConnection[0]);
                }

                MXIO_CS.MXEIO_Exit();

                if (ret != 0)
                {
                    this.myLog.LogAlert(AlertType.Error, this.id.ToString(), this.GetType().ToString(), "e1K_DO_Write()",
                                        "Error code, ret = " + ret.ToString(), "system");
                }
            }
            catch (Exception ex)
            {
                this.myLog.LogAlert(AlertType.Error, this.id.ToString(), this.GetType().ToString(), "e1K_DO_Write()",
                                    ex.ToString(), "system");
            }
        }
Ejemplo n.º 6
0
        private void btnInit_Click(object sender, EventArgs e)
        {
            //--------------------------------------------------------------------------
            ret = MXIO_CS.MXIO_GetDllVersion();
            tbCommunication.AppendText(string.Format("MXIO_GetDllVersion:{0}.{1}.{2}.{3}{4}", (ret >> 12) & 0xF, (ret >> 8) & 0xF, (ret >> 4) & 0xF, (ret) & 0xF, "\r\n"));

            ret = MXIO_CS.MXIO_GetDllBuildDate();
            tbCommunication.AppendText(string.Format("MXIO_GetDllBuildDate:{0:x}/{1:x}/{2:x}{3}", (ret >> 16), (ret >> 8) & 0xFF, (ret) & 0xFF, "\r\n"));
            //--------------------------------------------------------------------------
            ret = MXIO_CS.MXEIO_Init();
            tbCommunication.AppendText(string.Format("MXEIO_Init return {0}{1}", ret, "\r\n"));
            //--------------------------------------------------------------------------
            //Connect to ioLogik device
            tbCommunication.AppendText(string.Format("MXEIO_E1K_Connect IP={0}, Port={1}, Timeout={2}, Password={3}{4}", ioLogicIP, ioLogicPortNo, ioLogicTimeout, Password, "\r\n"));
            //Create Connection
            CreateIoHandle();
            //Check Connection
            CheckConnection(true);
            //Check the if the webservice for Navision is running
            if (cbService.Checked)
            {
                CheckService(NavServiceServer, NavServiceUserName, NavServicePassword, NavServiceServiceName, true);
            }
            //Get firmware Version
            byte[] bytRevision = new byte[4];
            ret = MXIO_CS.MXIO_ReadFirmwareRevision(hConnection[0], bytRevision);
            MXEIO_Error.CheckErr(ret, "MXIO_ReadFirmwareRevision");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText(string.Format("MXIO_ReadFirmwareRevision:V{0}.{1}, Release:{2}, build:{3}{4}", bytRevision[0], bytRevision[1], bytRevision[2], bytRevision[3], "\r\n"));
            }
            //--------------------------------------------------------------------------
            //Get firmware Release Date
            UInt16[] wGetFirmwareDate = new UInt16[2];
            ret = MXIO_CS.MXIO_ReadFirmwareDate(hConnection[0], wGetFirmwareDate);
            MXEIO_Error.CheckErr(ret, "MXIO_ReadFirmwareDate");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText(string.Format("MXIO_ReadFirmwareDate:{0:x}/{1:x}/{2:x}{3}", wGetFirmwareDate[1], (wGetFirmwareDate[0] >> 8) & 0xFF, (wGetFirmwareDate[0]) & 0xFF, "\r\n"));
            }
            //--------------------------------------------------------------------------
            //Get Module Type
            UInt16[] wModuleType = new UInt16[1];
            ret = MXIO_CS.MXIO_GetModuleType(hConnection[0], 0, wModuleType);
            MXEIO_Error.CheckErr(ret, "MXIO_GetModuleType");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText(string.Format("MXIO_GetModuleType: Module Type = {0:x}{1}", wModuleType[0], "\r\n"));
            }
            //--------------------------------------------------------------------------

            byte safebytCount        = 8;
            byte safebytStartChannel = 0;

            //Set Power On value = OFF
            UInt32 dwSetDOPowerOnValue = 0;

            ret = MXIO_CS.E1K_DO_SetPowerOnValues(hConnection[0], safebytStartChannel, safebytCount, dwSetDOPowerOnValue);
            MXEIO_Error.CheckErr(ret, "E1K_DO_GetPowerOnValues");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText(string.Format("E1K_DO_SetPowerOnValues Set Ch{0}~ch{1} DO Direction DO Mode Power On value = OFF success.{2}", bytStartChannel, safebytCount + bytStartChannel - 1, "\r\n"));
            }

            //Get Ch{0}~ch{1} DO Direction DO Mode value
            UInt32[] dwGetDOValue = new UInt32[1];
            ret = MXIO_CS.E1K_DO_Reads(hConnection[0], safebytStartChannel, safebytCount, dwGetDOValue);
            MXEIO_Error.CheckErr(ret, "E1K_DO_Reads");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText(string.Format("E1K_DO_Reads Get Ch{0}~ch{1} DO Direction DO Mode value success.{2}", bytStartChannel, bytCount + bytStartChannel - 1, "\r\n"));
                for (int i = 0, dwShiftValue = 0; i < safebytCount; i++, dwShiftValue++)
                {
                    tbCommunication.AppendText(string.Format("DO value: ch[{0}] = {1}{2}", i + safebytStartChannel, ((dwGetDOValue[0] & (1 << dwShiftValue)) == 0) ? "OFF" : "ON", "\r\n"));
                }
            }

            UInt16[] wDoSafeValue = new UInt16[8] {
                0, 0, 0, 0, 0, 0, 0, 0
            };

            ret = MXIO_CS.E1K_DO_SetSafeValues_W(hConnection[0], safebytStartChannel, safebytCount, wDoSafeValue);
            MXEIO_Error.CheckErr(ret, "E1K_DO_SetSafeValues_W");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText(string.Format("E1K_DO_SetSafeValues_W ch{0}~ch{1} success.{2}", safebytStartChannel, safebytStartChannel + safebytCount - 1, "\r\n"));
            }
            //Get Ch XX DO Direction DO Mode safe values
            UInt16[] wGetDOSafeValue = new UInt16[8];
            ret = MXIO_CS.E1K_DO_GetSafeValues_W(hConnection[0], safebytStartChannel, safebytCount, wGetDOSafeValue);
            MXEIO_Error.CheckErr(ret, "E1K_DO_GetSafeValues_W");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText(string.Format("E1K_DO_GetSafeValues_W Get Ch{0}~ch{1} DO Direction DO Mode DO Safe Value success.", safebytStartChannel, safebytStartChannel + safebytCount - 1, "\r\n"));
                for (int i = 0; i < safebytCount; i++)
                {
                    switch (wGetDOSafeValue[i])
                    {
                    case 0:
                        tbCommunication.AppendText(string.Format("DO Safe value: ch[{0}] = {1}{2}", i, "OFF", "\r\n"));
                        break;

                    case 1:
                        tbCommunication.AppendText(string.Format("DO Safe value: ch[{0}] = {1}{2}", i, "ON", "\r\n"));
                        break;

                    case 2:
                        tbCommunication.AppendText(string.Format("DO Safe value: ch[{0}] = {1}{2}", i, "Hold Last", "\r\n"));
                        break;
                    }
                }
            }
            //  ---------------------------------------  DI setup -------------------------------------------------

            //Set Ch0~ch3 DI Direction DI Mode
            for (int i = 0; i < bytCount; i++)
            {
                wSetDI_DIMode[i] = DI_DIRECTION_DI_MODE;
            }

            ret = MXIO_CS.E1K_DI_SetModes(hConnection[0], bytStartChannel, bytCount, wSetDI_DIMode);
            MXEIO_Error.CheckErr(ret, "E1K_DI_SetModes");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText(string.Format("E1K_DI_SetModes Set Ch{0} ~ Ch{1} DI Direction DI Mode Succcess.{2}", bytStartChannel, bytCount - 1, "\r\n"));
            }
            //Get Ch0~ch3 DI Direction Mode
            ret = MXIO_CS.E1K_DI_GetModes(hConnection[0], bytStartChannel, bytCount, wGetDIMode);
            MXEIO_Error.CheckErr(ret, "E1K_DI_GetModes");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText(string.Format("E1K_DI_GetModes Get Ch{0}~ch{1} DI Direction Mode success.", bytStartChannel, bytCount + bytStartChannel - 1));
                tbCommunication.AppendText("\r\n");
                for (int i = 0; i < bytCount; i++)
                {
                    tbCommunication.AppendText(string.Format("ch{0}={1}", i + bytStartChannel, (wGetDIMode[i] == wDI_DI_MODE) ? "DI_MODE" : "COUNT_MODE"));
                    tbCommunication.AppendText("\r\n");
                }
            }
            //*******************
            // Set/Get DI filter
            //*******************
            //Set Ch0~ch3 DI Direction Filter
            UInt16[] wFilter = new UInt16[8];
            for (int i = 0; i < safebytCount; i++)
            {
                wFilter[i] = (UInt16)(DI_SignalFilter);
            }
            ret = MXIO_CS.E1K_DI_SetFilters(hConnection[0], safebytStartChannel, safebytCount, wFilter);
            MXEIO_Error.CheckErr(ret, "E1K_DI_SetFilters");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText(string.Format("E1K_DI_SetFilters Set Ch{0}~ch{1} DI Direction Filter to {2} return {3}{4}", safebytStartChannel, safebytCount + safebytStartChannel - 1, DI_SignalFilter, ret, "\r\n"));
            }

            //Get Ch0~ch3 DI Direction Filter
            ret = MXIO_CS.E1K_DI_GetFilters(hConnection[0], safebytStartChannel, safebytCount, wFilter);
            MXEIO_Error.CheckErr(ret, "E1K_DI_GetFilters");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText(string.Format("E1K_DI_GetFilters Get Ch{0}~ch{1} DI Direction Filter return {2}", bytStartChannel, bytCount + bytStartChannel - 1, ret));
                tbCommunication.AppendText("\r\n");
                for (int i = 0; i < safebytCount; i++)
                {
                    tbCommunication.AppendText(string.Format("DI Filter Value: ch[{0}] = {1}{2}", i, wFilter[i], "\r\n"));
                }
            }
        }