//retourne le pourcentage d'encre présente dans x toner
        static public string getTonerStatus(string ipAdress, string printerName, int tonerNumber)
        {
            int    retries         = 1;
            int    TimeoutInMS     = 20000;
            int    tonerNumberDell = 0;
            string status;
            uint   currentlevel;
            uint   maxlevel;

            try
            {
                SNMP snmp = new SNMP();
                snmp.Open(ipAdress, "public", retries, TimeoutInMS);
                switch (tonerNumber)
                {
                case 1:
                    tonerNumberDell = 4;
                    break;

                case 2:
                    tonerNumberDell = 3;
                    break;

                case 3:
                    tonerNumberDell = 1;
                    break;

                case 4:
                    tonerNumberDell = 2;
                    break;
                }
                switch (printerName)
                {
                case "Dell 3010 cn":
                    currentlevel =
                        Convert.ToUInt32(snmp.Get(".1.3.6.1.2.1.43.11.1.1.9.1." +
                                                  tonerNumberDell.ToString()));
                    maxlevel =
                        Convert.ToUInt32(snmp.Get(".1.3.6.1.2.1.43.11.1.1.8.1." +
                                                  tonerNumberDell.ToString()));
                    break;

                default:
                    currentlevel =
                        Convert.ToUInt32(snmp.Get(".1.3.6.1.2.1.43.11.1.1.9.1." +
                                                  tonerNumber.ToString()));
                    maxlevel =
                        Convert.ToUInt32(snmp.Get(".1.3.6.1.2.1.43.11.1.1.8.1." +
                                                  tonerNumber.ToString()));
                    break;
                }
                uint remaininglevel = (currentlevel * 100 / maxlevel);
                status = remaininglevel.ToString();
                snmp.Close();
            }
            catch (Exception)
            {
                status = "Informations non disponibles...";
            }
            return(status);
        }
        // retourne le status du switch
        static public string getStatusSwitch(string ipAdress)
        {
            SNMP   snmp;
            int    DeviceId = 1;
            int    retries = 1;
            int    TimeoutInMS = 20000;
            string Result1Str; string status = "";

            try
            {
                string[] ErrorMessageText = new string[8];
                ErrorMessageText[0] = "service recquis";
                ErrorMessageText[1] = "Eteinte";
                ErrorMessageText[2] = "Bourrage papier";
                ErrorMessageText[3] = "porte ouverte";
                ErrorMessageText[4] = "pas de toner";
                ErrorMessageText[5] = "niveau toner bas";
                ErrorMessageText[6] = "plus de papier";
                ErrorMessageText[7] = "niveau de papier bas";

                snmp = new SNMP();
                snmp.Open(ipAdress, "public", retries, TimeoutInMS);//.1.3.6.1.2.1.2.2.1.7.25
                uint nbPort = snmp.GetAsByte(String.Format(".1.3.6.1.2.1.2.1.0"));
                snmp.Close();
                System.Console.WriteLine("nombre de port : " + nbPort);

                for (int i = 1; i <= nbPort; i++)
                {
                    snmp = new SNMP();
                    snmp.Open(ipAdress, "public", retries, TimeoutInMS);//.1.3.6.1.2.1.2.2.1.7.25//.1.3.6.1.2.1.2.1.0//.1.3.6.1.2.1.2.2.1.6.
                    string adressResult = snmp.Get(".1.3.6.1.2.1.2.2.1.6." + i);
                    byte[] ba           = Encoding.Default.GetBytes(adressResult);
                    string hexString    = BitConverter.ToString(ba);
                    uint   statusResult = snmp.GetAsByte(".1.3.6.1.2.1.2.2.1.8." + i);

                    switch (statusResult)
                    {
                    case 1:
                        Result1Str = "up";
                        break;

                    case 2:
                        Result1Str = "down";
                        break;

                    case 3:
                        Result1Str = "testing";
                        break;

                    case 4:
                        Result1Str = "unknown";
                        break;

                    case 5:
                        Result1Str = "dormant";
                        break;

                    case 6:
                        Result1Str = "notPresent";
                        break;

                    case 7:
                        Result1Str = "lowerLayerDown";
                        break;

                    default:
                        Result1Str = "code inconnu" + statusResult;
                        break;
                    }
                    Console.WriteLine("  port " + i + " adresse : " + hexString + " " + statusResult + " " + Result1Str);
                    snmp.Close();
                }
            }
            catch (Exception)
            {
                status = "Informations non disponibles...";
            }
            return(status);
        }
        // retourne le status de l'imprimante
        static public string getStatus(string ipAdress)
        {
            SNMP   snmp;
            int    DeviceId = 1;
            int    retries = 1;
            int    TimeoutInMS = 20000;
            string Result1Str; string status;

            try
            {
                string[] ErrorMessageText = new string[8];
                ErrorMessageText[0] = "service recquis";
                ErrorMessageText[1] = "Eteinte";
                ErrorMessageText[2] = "Bourrage papier";
                ErrorMessageText[3] = "porte ouverte";
                ErrorMessageText[4] = "pas de toner";
                ErrorMessageText[5] = "niveau toner bas";
                ErrorMessageText[6] = "plus de papier";
                ErrorMessageText[7] = "niveau de papier bas";

                snmp = new SNMP();
                snmp.Open(ipAdress, "public", retries, TimeoutInMS);
                uint WarningErrorBits = snmp.GetAsByte(String.Format("25.3.5.1.2.{0}",
                                                                     DeviceId));
                uint statusResult = snmp.GetAsByte(String.Format("25.3.2.1.5.{0}",
                                                                 DeviceId));

                switch (statusResult)
                {
                case 2:
                    Result1Str = "OK";
                    break;

                case 3:
                    Result1Str = "Avertissement: ";
                    break;

                case 4:
                    Result1Str = "Test: ";
                    break;

                case 5:
                    Result1Str = "Hors de fonctionnement: ";
                    break;

                default:
                    Result1Str = "Code Inconnu: " + statusResult;
                    break;
                }
                string Str = "";

                if ((statusResult == 3 || statusResult == 5))
                {
                    int Mask   = 1;
                    int NumMsg = 0;
                    for (int i = 0; i < 8; i++)
                    {
                        if ((WarningErrorBits & Mask) == Mask)
                        {
                            if (Str.Length > 0)
                            {
                                Str += ", ";
                            }
                            Str   += ErrorMessageText[i];
                            NumMsg = NumMsg + 1;
                        }
                        Mask = Mask * 2;
                    }
                }
                status = Result1Str + Str;
                snmp.Close();
            }
            catch (Exception)
            {
                status = "Informations non disponibles...";
            }
            return(status);
        }