Enero 21, 2018, 06:59:03 am

Mostrar Mensajes

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


Mensajes - Meta

Páginas: [1] 2
1


Tutorial Arduino Delphi 10.2 y Puerto serie. Interfaz creado con Delphi que puedes controlar el puerto serie a Arduino encendiendo y apagando un Led, manejar el LCD y recibes mensajes hacia el PC.

El entorno Delphi con el lenguaje pascal sigue vigente en la actualidad y su uso en Arduino está creciendo cada vez más.



Código fuente de Delphi:
Código: You are not allowed to view links. Register or Login
unit Principal;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, CPort;

type
  TForm1 = class(TForm)
    Label_Titulo: TLabel;
    Label_Mensajes: TLabel;
    Button_ON: TButton;
    Button_OFF: TButton;
    Button_COM: TButton;
    Button_Abrir: TButton;
    Memo_Mensajes: TMemo;
    Button_Limpiar: TButton;
    ComPort1: TComPort;
    procedure Button_ONClick(Sender: TObject);
    procedure Button_OFFClick(Sender: TObject);
    procedure Button_COMClick(Sender: TObject);
    procedure Button_AbrirClick(Sender: TObject);
    procedure Button_LimpiarClick(Sender: TObject);
    procedure ComPort1AfterClose(Sender: TObject);
    procedure ComPort1AfterOpen(Sender: TObject);
    procedure ComPort1RxChar(Sender: TObject; Count: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button_AbrirClick(Sender: TObject);
begin
  // Si el puerto está conectado.
  if ComPort1.Connected then
  begin
    ComPort1.Close; // Cierra el puerto.

    Button_COM.Enabled := True;
    Button_ON.Enabled := False;
    Button_OFF.Enabled := False;
  end

  else  // En caso contrario.

  begin
    ComPort1.Open;  // Abre el puerto.

    Button_COM.Enabled := False;
    Button_ON.Enabled := True;
    Button_OFF.Enabled := True;
  end;
end;

procedure TForm1.Button_COMClick(Sender: TObject);
begin
ComPort1.ShowSetupDialog; // Abre la configuración del puerto.
end;

procedure TForm1.Button_LimpiarClick(Sender: TObject);
begin
Memo_Mensajes.Clear();  // Limpia los mensajes del Memo.
end;

procedure TForm1.Button_OFFClick(Sender: TObject);
begin
ComPort1.WriteStr('Luz_OFF'); // Envía el comando "Luz_OFF" al puerto.
end;

procedure TForm1.Button_ONClick(Sender: TObject);
begin
ComPort1.WriteStr('Luz_ON');  // Envía el comando "Luz_ON" al puerto.
end;

procedure TForm1.ComPort1AfterClose(Sender: TObject);
begin
    if Button_Abrir <> nil then
    Button_Abrir.Caption := 'Abrir';
end;

procedure TForm1.ComPort1AfterOpen(Sender: TObject);
begin
   Button_Abrir.Caption := 'Cerrar';
end;

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
  Str: String;
begin
  // Recibe mensajes desde Arduino.
  ComPort1.ReadStr(Str, Count);

  // Muestra los mensajes en pantalla.
  Memo_Mensajes.Lines.Add( Str );

  // Guarda los mensjes de Arduino en un archivo txt.
  Memo_Mensajes.Lines.SaveToFile('archivo.txt');
end;

end.



Código de Arduino:
Código: You are not allowed to view links. Register or Login
// ----- Electrónica PIC -----
//
// Ejercicio 2.
//
// Encendido y apagado del Led 13 mediante puerto serie con pantalla.
// Es lo mismo que el Ejercicoi 1, pero usando el LCD Keypad Shield.

#include

// 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;

const byte Led = 13;   // Declaramos la variable pin del Led.
char caracter;
String comando;

void setup()
{
  pinMode(Led, OUTPUT);  // Inicializa el pin del LED como salida:
  Serial.begin(115200);     // Puerto serie 115200 baudios.
  lcd.begin(16, 2);         // Formato de pantalla.
  lcd.clear();      // Borra la pantalla y su posición superior izquierda.
  lcd.print("    Arduino     ");
  delay(1000);
}

void loop()
{
  /*
    Voy leyendo carácter a carácter lo que se recibe por el canal serie
    (mientras llegue algún dato allí), y los voy concatenando uno tras otro
    en una cadena. En la práctica, si usamos el "Serial monitor" el bucle while
    acabará cuando pulsamos Enter. El delay es conveniente para no saturar el
    canal serie y que la concatenación se haga de forma ordenada.
  */
  while (Serial.available() > 0)
  {
    caracter = Serial.read();
    comando.concat(caracter);
    delay(10);
  }

  /*
    Una vez ya tengo la cadena "acabada", compruebo su valor y hago que
    la placa Arduino reacciones según sea este. Aquí podríamos hacer lo
    que quisiéramos: si el comando es "tal", enciende un Led, si es cual,
    mueve un motor... y así.
  */

  // Si los carácteres es recibido y verdadero.
  if (comando.equals("Luz_ON") == true)
  {
    digitalWrite(Led, HIGH); // Enciende el Led 13.
    Serial.write("ON - Led encendido.");    // Envía este mensaje al PC.
    lcd.setCursor(0, 1);
    lcd.print("Luz ON.         "); // Mostrar en el LCD.
  }


  if (comando.equals("Luz_OFF") == true)
  {
    digitalWrite(Led, LOW); // Apaga el Led 13.
    Serial.write("OFF - Led apagado. ");  // Envía este mensaje al PC.
    lcd.setCursor(0, 1);
    lcd.print("Luz OFF.        "); // Mostrar en el LCD.
  }

  // Limpiamos la cadena para volver a recibir el siguiente comando.
  comando = "";
}



You are not allowed to view links. Register or Login.

You are not allowed to view links. Register or Login.

You are not allowed to view links. Register or Login.

Un cordial saludo.

2
C / C++ / [TUTORIAL] Arduino C++ y Puerto serie
« en: Marzo 31, 2017, 09:22:13 am »


Tutorial Arduino C++ y Puerto serie. Puedes hacer controlar Arduino y el puerto serie desde el lenguaje C++ Win32. Hay tres IDE para elegir para crear tu propio programa en C++ como Visual Studio 2017, Code::Blocks y C++ Builder Starter.

You are not allowed to view links. Register or Login.

You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login.

Un cordial saludo.

3
Visual Studio.Net / [VB .NET] Corregir este error
« en: Marzo 25, 2017, 12:12:54 pm »
Hola:

Hice un programa en VB .net 2017. Me da este error con el Me y no se como solucionarlo.

¿Alguna idea?

El código es:
Código: You are not allowed to view links. Register or Login
Imports System
Imports System.Text
Imports System.IO.Ports
Imports System.IO
Imports System.Diagnostics
Imports System.Threading

Namespace Recibir_archivo_desde_Arduino_consola_06
    Class Program

        Shared cantidadBytes As Integer
        Shared sb As New StringBuilder()

        Shared Sub Main(args As String())
            Dim COM As String = ""
            ' Título de la ventana.
            Console.Title = "Recoger foto desde Arduino y crearlo en el disco duro"
            ' Tamaño ventana consola.
            Console.WindowWidth = 55 ' X. Ancho.
            Console.WindowHeight = 18 ' Y. Alto.

            ' Crear un nuevo objeto SerialPort con la configuración predeterminada.
            Dim Puerto_serie As 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()
            Puerto_serie.PortName = "COM" & COM ' Número del puerto serie.

            Puerto_serie.BaudRate = 115200 ' Baudios. 115200.
            Puerto_serie.Parity = Parity.None ' Paridad.
            Puerto_serie.DataBits = 8 ' Bits de datos.
            Puerto_serie.StopBits = StopBits.One ' Bits de parada.
            Puerto_serie.Handshake = Handshake.None ' Control de flujo.
            ' Establecer la lectura / escritura de los tiempos de espera.
            Puerto_serie.ReadTimeout = -1 ' 500.
            Puerto_serie.WriteTimeout = -1 ' 500.

            Puerto_serie.Open() ' Abrir el puerto serie.

            'Puerto_serie.DataReceived += New SerialDataReceivedEventHandler(DataReceivedHandler)
            AddHandler Puerto_serie.DataReceived, AddressOf Me.Puerto_serie_DataReceived
            Console.WriteLine("Esperando datos desde Arduino... " & vbLf & "")
            Console.ReadKey()
            Puerto_serie.Close() ' Cerrar puerto.

        End Sub

        Private Shared Sub DataReceivedHandler(sender As Object, e As SerialDataReceivedEventArgs)
            'Private Sub Puerto_serie_DataReceived(ByVal sender As Object, ByVal e As DataReceivedHandler) Handles Puerto_serie.DataReceived

            Dim sp As SerialPort = DirectCast(sender, SerialPort)
            Dim indata As String = sp.ReadExisting()
            Dim data As String() = indata.Split({"A"c})
            cantidadBytes = Integer.Parse(data(0))

            Select Case data(1).ToString()

                Case "1"
                    Console.WriteLine("Tamaño: " & cantidadBytes & " Bytes.")
                    Console.WriteLine("Foto: " & data(1) & ". Tipo de archivo: JPG")

                Case "2"
                    Console.WriteLine("Tamaño: " & cantidadBytes & " Bytes.")
                    Console.WriteLine("Foto: " & data(1) & ". Tipo de archivo: PNG.")

                Case Else
                    Console.WriteLine("Cosas raras en 'data': " & data.ToString())

            End Select

            Dim contador As Integer = 0 ' Por si hal algún error.
            Dim datosArray(0 To cantidadBytes - 1) As Byte

            Select Case indata
                Case "17729A1"
                    Thread.Sleep(100)
                    Dim miBuffer = Encoding.ASCII.GetBytes("OK1") ' Codificación ASCII.
                    sp.Write(miBuffer, 0, miBuffer.Length) ' Envía OK1 al puerto serie.

                Case "2065A2"
                    Thread.Sleep(100)
                    Dim miBuffer2 = Encoding.ASCII.GetBytes("OK2") ' Codificación ASCII.
                    sp.Write(miBuffer2, 0, miBuffer2.Length) ' Envía OK2 al puerto serie.

                Case Else
                    Console.WriteLine("Cosas raras en 'indata': " & indata.ToString())

            End Select

            While True

                contador += sp.Read(datosArray, contador, datosArray.Length - contador) ' Por si hal algún error.
                Console.SetCursorPosition(10, 6)
                Console.Write("Datos recibidos:  {0}", contador & " Bytes.")
                Console.WriteLine("                   ")
                If (contador = cantidadBytes) AndAlso (contador = 17729) Then
                    Mensaje1()
                    File.WriteAllBytes("fotón.jpg", datosArray) ' Crear archivo en el disco duro.
                    Mensaje2()
                    Process.Start("fotón.jpg") ' Ejecutar visualizador de imágenes.
                    Mensaje3()
                    'break ' Garantiza que el ciclo termine.

                End If

                If (contador = cantidadBytes) AndAlso (contador = 2065) Then
                    Mensaje1()
                    File.WriteAllBytes("fotón.png", datosArray) ' Crear archivo en el disco duro.
                    Mensaje2()
                    Process.Start("fotón.png") ' Ejecutar visualizador de imágenes.
                    Mensaje3()
                    'break ' Garantiza que el ciclo termine.

                End If

            End While

        End Sub

        Public Shared Sub Mensaje1()
            Console.WriteLine()
            Console.WriteLine("Creando archivo al disco duro...")
        End Sub


        Public Shared Sub Mensaje2()
            Console.WriteLine()
            Console.WriteLine("Archivo creado. Ejecutando imagen.")
        End Sub

        Public Shared Sub Mensaje3()
            Console.WriteLine()
            Console.WriteLine("Imagen ejecutada.")
            Console.WriteLine()
            'Console.WriteLine("Cabecera recibida: " & indata & "" & vbLf & "")
            Console.ForegroundColor = ConsoleColor.Yellow ' Letras amarillas.
            Console.WriteLine("FIN DE PROGRAMA.")
            Console.ForegroundColor = ConsoleColor.Gray ' Letras grises otra vez.
        End Sub

    End Class

End Namespace


Error:
Citar
Gravedad   Código   Descripción   Proyecto   Archivo   Línea   Estado suprimido
Error   BC30043   'Me' solo es válido en un método de instancia.   Recibir_archivo_desde_Arduino_consola_VB   C:\Users\usuario\documents\visual studio 2017\Projects\Recibir_archivo_desde_Arduino_consola_VB\Recibir_archivo_desde_Arduino_consola_VB\Module1.vb   51   Activo

;)

4
JAVA / Pasar este código a Java
« en: Marzo 25, 2017, 05:21:21 am »
Hola:

Quiero pasar este código de C# a Java con NetBeans.



Instalar Java actualizado:
You are not allowed to view links. Register or Login

Compilador You are not allowed to view links. Register or Login (En español), Java SE:
You are not allowed to view links. Register or Login

Tutorial sobre instalación del NetBeans y las librerías RxTx para controlar el puerto serie de Arduino:
You are not allowed to view links. Register or Login

Librería oficial RxTx solo para 32 bits:
You are not allowed to view links. Register or Login

Librería alternativa RxTx de 32 y de 64 bits. Usaremos 64 bits. (Recomendado):
You are not allowed to view links. Register or Login

El código de C# es este aquí abajo.
Código: You are not allowed to view links. Register or Login
using System;
using System.Text;
using System.IO.Ports;
using System.IO;
using System.Diagnostics;
using System.Threading;

namespace Recibir_archivo_desde_Arduino_consola_06
{
    class Program
    {
        static int cantidadBytes;
        static StringBuilder sb = new StringBuilder();

        static void Main(string[] args)
        {
            string COM = "";
            // Título de la ventana.
            Console.Title = "Recoger foto desde Arduino y crearlo en el disco duro";

            // Tamaño ventana consola.
            Console.WindowWidth = 55; // X. Ancho.
            Console.WindowHeight = 18; // Y. Alto.
           

            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
            SerialPort Puerto_serie = 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();

            Puerto_serie.PortName = "COM" + COM; // Número del puerto serie.


            Puerto_serie.BaudRate = 115200; // Baudios. 115200.
            Puerto_serie.Parity = Parity.None; // Paridad.
            Puerto_serie.DataBits = 8; // Bits de datos.
            Puerto_serie.StopBits = StopBits.One; // Bits de parada.
            Puerto_serie.Handshake = Handshake.None; // Control de flujo.

            // Establecer la lectura / escritura de los tiempos de espera.
            Puerto_serie.ReadTimeout = -1; // 500.
            Puerto_serie.WriteTimeout = -1; // 500.

            try
            {
                Puerto_serie.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 " + Puerto_serie.PortName + @" no existe
                o no lo encuentra.");
                Console.ReadKey(); // Pulse cualquier tecla para salir.
            }

            catch (UnauthorizedAccessException e)
            {
                Console.WriteLine(e);
            }
            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

            Console.WriteLine("Esperando datos desde Arduino... \n");
            Console.ReadKey();
            Puerto_serie.Close(); // Cerrar puerto.
        }

        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                SerialPort sp = (SerialPort)sender;
                string indata = sp.ReadExisting();
                // string[] data = indata.Split('A');
                string[] data = indata.Split(new char[] { 'A' });
                cantidadBytes = int.Parse(data[0]);


                switch (data[1].ToString())
                {
                    case "1":
                        Console.WriteLine("Tamaño: " + cantidadBytes + " Bytes.");
                        Console.WriteLine("Foto: " + data[1] + ". Tipo de archivo: JPG");
                        break;

                    case "2":
                        Console.WriteLine("Tamaño: " + cantidadBytes + " Bytes.");
                        Console.WriteLine("Foto: " + data[1] + ". Tipo de archivo: PNG.");
                        break;

                    default:
                        Console.WriteLine("Cosas raras en 'data': " + data.ToString()); // Por si hal algún error.
                        break;
                }

                int contador = 0;
                byte[] datosArray = new byte[cantidadBytes];

                switch (indata)
                {
                    case "17729A1":
                        Thread.Sleep(100); // Retardo.
                        byte[] miBuffer = Encoding.ASCII.GetBytes("OK1"); // Codificación ASCII.
                        sp.Write(miBuffer, 0, miBuffer.Length); // Envía OK1 al puerto serie.
                        break;

                    case "2065A2":
                        Thread.Sleep(100); // Retardo.
                        byte[] miBuffer2 = Encoding.ASCII.GetBytes("OK2"); // Codificación ASCII.
                        sp.Write(miBuffer2, 0, miBuffer2.Length); // Envía OK2 al puerto serie.
                        break;

                    default:
                        Console.WriteLine("Cosas raras en 'indata': " + indata.ToString()); // Por si hal algún error.
                        break;
                }

                while (true)
                {

                    contador += sp.Read(datosArray, contador, datosArray.Length - contador);

                    Console.SetCursorPosition(10, 6);
                    Console.Write("Datos recibidos:  {0}", contador + " Bytes.");
                    Console.WriteLine("                   ");

                    if ((contador == cantidadBytes) && (contador == 17729))
                    {
                        Mensaje1();
                        File.WriteAllBytes("fotón.jpg", datosArray); // Crear archivo en el disco duro.
                        Mensaje2();
                        Process.Start("fotón.jpg"); // Ejecutar visualizador de imágenes.
                        Mensaje3();
                        break; // Garantiza que el ciclo termine.
                    }

                    if ((contador == cantidadBytes) && (contador == 2065))
                    {
                        Mensaje1();
                        File.WriteAllBytes("fotón.png", datosArray); // Crear archivo en el disco duro.
                        Mensaje2();
                        Process.Start("fotón.png"); // Ejecutar visualizador de imágenes.
                        Mensaje3();
                        break; // Garantiza que el ciclo termine.
                    }
                }

                void Mensaje1()
                {
                    Console.WriteLine();
                    Console.WriteLine("Creando archivo al disco duro...");
                }

                void Mensaje2()
                {
                    Console.WriteLine();
                    Console.WriteLine("Archivo creado. Ejecutando imagen.");
                }

                void Mensaje3()
                {
                    Console.WriteLine();
                    Console.WriteLine("Imagen ejecutada.");
                    Console.WriteLine();
                    Console.WriteLine("Cabecera recibida: " + indata + "\n");
                    Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
                    Console.WriteLine("FIN DE PROGRAMA.");
                    Console.ForegroundColor = ConsoleColor.Gray; // Letras grises otra vez.
                }
            }

            catch (FormatException)
            {
                // System.FormatException: 'La cadena de entrada no tiene el formato correcto.'
            }
        }
    }
}
En estos momentos estoy instalando la librería RxTx de 64 bits para  Windwos 10 de 64 bits que es el que uso actualmente. El código de C#  arriba fucniona de maravilla.

Esto de Java para adaptarme tardaré  una eternidad, al menos se que el Hola mundo es Console.WriteLine("Hola  mundo"); de C# es el equivalente a System.out.println("Hola mundo"); de  Java.

Cualquier ayuda es bienvenida.

5
Programación en general / Foro F#
« en: Marzo 25, 2017, 05:13:06 am »
Hola:

¿Pueden hacer una sección del foro sobre el lenguaje más nuevo llamado F#?

Así la gente se van animando sobre este nuevo lenguaje, de paso amplia el foro más rico en temas de programación y variedad.

Tutoriales para saber de que va y empezar.
You are not allowed to view links. Register or Login

Un cordial saludo.

6
Programación en general / Arduino, Delphi y puerto serie
« en: Marzo 25, 2017, 05:08:53 am »
Hola:

Quiero hacer preguntas sobre Delphi, no lo he tocado desde el 7.

1. Con You are not allowed to view links. Register or Login (Gratis) tiene su propio componente para controlar el puerto serie sin usar librerías de terceros. ¿Delphi 10 lo incluye?

2. ¿Es verdad que existe Dephi versión gratuita tal como dice You are not allowed to view links. Register or Login? (No quiero registrame por gusto para luego descubrir que dura 30 días).

3. Quiero controlar el puerto serie con Arduino, de hecho, tengo You are not allowed to view links. Register or Login que lo pueden hacer en C#, C++ y VB .net, me falta Dephi. ¿Hay buenos ejemplos para Dephi 10?

Saludos.

7
Hola:

Hoy en día el que enseñan en Java y C#. Precisamente es lo que han desbancado el C++ para empezar, no es lo mismo que hace décadas.

El lenguaje para lo que quieres hacer en el You are not allowed to view links. Register or Login.

Saludos.

8
Visual Studio.Net / Re:¿Qué lenguaje .NET usas más?
« en: Marzo 25, 2017, 04:58:33 am »
Hola:

Visual C# es el más que uso y el que recomienda Microsoft de su Visual Studio para usar.

Saludos.

9
C / C++ / Transformar el código de C# a C++
« en: Marzo 25, 2017, 04:30:44 am »
Hola:

Hice un código en C# primero porque lo manejo mejor que en C++. Por curiosidad quiero probar un poco de C++ Win32. El código consiste en enviar por el puerto serie datos a Arduino, él responde. También desde Arduino puede enviar datos a el PC lo recibe. La ventaja de C#, que no necesita librerías de terceros para controlar el puerto serie.

Código C#:
Código: You are not allowed to view links. Register or Login
using System;
using System.Text;
using System.IO.Ports;

namespace Envio_y_recepcion_puerto_serie_cs
{
    class Program
    {
        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "Recibir datos desde Arduino con C#";

            // Tamaño ventana consola.
            Console.WindowWidth = 55; // X. Ancho.
            Console.WindowHeight = 18; // Y. Alto.

            // Cree un nuevo objeto SerialPort con la configuración predeterminada.
            SerialPort Puerto_serie = new SerialPort("COM4");

            Puerto_serie.BaudRate = 115200;
            Puerto_serie.Parity = Parity.None;
            Puerto_serie.StopBits = StopBits.One;
            Puerto_serie.DataBits = 8;
            Puerto_serie.Handshake = Handshake.None;
            Puerto_serie.RtsEnable = true;

            // Establecer los tiempos de espera de lectura / escritura.
            Puerto_serie.ReadTimeout = 500; // Milisegundos.
            Puerto_serie.WriteTimeout = 500;

            // Detecta cualquier dato recibido.
            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

            Puerto_serie.Open(); // Abrir puerto.

            ConsoleKey tecla;
            Console.WriteLine("Pulse tecla 1 para encender y 2 para apagar:");

            do
            {
                tecla = Console.ReadKey(true).Key; // Espera pulsación de teclas.

                switch (tecla)
                {
                    case ConsoleKey.D1: // Tecla 1 del teclado estandar.
                    case ConsoleKey.NumPad1: // Tecla 1 del número del pad.
                        byte[] miBuffer1 = Encoding.ASCII.GetBytes("Luz_ON"); // Codificación ASCII y guarda en la variable array tipo byte.
                        Puerto_serie.Write(miBuffer1, 0, miBuffer1.Length); // Envía los datos del buffer todo su contenido.
                        break;

                    case ConsoleKey.D2:
                    case ConsoleKey.NumPad2:
                        byte[] miBuffer2 = Encoding.ASCII.GetBytes("Luz_OFF");
                        Puerto_serie.Write(miBuffer2, 0, miBuffer2.Length);
                        break;

                    default:
                        Console.WriteLine("Tecla el 1, el 2 y Escape para salir.");
                        break;
                }
            } while (tecla != ConsoleKey.Escape); // Pulsa Escape para salir del menú.

            Console.WriteLine("Presione cualquier tecla para terminar...");
            Console.WriteLine();
            Console.ReadKey(); // Espera pulsar una tecla cualquiera.
            Puerto_serie.Close(); // Cierra el puerto serie.
        }

    // Detecta cualquier dato entrante.
    private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            string entradaDatos = sp.ReadExisting(); // Almacena los datos recibidos en la variable tipo string.
            Console.WriteLine("Dato recibido desde Arduino: " + entradaDatos); // Muestra en pantalla los datos recibidos.
        }
    }
}

En C++ si necesita librería, en este caso lo puedes You are not allowed to view links. Register or Login. He intentado hacerlo en C++ y me funciona a medias, aún hace cosas raras, no se hacerlo y necesito ayuda. Por ahora he hecho esto.

Código C++:
Código: You are not allowed to view links. Register or Login
// Para crear conexión con los puertos COM1 - COM9.
// Serial* Arduino = new Serial("COM7");

// Para crear conexión con los puertos COM10 en adelante.
// Serial* Arduino = new Serial("\\\\.\\COM10");

#include <iostream>
#include <fstream>
#include <Windows.h>
#include "SerialClass.h"
using namespace std;

void main()
{
// Título de la ventana
SetConsoleTitle("Control Led Arduino.");

// Puerto serie.
Serial* Puerto = new Serial("COM4");

// Comandos para Arduino.
char Luz_ON[] = "Luz_ON"; // Envía "Luz_ON" al puerto serie.
char Luz_OFF[] = "Luz_OFF";
char lectura[50] = "\0"; // Guardan datos de entrada del puerto.

int opc; // Guarda un 1 o 2 tipo entero queintroduces desde la consola.

while (Puerto->IsConnected())
{
cout << endl; // Dejamos un retorno.
cout << "Introduzca la opcion deseada: " << endl << endl; // Muestra texto en pantalla.

cin >> opc; // Aquí introduces un número, el 1 o el 2.

switch (opc) // Espera recibir un 1 o un 2.
{
case 1:
// Encener luz.
cout << "Enviando: " << Luz_ON << endl; // Muestra en pantalla textos.
Puerto->WriteData(Luz_ON, sizeof(Luz_ON) - 1); // Envía al puerto el texto "Luz_ON".
break;

case 2:
// Apagar luz.
cout << "Enviando: " << Luz_OFF << endl;
Puerto->WriteData(Luz_OFF, sizeof(Luz_OFF) - 1);
break;

default: // Si haz pulsado otro número distinto del 1 y 2, muestra
cout << "Puse del 1 al 2."; // este mensaje.
}


while (true) {
int n = Puerto->ReadData(lectura, 49);
if (n > 0) {
lectura[n + 1] = '\0';
break;
}
Sleep(1);
}
cout << "Recibido: " << lectura << endl;
cout << "-------------------" << endl;
}
}

¿Alguna ayuda? ;)

Saludos.

10
JAVA / Los import no me funcionan.
« en: Julio 17, 2016, 12:51:04 am »
Buscando el spring-context me llevó hasta aquí.

You are not allowed to view links. Register or Login

Selecciono el 4.3.1 Release.
You are not allowed to view links. Register or Login

Me aparece esto.
Código: You are not allowed to view links. Register or Login
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.3.1.RELEASE</version>
</dependency>

No tengo ni idea sobre esto.

¿Alguna ayuda?

Y suponiendo que esto tenga algo que ver.

Saludos.

11
JAVA / Enviar string al puerto serie desde xhtml y java
« en: Julio 09, 2016, 05:25:24 am »
Hola:

Uso STS-Eclipse, spring de Java y el servidor el JBoss. El proyecto que quiero hacer es enviar y recibir datos string por el puerto serie. Hace tiempo hice un tutorial en pdf sobre Java con NetBeans haciendo una interfaz de escritorio y se puede encender, apagar y recibir datos de los Led.

You are not allowed to view links. Register or Login.

Primer paso, empezar enviar datos por el puerto serie, cuando funcione, ya empezaremos lo de recibir datos.

En este caso, usaré la tecnología indicada arriba, una interfaz hecha con xhtml y usar clases en Java. Por ejemplo. Tengo hecho una interfaz en xhtml sencilla como indica abajo.



Como puedes ver arriba, debe encender un Led del pin 8, tiene dos botones, en este ejemplo he puesto que si pulsas el botón ON, en el texto de abajo aparece Led_8_ON, si pulsas el botón OFF, aparecerá el texto Led_8_OFF.

Dicho texto Led_8_ON y Led_8_OFF, son string que debo enviar por el puerto serie.

test.xhtml

Código: You are not allowed to view links. Register or Login
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Test</title>
<h1>Haciendo pruebas</h1>
</h:head>
<h:body>
<h:form>
<p:panel header="Cuadro de control">
<p:panelGrid columns="1" id="gridname">
<p:outputLabel  value="Led 8: " />
<p:commandButton id="led8on" value="ON" actionListener="#{test.led8ON}" update="resultado" />
<p:commandButton id="led8off" value="OFF" actionListener="#{test.led8OFF}" update="resultado" />
<p:inputText required="false" id="resultado" value="#{test.guardarUltimoValor}" />
</p:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>

He creado una clase Java llamada Test.java.
Código: You are not allowed to view links. Register or Login
package net.meta.practica.business.test;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component
@Scope("view")
public class Test {

// Variables.
final String LED8ON = "Led_8_ON";
final String LED8OFF = "Led_8_OFF";
String guardarUltimoValor = "";

// Métodos.
public void led8ON(){
guardarUltimoValor = LED8ON;
}

public void led8OFF(){
guardarUltimoValor = LED8OFF;
}

// Getters y Setters.
public String getGuardarUltimoValor() {
return guardarUltimoValor;
}

public void setGuardarUltimoValor(String guardarUltimoValor) {
this.guardarUltimoValor = guardarUltimoValor;
}

public String getLED8ON() {
return LED8ON;
}

public String getLED8OFF() {
return LED8OFF;
}
}

Para que entiendan de que va. xhtml hace de interfaz, la clase Test.java ahí está la estructura del programa para este ejemplo sencillo.


You are not allowed to view links. Register or Login.

Hace tiempo que no toco Java, con STS-Eclipse ando perdido, es nuevo para mi.

Siguiendo este ejemplo. ¿Qué hay que hacer?
- Intentar configurar el puerto serie, en este caso puede ser COM4 o el que sea a 115200 de baudios, 2 bit de stop.
- Enviar estos dos string llamada Led_8_ON que lanza el botón ON y el Led_8_OFF que lanza el botón OFF al puerto serie.

Pueden aportar ideas de como hacerlo lo mejor posible y sin complicaciones.

1) Para la clase Test.java, ¿cómo o cuál es la mejor manera de enviar el dato de la variable llamado en este caso LED8ON?

2) ¿Hago todo el código en la misma clase?

Un cordial saludos.

PD: Menudo tostón de post. Espero que se entienda algo hasta donde quiero llegar, nos acompañharemos a llegar... ;)

12
Hardware / Presento manual Teensy++ 2.0
« en: Enero 16, 2011, 07:11:00 am »
Teensy++ 2.0 es una placa del mundo de Arduino para hacer de una manera muy fácil y rápida con muy poca base de electrónica y programación. Cada vez más se usa por su versatilidad.

Este manual te enseñará, instalar las aplicaciones necesarios e compilar algunos códigos de ejemplo y usar reales que te viene incluido en el propio teensyduino.

Teensy++ 2.0 te viene con el microcontrolador AVR de la firma de Atmel AR90USB1286.

You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login

Con el tiempo se ampliará poco a poco con nuevos ejemplos y algo más complejo.

Un cordial saludo.

13
Desarrollo Web / Re: Bases de Datos + SQL + PHP
« en: Diciembre 08, 2010, 11:12:51 pm »
Aquí les dejo mi manual que hice sobre instalar bases de datos y servidor Web casero.

You are not allowed to view links. Register or Login

Saludo.

14
Seguridad a Nivel Web / Re: Que me ataquen a la base de datos
« en: Noviembre 21, 2010, 02:48:29 pm »
Buenas:

Estoy buscando en la chincheta como dices, no lo encuentro.
You are not allowed to view links. Register or Login

Hay pequeños artículos, no funcionan, como se nota que ya han sido corregidos.
You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login

Con el tiempo parece los SQL se protegen.
You are not allowed to view links. Register or Login

Saludo.

15
Seguridad a Nivel Web / Que me ataquen a la base de datos
« en: Noviembre 21, 2010, 10:23:14 am »
Hola:

Supongamos que tengo un servidor Web casero con You are not allowed to view links. Register or Login bajo Windows o Linux. Quiero hacer pruebas de seguridad, hackearme a mi mismo o cualquiera. En él hay un foro cualquiera instalado, sea phpbb o cualquier otro que incluya bases de datos. En este caso se usa MySQL, puede ser FireBird, PostGreSQL, SQL Server Express, Oracle, etc.

En él hay una base de datos que quiero recuperar hackeándolo. Por ejemplo, en mi base de datos tengo una bases de datos llamada "EJEMPLO_DB" y muchas tablas hechas, de las tablas que hay escojo el que quiero supongamos que se llama la tabla "EJEMPLO_TB".

¿Existe una manera para que me entre en esa base de datos y extraer esa información?
Es decir, hackear la base de datos y estraer la información. Luego la puedo descargar y leer su contenido.

¿Esto es posible? Si es así, ¿cuáles son las técnica para practicar sobre seguridad de uno mismo?

Sea como sea, intentaré hackearme a mi mismo y que los demás hagan lo mismo y practiquen, luego si han tenido éxito me avisan. Es sevidor se usará como servidor y nada más, para mostrar una Web y que incluya bases de datos.

Un cordial saludo.

Páginas: [1] 2