Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Meta

#541
Hola:

Hay respuestas por aquí.

Un cordial saludo.
#542
.NET (C#, VB.NET, ASP) / Re: Novato en vb
2 Marzo 2016, 08:20 AM
Hola:

Antes que nada, saber que lenguaje estás usando. Estás usando Visual C++ CLR, bajo la platadorma net. no es el nativo, para dejarlo claro. Tampoco es lo mismo Visual Basic 6 que no se aconseja usarlo para los nuevos Sistemas Operativos, sino el Visual Basic .net.

Hay compilador gratuito como muestra Microsoft aquí.
https://www.microsoft.com/es-es/download/details.aspx?id=48146

Si vas  atrabajar bajo Win32 con la API de Windows es muy tedioso, se usaba antes y es extremadamente compplicado dominarlo bien. Aquí como crear ventadas o formularios sea Visual C++ tipo CLR, MFC, Win32 y ATL para funciones o librerías.

Ver tutorial.
http://www.slideshare.net/Metaconta2/formulario-windows-con-visual-c

Para que te hagas una idea de los tres lenguajes y tecnología de Visual Basic AWF y WPF como muestra aquí.
http://www.slideshare.net/Metaconta2/entrada-digital-con-arduino-y-visual-studio-2015

Saludos.
#543
Cita de: Eleкtro en  1 Marzo 2016, 11:10 AM
Efectivamente la utilización de la instrucción Goto es totalmente irrecomendable tanto por Microsoft en la MSDN así como de forma no-oficial en cualquier otro lenguaje que soporte Goto y por cualquier programador con los conocimientos suficientes para entender lo que su uso implica[...]

No comparto que el Goto no se recomiende en cualquier lenguaje de programación. El GOTO que se uso mucho es en ASM de los PIC. Lo usas si o si.

Código (asm) [Seleccionar]
; ZONA DE DATOS *******************************************************

LIST P=16F887
INCLUDE <P16F887.INC>
__CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC
__CONFIG    _CONFIG2, _WRT_OFF & _BOR21V
__IDLOCS 0x1234

CBLOCK   0x20
TeclaPulsada ; Va a guardar el contenido de la tecla pulsada.
MensajeApuntado ; Va a guarda la dirección del mensaje apuntado.
Relays ; Estado de los relays
Estado ; Estado general
ENDC

#DEFINE PEntradasB PORTB ; Define puerto de salidas.
#DEFINE EntradaR1B 0 ; Define dónde se sitúa cada salidas.
#DEFINE EntradaR2B 1
#DEFINE EntradaR3B 2
#DEFINE EntradaR4B 3
#DEFINE EntradaR5B 4
#DEFINE EntradaR6B 5
#DEFINE EntradaR7B 6
#DEFINE EntradaR8B 7
#DEFINE PSalidasD PORTD
#DEFINE SalidaR1D 0
#DEFINE SalidaR2D 1
#DEFINE SalidaR3D 2
#DEFINE SalidaR4D 3
#DEFINE SalidaR5D 4
#DEFINE SalidaR6D 5
#DEFINE SalidaR7D 6
#DEFINE SalidaR8D 7

TECLA_RELE_1_ON EQU 'q' ; Código de las teclas utilizadas.
TECLA_RELE_1_OFF EQU 'a'
TECLA_RELE_2_ON EQU 'w'
TECLA_RELE_2_OFF EQU 's'
TECLA_RELE_3_ON EQU 'e'
TECLA_RELE_3_OFF EQU 'd'
TECLA_RELE_4_ON EQU 'r'
TECLA_RELE_4_OFF EQU 'f'
TECLA_RELE_5_ON EQU 't'
TECLA_RELE_5_OFF EQU 'g'
TECLA_RELE_6_ON EQU 'y'
TECLA_RELE_6_OFF EQU 'h'
TECLA_RELE_7_ON EQU 'u'
TECLA_RELE_7_OFF EQU 'j'
TECLA_RELE_8_ON EQU 'i'
TECLA_RELE_8_OFF EQU 'k'
TECLA_INICIO EQU 'z'
TECLA_PARADA EQU ' ' ; Código de la tecla espaciadora, (hay un espacio,
; tened cuidado al teclear el programa).
TECLA_INFO EQU 'n'

ENTER EQU 0x0A ; Código de tecla "Enter" o "Retorno de Carro".
CAMBIO_LINEA EQU 0x0D ; Código para el cambio de línea.

ORG 0x2100 ; Corresponde a la dirección 0 de la zona EEPROM
; de datos.
DE 0x00,2,3

;****************************************************************************
;* ZONA DE CODIGOS *
;****************************************************************************

;****************************************************************************
;* Rutina Principal *
;****************************************************************************

ORG 0x00
goto Inicio

ORG 4 ; Aquí se sitúa el vector de interrupción para
goto LeeEntradasVisualiza ; atender las subrutinas de interrupción.


Inicio
call LCD_Inicializa ; Inicializa el display LCD
call RS232_Inicializa ; Inicializa RS232.
bsf PEntradasB,EntradaR1B
bsf PEntradasB,EntradaR2B
bsf PEntradasB,EntradaR3B
bsf PEntradasB,EntradaR4B
bsf PEntradasB,EntradaR5B
bsf PEntradasB,EntradaR6B
bsf PEntradasB,EntradaR7B
bsf PEntradasB,EntradaR8B
bcf PSalidasD,SalidaR1D
bcf PSalidasD,SalidaR2D
bcf PSalidasD,SalidaR3D
bcf PSalidasD,SalidaR4D
bcf PSalidasD,SalidaR5D
bcf PSalidasD,SalidaR6D
bcf PSalidasD,SalidaR7D
bcf PSalidasD,SalidaR8D
BANKSEL CM1CON0
movlw b'00000111'
movwf CM1CON0
movwf CM2CON0
movwf CM2CON1           
    BANKSEL ANSEL
    clrf ANSEL
    clrf ANSELH
    BANKSEL TRISB
movlw b'11111111'
    movwf TRISB
clrw
clrf TRISD
    BANKSEL PORTD



call RS232_LineasBlanco ; Visualiza unas cuantas líneas en blanco
call RS232_LineasBlanco ; para limpiar la pantalla.
movlw b'10001000' ; Habilita la interrupción RBI y la general.
movwf INTCON

Principal ; apagadas.
sleep
goto Principal ; Loop Infinito

;****************************************************************************
;* Mensajes *
;****************************************************************************
Mensajes
addwf PCL,F
MensajeParado
DT "Sistema DESACTIVADO ", 0x00
Mensaje_Reles
DT " 1 2 3 4 5 6 7 8 RL ", 0x00
Mensaje_ON
DT " 1", 0x00
Mensaje_OFF
DT " O", 0x00
Mensaje_Cambiolinea
DT ENTER, CAMBIO_LINEA, 0x00
Mensaje_Mostrarlinea
DT "----------------", 0x00
Mensaje_Info
DT "n", 0x00
; DT "FirmWare v2.15  "
; DT ENTER, CAMBIO_LINEA
; call LCD_Linea2
; DT " PIC16F887      "
; DT ENTER, CAMBIO_LINEA
; call Retardo_2s
; call LCD_Linea1
; DT " metaconta      "
; DT ENTER, CAMBIO_LINEA
; call LCD_Linea2
; DT " @gmail.com     ", 0x00
; call Retardo_2s
Mensaje_Activar
DT "   Todos ACTIVOS    ", 0x00
Mensaje_IN
DT " IN", 0x00
Mensaje_OUT
DT " OUT", 0x00
Mensaje_Avisos
DT "***    ALARMA    ***", 0x00
MensajeEntradas
DT ENTER, CAMBIO_LINEA
DT " 1 2 3 4 5 6 7 8 IN"
DT ENTER, CAMBIO_LINEA
DT "-------------------"
DT ENTER, CAMBIO_LINEA, 0x00
FinTablaASCII





;****************************************************************************
; Interrupción
;****************************************************************************

;****************************************************************************
; Subrutina
;****************************************************************************


; btfss PEntradasC,EntradaR1C ; ¿Bit 0 del PORTA es "1"?
; goto D1_OFF
; bsf PSalidasD,SalidaR1D
; goto Principal
;D1_OFF
; bcf PSalidasD,SalidaR1D

LeeEntradasVisualiza
call RS232_LineasBlanco
movlw MensajeEntradas ; Nombre de las entradas.
call RS232_Mensaje ; Lo visualiza en el ordenador.
LeeEntrada1
btfss PEntradasB,EntradaR1B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada1Cerrado ; No, está cerrada.
bsf PSalidasD,SalidaR1D
call VisualizaAbierto1
goto LeeEntrada2
Entrada1Cerrado
bcf PSalidasD,SalidaR1D
call VisualizaCerrado1
LeeEntrada2
btfss PEntradasB,EntradaR2B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada2Cerrado ; No, está cerrada.
call VisualizaAbierto2
goto LeeEntrada3
Entrada2Cerrado
call VisualizaCerrado2
LeeEntrada3
btfss PEntradasB,EntradaR3B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada3Cerrado ; No, está cerrada.
call VisualizaAbierto3
goto LeeEntrada4
Entrada3Cerrado
call VisualizaCerrado3
LeeEntrada4
btfss PEntradasB,EntradaR4B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada4Cerrado ; No, está cerrada.
call VisualizaAbierto4
goto LeeEntrada5
Entrada4Cerrado
call VisualizaCerrado4
LeeEntrada5
btfss PEntradasB,EntradaR5B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada5Cerrado ; No, está cerrada.
call VisualizaAbierto5
goto LeeEntrada6
Entrada5Cerrado
call VisualizaCerrado5
LeeEntrada6
btfss PEntradasB,EntradaR6B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada6Cerrado ; No, está cerrada.
call VisualizaAbierto6
goto LeeEntrada7
Entrada6Cerrado
call VisualizaCerrado6
LeeEntrada7
btfss PEntradasB,EntradaR7B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada7Cerrado ; No, está cerrada.
call VisualizaAbierto7
goto LeeEntrada8
Entrada7Cerrado
call VisualizaCerrado7
LeeEntrada8
btfss PEntradasB,EntradaR8B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada8Cerrado ; No, está cerrada.
call VisualizaAbierto8
goto FinVisualiza
Entrada8Cerrado
call VisualizaCerrado8
FinVisualiza
call RS232_LineasBlanco
bcf INTCON,RBIF ; Limpia el flag de reconocimiento de la
retfie

;----------------------------------------------------------------------------------------

VisualizaAbierto1
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaAbierto2
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaAbierto3
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaAbierto4
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaAbierto5
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaAbierto6
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaAbierto7
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaAbierto8
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaCerrado1
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaCerrado2
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaCerrado3
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaCerrado4
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaCerrado5
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaCerrado6
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaCerrado7
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return

VisualizaCerrado8
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return ; interrupción.
; ---------------------------------------------------------------------------

IF (FinTablaASCII>0xFF)
ERROR "¡CUIDADO!: La tabla ha superado el tamaño de los"
MESSG "primeros 256 bytes de memoria ROM. No funcionará correctamente."
ENDIF

INCLUDE  <RS232.INC>
INCLUDE  <RS232MEN.INC>
INCLUDE  <LCD_4BIT.INC>
INCLUDE  <LCD_MENS.INC>
INCLUDE  <RETARDOS.INC>
INCLUDE  <EEPROM.INC>
END


GOTO para asm o ensamblador de PIC, 8085, 8086, 8088 y demás, se usa obligado por el cual está diseñado así, para lenguajes de bajo nivel. Para alto nivel como explica nuestro amigo, es como dice.

Gracias por la explicación.
#544
Hola:

Ahora lo entiendo. ;)

Muchas gracias por la ayuda mi muy distinguido amigo. ;)
#545
Hola:

Gracias por la info, el tema de los colores del progressBar lo haré para el final. ;)

Hice este código de ejemplo en modo consola para hacer pruebas.



Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Porcentaje_Barra_Consola_CS
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "Estilo progressBar C#";

            int Variar_este_valor = 0; // De 0 a 1023.
            double Resultado_Porcentaje = 0;
            double Resultado_Voltios = 0;

            Console.WriteLine("Introduce el valor entre 0 al 1023.");
            Variar_este_valor = Convert.ToInt32(Console.ReadLine());

            Resultado_Porcentaje = Variar_este_valor * (100.00 / 1023.00);
            Resultado_Voltios = Variar_este_valor * (5.00 / 1023.00);
            Console.WriteLine("{0} % y {1} Voltios.", Resultado_Porcentaje, Resultado_Voltios);
            Console.ReadLine();
        }

    }
}


Me faltan cosas, que los decimales se vean solo dos dígitos y que funcione.

REpitiendo el código que ya mejoraré como dijiste arriba.
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.IO.Ports; // No olvidar.

namespace Arduino_In_Analogico_prueba_01
{
    public partial class Form1 : Form
    {
        // Utilizaremos un string como buffer de recepción.
        string Recibidos;

        public Form1()
        {
            InitializeComponent();

            if (!serialPort1.IsOpen)
            {
                try
                {
                    serialPort1.Open();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }

            serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
        }

        // Al recibir datos.
        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {

            // Acumula los caracteres recibidos a nuestro 'buffer' (string).
            Recibidos = serialPort1.ReadLine();

            // Invocar o llamar al proceso de tramas.
            Invoke(new EventHandler(Actualizar));
        }


        // Como variables de clase
        private string[] Separador = new string[] { ",", "\r", "\n", "/n" };
        private List<string> Leo_Dato1 = new List<string>();

        // Procesar los datos recibidos en el bufer y extraer tramas completas.
        private void Actualizar(object sender, EventArgs e)
        {
            double Porcentaje = 0;
            double Voltio = 0;

            // En el evento
            Leo_Dato1.Clear();
            Leo_Dato1.AddRange(Recibidos.Split(Separador, StringSplitOptions.RemoveEmptyEntries));

            label_Lectura_Potenciometro.Text = Leo_Dato1[0].ToString();
            progressBar1.Value = Convert.ToInt32(Leo_Dato1[0].ToString());

            Porcentaje = Leo_Dato1[0] * (100.00 / 1023.00); // Error aquí
            Voltio = Leo_Dato1[0] * (5.00 / 1023.00); // y aquí.

            label_Portentaje.Text = Porcentaje.ToString();
            label_Voltio.Text = Voltio.ToString();

        }
    }
}


Nos centramos donde da error.
Código (csharp) [Seleccionar]
            Porcentaje = Leo_Dato1[0] * (100.00 / 1023.00); // Error aquí
            Voltio = Leo_Dato1[0] * (5.00 / 1023.00); // y aquí.


Los dos errores dice esto:
CitarGravedad   Código   Descripción   Proyecto   Archivo   Línea
Error   CS0019   El operador '*' no se puede aplicar a operandos del tipo 'string' y 'double'   Arduino_In_Analogico_prueba_01   C:\Users\Usuario\Documents\Visual Studio 2015\Projects\Arduino_In_Analogico_prueba_01\Arduino_In_Analogico_prueba_01\Form1.cs   75

Saludos.
#546
¡¡¡¡Holaaaaaaaaaaaaaa!!!!

El último código lo hicieste de p**a madre con pausas en los espacios y todo.
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string cadena = "Ejemplo de como usar TimeSpan..." +
            Environment.NewLine +
            "... En lugar de usar Speep";

            Mecanografiar(cadena);

        }
        public static void Mecanografiar(string Cadena)
        {
            foreach (char Letra in Cadena)
            {

                if ((Letra) == Convert.ToChar(ConsoleKey.Enter))
                {
                    TimeSpan interval = new TimeSpan(0, 0, 0, 0, 500);
                    Thread.Sleep(interval);
                    System.Threading.Thread.Sleep(750);

                    //Espera 0.75 segundos antes de hacer el salto de línea
                    Console.Beep(600, 100);
                    // beep de salto de línea
                }
                else
                {
                    TimeSpan interval = new TimeSpan(0, 0, 0, 0, 90);
                    Thread.Sleep(interval);
                    // System.Threading.Thread.Sleep(90);
                    Console.Write(Letra);
                    // Hacer sonido solo cuando el caracter sea distinto de espacio
                    if ((Letra) != Convert.ToChar(ConsoleKey.Spacebar))
                    {
                        Console.Beep(500, 9);
                    }
                }
            }
        }
    }
}


Sólo me falta odificar los colores y hacer lo que me da la gana con tu estilo.

Por cierto, me gustó mucho esto.


Me recordaste los viejos tiempos. ;)

Hay partes del código que no entiendo, nuevo para mi a la hora de presentar textos en pantalla como este pedazo de código.
Código (csharp) [Seleccionar]
Cadena = string.Format("{0}{1}{0}{0}{2}{0}{3}{0}{4}", Environment.NewLine, "*** CÓDIGO DE ACCESO ACEPTADO ***", "████████████████████████████████████████", "█     BIENVENIDO DOCTOR FRANKESTEIN    █", "████████████████████████████████████████");
                Mecanografiar(Cadena);


El string.Format.
¿Es necesario usar eso así en vez la consola Console.WreiteLine directamente?

Saludos.
#547
Hola:

Quiero que se muestra así. Gracias. ;)



He estado haciendo pruebas, no funciona porque me olvidé que los datos recibidos desde el puerto serie que viene por cada 0.1 segundos o 100 milisengudos del 0 al 1023, se incluye un retorno de carro, por ejemplo, 823\n.

Por eso hay que usar estos códigos.
Código (csharp) [Seleccionar]
        // Como variables de clase
        private string[] Separador = new string[] { ",", "\r", "\n", "/n" };
        private List<string> Leodato1 = new List<string>();


Y dentro de Actualizar.
Código (csharp) [Seleccionar]
        // Procesar los datos recibidos en el bufer y extraer tramas completas.
        private void Actualizar(object sender, EventArgs e)
        {
            // En el evento
            Leodato1.Clear();
            Leodato1.AddRange(Recibidos.Split(Separador,StringSplitOptions.RemoveEmptyEntries));

            label_Lectura_Potenciometro.Text = Leodato1[0].ToString();
            progressBar1.Value = Convert.ToInt32(Leodato1[0].ToString());

       
    }

Recuerda, por cada muestra recibida del 0 al 1023, cualquier valor entregado tiene un retorno de carro \n. Me funciona tu código así tal como estás, no cuando me recibe en el puerto serie.
Solo me falta el voltaje y el porcentaje.

Preguntas opcionales.
Por cierto, me encantó visualmente lo que hiciste.


1) ¿Con qué compilador lo hiciste?

2) ¿Con Visual C# 2105 se puede cambiar el color del progressBar? (Nunca me ha salido, si de los label, ya que los progress siempre lo veo verde y quiero cambiarlo azul o naranja por decir algo).

Saludos.
#548
Hola:

Estoy haciendo una pequeña prueba. Recibo en el puerto serie / USB datos que recoge Visual C# de 0 a 1023 y lo muestro en un label.



Hasta ahí funciona bien.

Tengo dos label más. El segundo tiene que demostrar el porcentaje del 0 % a 100% según el dato obtenido del 0 a 1023.

En el otro label, el tercero debemostrar número con decimales del 0.00 a 5.00.

A pesar de encontrar la fórmula, no se implementarlo en C#.

El código es este:
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.IO.Ports; // No olvidar.

namespace Arduino_In_Analogico_prueba_01
{
   public partial class Form1 : Form
   {
       // Utilizaremos un string como buffer de recepción.
       string Recibidos;
       int Porcentaje;

       public Form1()
       {
           InitializeComponent();

           if (!serialPort1.IsOpen)
           {
               try
               {
                   serialPort1.Open();
               }
               catch (System.Exception ex)
               {
                   MessageBox.Show(ex.ToString());
               }
           }

           serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
       }

       // Al recibir datos.
       private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
       {

           // Acumula los caracteres recibidos a nuestro 'buffer' (string).
           Recibidos = serialPort1.ReadLine();

           // Invocar o llamar al proceso de tramas.
           Invoke(new EventHandler(Actualizar));
       }


       // Como variables de clase

       private string[] separador = new string[] { ",", "\r", "\n", "/n" };
       private List<string> leodato1 = new List<string>();

       
       
       // Procesar los datos recibidos en el bufer y extraer tramas completas.
       private void Actualizar(object sender, EventArgs e)
       {
           // En el evento
           leodato1.Clear();
           leodato1.AddRange(Recibidos.Split(separador,StringSplitOptions.RemoveEmptyEntries));

           label_Lectura_Potenciometro.Text = leodato1[0].ToString();
           progressBar1.Value = Convert.ToInt32(leodato1[0].ToString());
           progressBar1.PerformStep();
       }
   }
}


Saludos.
#549
Hola:

Que buena pinta tiene el programa. Muchas gracias campeón, lo voy a probar y te cuento.

Que recuerdos. Este si que es una buena peli de hacker básico pero buena. La más nueva que salió hace poco me pareció mala en muchos aspectos, menos cuando salen cosas de programación.


Vi la segunda parte y no es lo mismo. Lo bueno que sale el ordenador el 1.




Ojalá salga el 3.

Probando el último código en C#, lo primero me da errores por todas partes, y nunca había visto usar goto que se aconseja no usarlo en C# ni en Visual Basic para evitar malos hábitos.

Saludos.
#550
Electrónica / Re: Guia Basica de Simatic Step 7
27 Febrero 2016, 15:11 PM
Hola:

¿Te puedes expresar mejor?

Paso a paso de lo que quieres.

Saludos.