private const byte port = 3;           //X3 der Port der RS485 Karte, ist für beide Relaisboxen gleich

        public cSMT_DIO()
        {
            this.BitFld_ARM_Box1      = new HELPER_BIT_FIELD();
            this.BitFld_ARM_Box1.Mask = 0;
            this.BitFld_ARM_Box2      = new HELPER_BIT_FIELD();
            this.BitFld_ARM_Box2.Mask = 0;

            this.BitFld_ARM_Box1_Eingänge      = new HELPER_BIT_FIELD();
            this.BitFld_ARM_Box1_Eingänge.Mask = 0;
            this.BitFld_ARM_Box2_Eingänge      = new HELPER_BIT_FIELD();
            this.BitFld_ARM_Box2_Eingänge.Mask = 0;
        }
 public bool Get_OUT_Bit(int iBitNr)
 {
     if (this.Get_RelaisBox_für_Ausgang(iBitNr) == 1)
     {
         return(BitFld_ARM_Box1.AnyOn(HELPER_BIT_FIELD.DecimalToFlag(iBitNr)));
     }
     if (this.Get_RelaisBox_für_Ausgang(iBitNr) == 2)
     {
         // d
         iBitNr = iBitNr - 6;
         return(BitFld_ARM_Box2.AnyOn(HELPER_BIT_FIELD.DecimalToFlag(iBitNr)));
     }
     else
     {
         return(false);
     }
 }
        public void Set_OUT_Bit(int iBitNr, bool bISOn)
        {
            byte bValue     = 0;
            int  iRelaisBox = 0;

            iRelaisBox = this.Get_RelaisBox_für_Ausgang(iBitNr);

            if (iRelaisBox == 1)
            {
                HELPER_BIT_FIELD.Flag currFlag = HELPER_BIT_FIELD.DecimalToFlag(iBitNr);

                if (bISOn)
                {
                    this.BitFld_ARM_Box1.SetOn(currFlag);
                }
                else
                {
                    this.BitFld_ARM_Box1.SetOff(currFlag);
                }

                bValue = (byte)this.BitFld_ARM_Box1.Mask;
            }
            else if (iRelaisBox == 2)
            {
                iBitNr = iBitNr - 6;
                HELPER_BIT_FIELD.Flag currFlag = HELPER_BIT_FIELD.DecimalToFlag(iBitNr);

                if (bISOn)
                {
                    this.BitFld_ARM_Box2.SetOn(currFlag);
                }
                else
                {
                    this.BitFld_ARM_Box2.SetOff(currFlag);
                }

                bValue = (byte)this.BitFld_ARM_Box2.Mask;
            }
            else
            {
                Debug.Assert(false);
                return;
            }

            this.WriteDIO(bValue, /*Relaisbox*/ iRelaisBox);
        }
        private bool ReadDIO(int iBitNr)
        {
            string s       = "x";
            bool   bRet    = false;
            int    iReturn = 0;

            int RelaisBox = this.Get_RelaisBox_für_Eingang(iBitNr);

            try
            {
                if (RelaisBox == 1)
                {
                    try
                    {
                        s = cGlobalScale.objCIND890APIClient_DigitalIO.DiscreteIO.ReadDIOInput(/*ist immer 3 für X3*/ port, /*ist immer 1*/ slave_ARM_Box1);
                    }
                    catch (Exception ex)
                    {
                        SiAuto.LogException("ReadDIO(a)", ex);

                        cGlobalHandling.MessageBox(
                            "ARM100 Lesen Box1: Das Scaleinterface meldet an Port X3, unter der Slave Adresse " + slave_ARM_Box1.ToString() +
                            " keine Verbindung", "ARM 100 Lesefunktion (Read DIO)");
                        return(false);
                    }


                    iReturn = Convert.ToInt32(s);
                    this.BitFld_ARM_Box1_Eingänge.Mask = (byte)iReturn;
                }
                else if (RelaisBox == 2)
                {
                    try
                    {
                        s = cGlobalScale.objCIND890APIClient_DigitalIO.DiscreteIO.ReadDIOInput(/*ist immer 3 für X3*/ port, /*ist immer 1*/ slave_ARM_Box2);
                    }
                    catch (Exception ex)
                    {
                        SiAuto.LogException("ReadDIO(b)", ex);

                        cGlobalHandling.MessageBox(
                            "ARM100 Lesen Box2: Das Scaleinterface meldet an Port X3, unter der Slave Adresse " + slave_ARM_Box2.ToString() +
                            " keine Verbindung", "ARM 100 Lesefunktion (Read DIO)");
                        return(false);
                    }



                    iReturn = Convert.ToInt32(s);
                    this.BitFld_ARM_Box2_Eingänge.Mask = (byte)iReturn;
                }
                else
                {
                }

                if (RelaisBox == 1)
                {
                    bRet = this.BitFld_ARM_Box1_Eingänge.AnyOn(HELPER_BIT_FIELD.DecimalToFlag(iBitNr));
                }
                else if (RelaisBox == 2)
                {
                    iBitNr = iBitNr - 4;
                    bRet   = this.BitFld_ARM_Box2_Eingänge.AnyOn(HELPER_BIT_FIELD.DecimalToFlag(iBitNr));
                }
                else
                {
                    bRet = false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Read DIO IO Fehler \r\n" + ex.Message);
                throw;
            }

            return(bRet);
        }