C sharp - No encuentro este error

 
Vista:
sin imagen de perfil
Val: 168
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

No encuentro este error

Publicado por Meta (122 intervenciones) el 20/04/2021 18:29:07
Hola:

Al ejecutar el programa me sale este error.
System.OverflowException: 'Valor demasiado grande o demasiado pequeño para Int32.'

Con cretamente aquí.
1
int Variar_este_valor = Convert.ToInt32(Recibidos);

Código del programa.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
using System;
using System.IO.Ports; // No olvidar.
using System.IO;
 
namespace Porcentaje_Barra_Puerto_Serie_Consola_03
{
    class Program
    {
        public static string recibidos = "";
        public static double Resultado_Porcentaje = 0;
        public static double Resultado_Voltios = 0;
        public static double Mitad_barra = 0;
        public static int Contador = 1;
 
 
        static void Main(string[] args)
        {
            #region Configuración ventana.
            // Título de la ventana.
            Console.Title = "Puerto serie C# - 2019";
 
            // Tamaño de la ventana, x, y.
            Console.SetWindowSize(100, 35);
 
            // Color de fondo.
            Console.BackgroundColor = ConsoleColor.DarkBlue;
 
            // Color de las letras.
            Console.ForegroundColor = ConsoleColor.Yellow;
 
            // Limpiar pantalla y dejarlo todo en color de fondo.
            Console.Clear();
 
            // Visible el cursor.
            Console.CursorVisible = true;
            #endregion
            string COM = "";
 
            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
            SerialPort serialPort1 = new SerialPort();
 
            // Configuración.
            Console.Write(@"
Introduzca un número para seleccionar puerto COM.
Por ejemplo el 4, sería COM4.
Puerto: ");
            COM = Console.ReadLine(); // Escribir el número del puerto.
            Console.Clear();
 
            serialPort1.PortName = "COM" + COM; // Número del puerto serie.
 
            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
 
            // Configuración del puerto serie.
            serialPort1.BaudRate = 9600;            // Baudios o velocidad. 115200
            serialPort1.Parity = Parity.None;       // Sin paridad.
            serialPort1.DataBits = 8;               // 8 Bits de datos.
            serialPort1.StopBits = StopBits.Two;    // Bits de parada.
            serialPort1.Handshake = Handshake.None; // Control de flujo.
            serialPort1.ReadBufferSize = 4096;      // Tamaño del Búffer de lectura en Bytes.
            serialPort1.WriteBufferSize = 2048;     // Tamaño del Búffer de escritura en Bytes.
            serialPort1.ReadTimeout = 500;          // Establecer lectura de espera.
            serialPort1.WriteTimeout = 500;         // Establecer escritura de espera.
            serialPort1.DtrEnable = false;
            serialPort1.RtsEnable = false;
 
 
            try
            {
                serialPort1.Open(); // Abrir el puerto serie.
            }
 
            catch (IOException)
            {
                Console.ForegroundColor = ConsoleColor.Red; // Texto en rojo.
                Console.CursorVisible = false;
                Console.SetCursorPosition(16, 6);
                Console.WriteLine(@"El puerto " + serialPort1.PortName + @" no existe
            o no lo encuentra.");
            }
 
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
 
            Console.Read();
            serialPort1.Close(); // Cerrar puerto.
        }
 
        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
 
        {
 
            try
            {
                SerialPort sp = (SerialPort)sender;
                recibidos = sp.ReadExisting();
                //Console.Clear();
 
                recibidos = recibidos.Replace("\n\r", "");
 
                int Variar_este_valor = Convert.ToInt32(recibidos);
 
                Resultado_Porcentaje = Variar_este_valor * (100.00 / 1023.00);
                Resultado_Voltios = Variar_este_valor * (5.00 / 1023.00);
 
 
                Console.SetCursorPosition(0, 1);
                Console.Write("Datos recibidos: ");
                Console.SetCursorPosition(17, 1);
                Console.Write("    ");
                Console.SetCursorPosition(17, 1);
                Console.Write(recibidos);
 
                // Dibujamos la barra del portentaje.
                Console.SetCursorPosition(0, 3);
                Console.Write("0 %                     50 %                   100 %");
                Console.SetCursorPosition(0, 4);
                Console.Write("┌────────────────────────┬───────────────────────┐");
                Console.Write("                                                  ");
                Console.ForegroundColor = ConsoleColor.Yellow;
 
                // Se dibide por dos la barra del porcentaje para que quepa decuadamente en la pantalla.
                Mitad_barra = Resultado_Porcentaje / 2;
 
                if (Mitad_barra > 50)
                {
                    Mitad_barra = 50;
                }
 
                // Console.SetCursorPosition(0, 5);
                ClearCurrentConsoleLine();
                // Barra de progreso.
                for (int i = 1; i <= Mitad_barra; i++)
                {
                    Console.Write("█"); // Muestra ASCII 219 Dec y DB en Hex.
                                        // Console.Write((char)219);
                                        // Console.Write(Encoding.ASCII.GetBytes((char)219));
                }
 
                // Si sobre pasa 100, muestra # al final de la barra del porcentaje de color rojo.
                if (Resultado_Porcentaje >= 100)
                {
                    Console.SetCursorPosition(50, 5);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Write("#");
                }
 
                Console.ForegroundColor = ConsoleColor.Gray; // Vuelve al color gris.
 
                // Línea 7.
                Console.SetCursorPosition(0, 7);
                Console.Write("Porcentaje: ");
                Console.SetCursorPosition(12, 7);
                Console.Write("            ");
                Console.SetCursorPosition(12, 7);
                Console.Write(Resultado_Porcentaje.ToString("N0") + " %.");
 
                // Línea 8.
                Console.SetCursorPosition(0, 8);
                Console.Write("Voltios: ");
                Console.SetCursorPosition(12, 8);
                Console.Write("            ");
                Console.SetCursorPosition(12, 8);
                Console.Write(Resultado_Voltios.ToString("N2") + " V.");
 
            }
 
            catch (FormatException)
            {
                // Console.WriteLine("La cadena de entrada no tiene el formato correcto.");
                Console.SetCursorPosition(0, 10);
                Console.Write("                 ");
                Console.SetCursorPosition(0, 10);
                Console.Write("Contador: " + Contador++);
                // return;
            }
 
        }
 
        public static void ClearCurrentConsoleLine()
        {
            int currentLineCursor = Console.CursorTop;
            Console.SetCursorPosition(0, Console.CursorTop);
            Console.Write(new string(' ', Console.WindowWidth));
            Console.SetCursorPosition(0, currentLineCursor);
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 218
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

No encuentro este error

Publicado por Cesar (82 intervenciones) el 20/04/2021 18:40:02
Hola.

El mensaje es muy claro. No se que contenga tu varaible "recibidos", pero o es muy grande, o es muy pequeño.

Una variable entera es de 32 bits, por lo que solo puede almacenar hasta 2,147,483,648.

Prueba a cambiar a tipo long, el cual es un entero de 64 bits.

1
long Variar_este_valor = Convert.ToInt64(recibidos);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 168
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

No encuentro este error

Publicado por Meta (122 intervenciones) el 21/04/2021 09:40:40
Lo he puesto.

Resulta que si ejecuto el programa lo hace. Si le doy a cerrar y luego ejecutar vuelve aparecer el mismo error.

Tengo que quitar el cable, colocarlo al P y luego ejecutar el programa y se ejecuta. Así no sale el error a pesar que puse también en modo long.

Una vez funcionando. Lo que no entiendo como que parpadea mucho la pantalla, es decir, si me muestra un valor que le llega por cada 100 ms desde el puerto serie, por ejemplo, el valor 454, tiene que verse este valor a:

Captura28

Luego se pasa a este valor de abajo.
Captura29

Se va alternando así cada rato. Tiene que estar fijo la pantalla, parece que hace refrezco de imagen cada cierto tiempo. Solo tiene que cambiar de imagen fluido si desde el puerto serie cambia de valor tanto los números como la barra de progreso.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 158
Bronce
Ha aumentado su posición en 2 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

No encuentro este error

Publicado por dario (48 intervenciones) el 21/04/2021 17:40:00
Hola, prueba a cambiar la variable "Recibidos" a minusculas "recibidos".
Salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 168
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

No encuentro este error

Publicado por Meta (122 intervenciones) el 21/04/2021 18:00:01
Hecho.

Código C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
using System;
using System.IO.Ports; // No olvidar.
using System.IO;
 
namespace Porcentaje_Barra_Puerto_Serie_Consola_03
{
    class Program
    {
        public static string recibidos = "";
        public static double resultadoPorcentaje = 0;
        public static double resultadoVoltios = 0;
        public static double mitadBarra = 0;
        public static int contador = 1;
 
 
        static void Main(string[] args)
        {
            #region Configuración ventana.
            // Título de la ventana.
            Console.Title = "Puerto serie C# - 2019";
 
            // Tamaño de la ventana, x, y.
            Console.SetWindowSize(60, 15);
 
            // Color de fondo.
            Console.BackgroundColor = ConsoleColor.DarkBlue;
 
            // Color de las letras.
            Console.ForegroundColor = ConsoleColor.Yellow;
 
            // Limpiar pantalla y dejarlo todo en color de fondo.
            Console.Clear();
 
            // Visible el cursor.
            Console.CursorVisible = false;
            #endregion
            string COM = "";
 
            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
            SerialPort serialPort1 = new SerialPort();
 
            // Configuración.
            Console.Write(@"
Introduzca un número para seleccionar puerto COM.
Por ejemplo el 4, sería COM4.
Puerto: ");
            COM = Console.ReadLine(); // Escribir el número del puerto.
            Console.Clear();
 
            serialPort1.PortName = "COM" + COM; // Número del puerto serie.
 
            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
 
            // Configuración del puerto serie.
            serialPort1.BaudRate = 9600;            // Baudios o velocidad. 115200
            serialPort1.Parity = Parity.None;       // Sin paridad.
            serialPort1.DataBits = 8;               // 8 Bits de datos.
            serialPort1.StopBits = StopBits.Two;    // Bits de parada.
            serialPort1.Handshake = Handshake.None; // Control de flujo.
            serialPort1.ReadBufferSize = 4096;      // Tamaño del Búffer de lectura en Bytes.
            serialPort1.WriteBufferSize = 2048;     // Tamaño del Búffer de escritura en Bytes.
            serialPort1.ReadTimeout = 2000;          // Establecer lectura de espera.
            serialPort1.WriteTimeout = 2000;         // Establecer escritura de espera.
            serialPort1.DtrEnable = false;
            serialPort1.RtsEnable = false;
 
 
            try
            {
                serialPort1.Open(); // Abrir el puerto serie.
            }
 
            catch (IOException)
            {
                Console.ForegroundColor = ConsoleColor.Red; // Texto en rojo.
                Console.CursorVisible = false;
                Console.SetCursorPosition(16, 6);
                Console.WriteLine(@"El puerto " + serialPort1.PortName + @" no existe
            o no lo encuentra.");
            }
 
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
 
            Console.Read();
            serialPort1.Close(); // Cerrar puerto.
        }
 
        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
 
        {
 
            try
            {
                SerialPort sp = (SerialPort)sender;
                recibidos = sp.ReadExisting();
                //Console.Clear();
 
                recibidos = recibidos.Replace("\n\r", "");
 
                long Variar_este_valor = Convert.ToInt64(recibidos);
 
                resultadoPorcentaje = Variar_este_valor * (100.00 / 1023.00);
                resultadoVoltios = Variar_este_valor * (5.00 / 1023.00);
 
 
                Console.SetCursorPosition(0, 1);
                Console.Write("Datos recibidos: ");
                Console.SetCursorPosition(17, 1);
                Console.Write("    ");
                Console.SetCursorPosition(17, 1);
                Console.Write(recibidos);
 
                // Dibujamos la barra del portentaje.
                Console.SetCursorPosition(0, 3);
                Console.Write("0 %                     50 %                   100 %");
                Console.SetCursorPosition(0, 4);
                Console.Write("┌────────────────────────┬───────────────────────┐");
                Console.Write("                                                  ");
                Console.ForegroundColor = ConsoleColor.Yellow;
 
                // Se dibide por dos la barra del porcentaje para que quepa decuadamente en la pantalla.
                mitadBarra = resultadoPorcentaje / 2;
 
                if (mitadBarra > 50)
                {
                    mitadBarra = 50;
                }
 
                Console.SetCursorPosition(0, 5);
                ClearCurrentConsoleLine();
                // Barra de progreso.
                for (int i = 1; i <= mitadBarra; i++)
                {
                    Console.Write("█"); // Muestra ASCII 219 Dec y DB en Hex.
                                        // Console.Write((char)219);
                                        // Console.Write(Encoding.ASCII.GetBytes((char)219));
                }
 
                // Si sobre pasa 100, muestra # al final de la barra del porcentaje de color rojo.
                if (resultadoPorcentaje >= 100)
                {
                    Console.SetCursorPosition(50, 5);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Write("#");
                }
 
                Console.ForegroundColor = ConsoleColor.Gray; // Vuelve al color gris.
 
                // Línea 7.
                Console.SetCursorPosition(0, 7);
                Console.Write("Porcentaje: ");
                Console.SetCursorPosition(12, 7);
                Console.Write("            ");
                Console.SetCursorPosition(12, 7);
                Console.Write(resultadoPorcentaje.ToString("N0") + " %.");
 
                // Línea 8.
                Console.SetCursorPosition(0, 8);
                Console.Write("Voltios: ");
                Console.SetCursorPosition(12, 8);
                Console.Write("            ");
                Console.SetCursorPosition(12, 8);
                Console.Write(resultadoVoltios.ToString("N2") + " V.");
 
            }
 
            catch (FormatException)
            {
                // Console.WriteLine("La cadena de entrada no tiene el formato correcto.");
                Console.SetCursorPosition(0, 10);
                Console.Write("                 ");
                Console.SetCursorPosition(0, 10);
                Console.Write("Contador: " + contador++);
                // return;
            }
 
        }
 
        public static void ClearCurrentConsoleLine()
        {
            int currentLineCursor = Console.CursorTop;
            Console.SetCursorPosition(0, Console.CursorTop);
            Console.Write(new string(' ', Console.WindowWidth));
            Console.SetCursorPosition(0, currentLineCursor);
        }
    }
}

Código C++ Arduino:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Include el código de la librería.
#include <LiquidCrystal.h>
 
unsigned int valorPot1 = 0;
 
// Inicializa la librería con sus pines indicados.
// RS, RW, Enable, D4, D5, D6, D7.
//LiquidCrystal lcd(8, NULL, 9, 4, 5, 6, 7);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
 
// Pin 10 para saber que es luz de fondo.
//const byte LuzFondo = 10;
 
void setup()
{
 
  Serial.begin(9600); // 115200
  // La pantalla es de 16 caracteres y 2 filas.
  lcd.begin(16, 2);
 
  // Indicar luz de fondo como salida.
  // pinMode(LuzFondo, OUTPUT);
 
  pinMode(A1, INPUT);
}
 
void loop()
{
  valorPot1 = analogRead(A1);
  lcd.setCursor(0, 0);
  lcd.print(F("Pot. A1: "));
  lcd.setCursor(9, 0);
  lcd.print(F("    "));
  lcd.setCursor(9, 0);
  lcd.print(valorPot1);
  Serial.print(valorPot1);
  delay(100); // 1000 mili segundos o 1 segundo.
}

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar