예제 #1
0
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            ret = MOXA_CSharp_MXIO.MXIO_CS.MXEIO_Disconnect(hConnection[0]);
            tbCommunication.AppendText("Closing the connection: " + MXEIO_Error.CheckErr(ret, "MXEIO_Disconnect") + " " + ret.ToString());
            tbCommunication.AppendText("\r\n");

            MOXA_CSharp_MXIO.MXIO_CS.MXEIO_Exit();
            tbCommunication.AppendText("EXIT Communication: OK");
            tbCommunication.AppendText("\r\n");
        }
예제 #2
0
        private int CreateIoHandle()
        {
            ret = MXIO_CS.MXEIO_E1K_Connect(System.Text.Encoding.UTF8.GetBytes(ioLogicIP), ioLogicPortNo, ioLogicTimeout, hConnection, System.Text.Encoding.UTF8.GetBytes(Password));
            MXEIO_Error.CheckErr(ret, "MXEIO_E1K_Connect");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText("MXEIO_E1K_Connect Success.\r\n");
            }
            else
            {
                tbCommunication.AppendText("MXEIO_E1K_Connect FAILED!!!.\r\n");
            }

            return(ret);
        }
예제 #3
0
        private int CheckConnection(bool ShowDialog)
        {
            //--------------------------------------------------------------------------
            //Check Connection
            byte[] bytCheckStatus = new byte[1];
            ret = MXIO_CS.MXEIO_CheckConnection(hConnection[0], ioLogicTimeout, bytCheckStatus);
            MXEIO_Error.CheckErr(ret, "MXEIO_CheckConnection");
            if (ret == MXIO_CS.MXIO_OK)
            {
                switch (bytCheckStatus[0])
                {
                case MXIO_CS.CHECK_CONNECTION_OK:
                    if (ShowDialog)
                    {
                        tbCommunication.AppendText(string.Format("MXEIO_CheckConnection: Check connection ok => {0}{1}", bytCheckStatus[0], "\r\n"));
                    }
                    break;

                case MXIO_CS.CHECK_CONNECTION_FAIL:
                    if (ShowDialog)
                    {
                        tbCommunication.AppendText(string.Format("MXEIO_CheckConnection: Check connection fail => {0}{1}", bytCheckStatus[0], "\r\n"));
                    }
                    break;

                case MXIO_CS.CHECK_CONNECTION_TIME_OUT:
                    if (ShowDialog)
                    {
                        tbCommunication.AppendText(string.Format("MXEIO_CheckConnection: Check connection time out => {0}{1}", bytCheckStatus[0], "\r\n"));
                    }
                    break;

                default:
                    if (ShowDialog)
                    {
                        tbCommunication.AppendText(string.Format("MXEIO_CheckConnection: Check connection status unknown => {0}{1}", bytCheckStatus[0], "\r\n"));
                    }
                    break;
                }
            }
            return(ret);
            //--------------------------------------------------------------------------
        }
예제 #4
0
        private void ResetChanel_Tick(object sender, EventArgs e)
        {
            ret = CheckConnection(false);
            if (ret == MXIO_CS.EIO_SOCKET_DISCONNECT)
            {
                CreateIoHandle();
            }

            ret = MOXA_CSharp_MXIO.MXIO_CS.E1K_DO_Writes(hConnection[0], GlobalChannel, 1, TRIGGER_TYPE_HI_2_LO);
            MXEIO_Error.CheckErr(ret, "E1K_DO_Writes");
            if (ret == MXIO_CS.MXIO_OK)
            {
                tbCommunication.AppendText(string.Format("Reset E1K_DO_Writes Set Ch{0} DO Direction DO Mode value = OFF success.{1}", GlobalChannel, "\r\n"));
            }
            else
            {
                tbCommunication.AppendText(string.Format("Reset E1K_DO_Write Ch{0} OFF returned ERROR: {1} Return value: {2}{3}", GlobalChannel, MXEIO_Error.CheckErr(ret, "E1K_DO_Writes"), ret.ToString(), "\r\n"));
            }

            tbCommunication.AppendText(string.Format("ResetChanelTimer active for: {0}{1}", ResetChanel.Interval.ToString(), "\r\n"));
            GlobalChannel = 0;
        }
예제 #5
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"));
                }
            }
        }
예제 #6
0
        //------------- Format variable ------------


        private void RunTimer_Tick(object sender, EventArgs e)
        {
            Int32 dwShiftValue = 0x0000;
            int   i            = 0;

            UInt32[] dwGetDIValue = new UInt32[1];
            if (cbService.Checked)
            {
                CheckService(NavServiceServer, NavServiceUserName, NavServicePassword, NavServiceServiceName, false);
            }
            BalanceWS.BalanceWS CBPAutomation = new BalanceWS.BalanceWS();
            CBPAutomation.UseDefaultCredentials = true;
            try
            {
                bool OK = false;
                OK = CBPAutomation.WSNewPalletExist(NewPalletPosIs);
                if (OK)
                {
                    ret = CheckConnection(false);
                    if (ret == MXIO_CS.EIO_SOCKET_DISCONNECT)
                    {
                        CreateIoHandle();
                    }
                    ret = MOXA_CSharp_MXIO.MXIO_CS.E1K_DO_Writes(hConnection[0], DO_DATA_SEND_TO_FISKER, 1, TRIGGER_TYPE_LO_2_HI);
                    MXEIO_Error.CheckErr(ret, "E1K_DO_Writes");
                    if (ret == MXIO_CS.MXIO_OK)
                    {
                        tbCommunication.AppendText(string.Format("New Pallet E1K_DO_Writes Set Ch{0} DO Direction DO Mode value = ON success.{1}", DO_DATA_SEND_TO_FISKER, "\r\n"));
                    }
                    else
                    {
                        tbCommunication.AppendText(string.Format("New Pallet E1K_DO_Write Ch{0} ON returned ERROR: {1} Return value: {2}{3}", DO_DATA_SEND_TO_FISKER, MXEIO_Error.CheckErr(ret, "E1K_DO_Writes"), ret.ToString(), "\r\n"));
                    }
                    GlobalChannel = DO_DATA_SEND_TO_FISKER;
                    Thread.Sleep(2000);
                    ResetChanel_Tick(sender, e);
                }

                if (OK)
                {
                    try
                    {
                        CBPAutomation.WSRenameNewPallet(NewPalletPosIs);
                    }
                    catch (Exception ex)
                    {
                        tbCommunication.AppendText(string.Format("Rename New pallet failed: {0}{1}", MessageBox.Show(ex.Message), "\r\n"));
                    }
                }
            }
            catch (Exception ex)
            {
                tbCommunication.AppendText(string.Format("New pallet check failed: {0}{1}", MessageBox.Show(ex.Message), "\r\n"));
            }

            ret = CheckConnection(false);
            if (ret == MXIO_CS.EIO_SOCKET_DISCONNECT)
            {
                CreateIoHandle();
            }

            ret = MXIO_CS.E1K_DI_Reads(hConnection[0], bytStartChannel, bytCount, dwGetDIValue);
            MXEIO_Error.CheckErr(ret, "E1K_DI_Reads");

            if (ret == MXIO_CS.MXIO_OK)
            {
                for (i = 0, dwShiftValue = 0; i < bytCount; i++, dwShiftValue++)
                {
                    MyString = (((dwGetDIValue[0] & (1 << dwShiftValue)) == 0) ? "OFF" : "ON");
                    if (MyString.Equals("ON"))
                    {
                        // se hvilken Ch det drejer sig om og udfør handling.
                        //tbCommunication.AppendText(string.Format("DI value: ch[{0}] = {1}{2}", i + bytStartChannel, ((dwGetDIValue[0] & (1 << dwShiftValue)) == 0) ? "OFF" : "ON", "\r\n"));
                        if ((dwShiftValue) == DI_DUMMY_PALLET)
                        {
                            try
                            {
                                CBPAutomation.WSAddPalletToQue(string.Format("W {0}", DateTime.Now.ToShortDateString() + ' ' + DateTime.Now.ToShortTimeString()));
                                tbCommunication.AppendText(string.Format("Add Wrap-only pallet OK: {0}", "\r\n"));
                            }
                            catch (Exception ex)
                            {
                                tbCommunication.AppendText(string.Format("Add Wrap-only pallet failed: {0}{1}", MessageBox.Show(ex.Message), "\r\n"));
                            }
                        }


                        if ((dwShiftValue) == DI_READY_FOR_LABEL)
                        {
                            try
                            {
                                if (CBPAutomation.WSIsDummyPallet())
                                {
                                    ret = CheckConnection(false);
                                    if (ret == MXIO_CS.EIO_SOCKET_DISCONNECT)
                                    {
                                        CreateIoHandle();
                                    }

                                    ret = MOXA_CSharp_MXIO.MXIO_CS.E1K_DO_Writes(hConnection[0], DO_DUMMY_PALLET, 1, TRIGGER_TYPE_LO_2_HI);
                                    MXEIO_Error.CheckErr(ret, "E1K_DO_Writes");
                                    if (ret == MXIO_CS.MXIO_OK)
                                    {
                                        tbCommunication.AppendText(string.Format("Dummy Pallet DataE1K_DO_Writes Set Ch{0} DO Direction DO Mode value = ON success.{1}", DO_LABEL_SEND_TO_PRINTER, "\r\n"));
                                    }
                                    else
                                    {
                                        tbCommunication.AppendText(string.Format("Dummy Pallet E1K_DO_Write returned ERROR: {0} Return value: {1}{2}", MXEIO_Error.CheckErr(ret, "E1K_DO_Writes"), ret.ToString(), "\r\n"));
                                    }
                                    Thread.Sleep(2000);
                                    GlobalChannel = DO_DUMMY_PALLET;
                                    ResetChanel_Tick(sender, e);
                                }

                                else if (CBPAutomation.WSCreateSSCCDataFile())
                                {
                                    if (System.IO.File.Exists(s_SSCCPath + s_SSCCLabelName))
                                    {
                                        System.IO.File.Copy(s_SSCCPath + s_SSCCLabelName, EidosPrinterIp + EidosPrinterPort, true);
                                    }

                                    if (b_DeleteFile)
                                    {
                                        System.IO.File.Delete(s_SSCCPath + s_SSCCLabelName);
                                    }

                                    ret = CheckConnection(false);
                                    if (ret == MXIO_CS.EIO_SOCKET_DISCONNECT)
                                    {
                                        CreateIoHandle();
                                    }

                                    ret = MOXA_CSharp_MXIO.MXIO_CS.E1K_DO_Writes(hConnection[0], DO_LABEL_SEND_TO_PRINTER, 1, TRIGGER_TYPE_LO_2_HI);
                                    MXEIO_Error.CheckErr(ret, "E1K_DO_Writes");
                                    if (ret == MXIO_CS.MXIO_OK)
                                    {
                                        tbCommunication.AppendText(string.Format("Create SSCC DataE1K_DO_Writes Set Ch{0} DO Direction DO Mode value = ON success.{1}", DO_LABEL_SEND_TO_PRINTER, "\r\n"));
                                    }
                                    else
                                    {
                                        tbCommunication.AppendText(string.Format("Create SSCC E1K_DO_Write returned ERROR: {0} Return value: {1}{2}", MXEIO_Error.CheckErr(ret, "E1K_DO_Writes"), ret.ToString(), "\r\n"));
                                    }
                                    Thread.Sleep(2000);
                                    GlobalChannel = DO_LABEL_SEND_TO_PRINTER;
                                    //RunTimer.Stop();
                                    //ResetChanel.Start();
                                    ResetChanel_Tick(sender, e);
                                }
                            }
                            catch (Exception ex)
                            {
                                tbCommunication.AppendText(string.Format("Send SSCC Data to printer failed: {0}{1}", MessageBox.Show(ex.Message), "\r\n"));
                            }
                        }

                        if ((dwShiftValue) == DI_PALLET_FINISHED)
                        {
                            try
                            {
                                CBPAutomation.WSRemovePallet();
                                tbCommunication.AppendText(string.Format("Remove pallet success: {0}", "\r\n"));
                                Thread.Sleep(2000);
                            }
                            catch (Exception ex)
                            {
                                tbCommunication.AppendText(string.Format("Remove pallet failed: {0}{1}", MessageBox.Show(ex.Message), "\r\n"));
                            }
                        }
                    }
                }
            }
        }