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ú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[...]
; 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
				

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();
        }
    }
}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();
        }
    }
}            Porcentaje = Leo_Dato1[0] * (100.00 / 1023.00); // Error aquí
            Voltio = Leo_Dato1[0] * (5.00 / 1023.00); // y aquí.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
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);
                    }
                }
            }
        }
    }
}

Cadena = string.Format("{0}{1}{0}{0}{2}{0}{3}{0}{4}", Environment.NewLine, "*** CÓDIGO DE ACCESO ACEPTADO ***", "████████████████████████████████████████", "█     BIENVENIDO DOCTOR FRANKESTEIN    █", "████████████████████████████████████████");
                Mecanografiar(Cadena);

        // 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());
        
    }
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();
        }
    }
}

