All pastes #2121149 Raw Edit

Miscellany

public text v1 · immutable
#2121149 ·published 2012-02-24 01:51 UTC
rendered paste body
  private string pumpBoxComando(string comando, string parametro)
        {


            string lectura,cmd,ack,stx, etx,checksum;
            int intentos,bytesToRead;
            byte[] buffer;
            intentos = 0;
            lectura = "";

            stx = Convert.ToChar(2).ToString();
            etx = Convert.ToChar(3).ToString();
            ack = Convert.ToChar(6).ToString();

            cmd = stx;
            cmd += comando;
            cmd += parametro;
            cmd += etx;
            checksum = CheckSum(cmd);
            cmd += checksum;

            try
            {
                while (intentos < 5)
                {

                    puertoSerial.DiscardOutBuffer();
                    puertoSerial.DiscardInBuffer();
                    puertoSerial.Write(cmd);

                    switch (comando)
                    {
                        case "I":
                            {
                                Thread.Sleep(500);
                                break;
                            }

                        case "A":
                            {
                                Thread.Sleep(200);
                                break;
                            }
                        case "F":
                            {
                                if (checksum == "p")
                                    Thread.Sleep(200);
                                else if (checksum == "5")
                                    Thread.Sleep(100);
                                break;
                            }
                        default:
                            {
                                Thread.Sleep(250);
                                break;
                            }
                    }

                    bytesToRead = puertoSerial.BytesToRead;
                    buffer = new byte[bytesToRead];
                    puertoSerial.Read(buffer, 0, bytesToRead);
                    puertoSerial.DiscardInBuffer();
                    puertoSerial.DiscardOutBuffer();

                    lectura = "";

                    lectura = Encoding.UTF8.GetString(buffer);

                    if (lectura == ack || (lectura.Contains(stx) && lectura.Contains(etx)))
                    {
                        hayConexionPumpBox = true;
                        break;
                    }

                    intentos++;
                    Thread.Sleep(200);
                }

                return lectura;
            }
            catch (Exception e)
            {
                hayConexionPumpBox = false;
                return "x";
            
            }
        }