¿Qué archivo hay que grabarle al pic? APLICACION_HID.hex de la carpeta "Aplicación USB CCS" o Detección del HOST_CDC.hex del ejercicio_n2??
Otra cosa, le puse de firmware el del ejercicio 2 y si prende con el de conexion en caliente pero con el de USB HID no detecta que el dispositivo esta conectado, alguna idea de por que no manda nada :'(
Una cosa mas, el VID de mi pic es 04d8 y el PID es 000B
lo pase a decimal y me salio VID 1240 y PID 11
cambie de easyHID.cs:
public const UInt32 VENDOR_ID = 6017;
public const UInt32 PRODUCT_ID = 200;
por:
public const UInt32 VENDOR_ID = 1240;
public const UInt32 PRODUCT_ID = 11;
para ver si asi funcionaba, pero aun asi no detecta el dispositivo, mira te dejo mi codigo:
Por Ultimo como puedo mandar las señales al COM1???
Eso es todo
Porfavor ayuda
Otra cosa, le puse de firmware el del ejercicio 2 y si prende con el de conexion en caliente pero con el de USB HID no detecta que el dispositivo esta conectado, alguna idea de por que no manda nada :'(
Una cosa mas, el VID de mi pic es 04d8 y el PID es 000B
lo pase a decimal y me salio VID 1240 y PID 11
cambie de easyHID.cs:
public const UInt32 VENDOR_ID = 6017;
public const UInt32 PRODUCT_ID = 200;
por:
public const UInt32 VENDOR_ID = 1240;
public const UInt32 PRODUCT_ID = 11;
para ver si asi funcionaba, pero aun asi no detecta el dispositivo, mira te dejo mi codigo:
Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Diagnostics; //Mensajes referentes a advertencias, errores, etc.
using System.Windows.Forms;
using System.Runtime.InteropServices; //Clase para poder comunicarnos con el dll.
using MecaniqueUK;
namespace Visual_C_sharp__HID_Demo
{
public partial class USB_HID : Form
{//Variables globales declaradas por el usuario
UInt32 controlador;
UInt32 ADCValue1;
UInt32 ADCValue2;
public USB_HID()
{
InitializeComponent();
}
protected override void WndProc(ref Message message)
{
//Interceptamos los mensajes de windows.
if (message.Msg == EasyHID.WM_HID_EVENT) //Si ha ocurrido algún evento...
{ //Intercepta el mensaje y opera segun el valor recibido...
switch (message.WParam.ToInt32())
{
case EasyHID.NOTIFY_PLUGGED:
//Se ha conectado un dispositivo.
Dispositivo_Conectado((UInt32)message.LParam.ToInt32());
break;
case EasyHID.NOTIFY_UNPLUGGED:
//Se ha desconectado un dispositivo.
Dispositivo_Desconectado((UInt32)message.LParam.ToInt32());
break;
case EasyHID.NOTIFY_READ:
//Hay datos en el buffer de entrada.
Lee_Dispositivo((UInt32)message.LParam.ToInt32());
break;
}
}
base.WndProc(ref message);
}
private void Dispositivo_Conectado(UInt32 handle)
{
if (EasyHID.GetVendorID(handle) == EasyHID.VENDOR_ID && EasyHID.GetProductID(handle) == EasyHID.PRODUCT_ID)
{
//Si el handler ha encontrado un dispositivo conectado que coincida con el VID/PID
//Declarado en el programa...
EasyHID.SetReadNotify(handle, true); //Activa el sistema de notificacion para saber
//cuando se reciben datos desde el dispositivo.
controlador = handle; //Asignamos a controlador el handle de salida.
}
}
private void Dispositivo_Desconectado(UInt32 handle)
{
if (EasyHID.GetVendorID(handle) == EasyHID.VENDOR_ID && EasyHID.GetProductID(handle) == EasyHID.PRODUCT_ID)
{
deshabilita_controles();
MENSAJES_USB.Items.Add("Dispositivo USB Desconectado.");
CONECTAR_DISPOSITIVO.BackColor = Color.Red;
CONECTAR_DISPOSITIVO.ForeColor = Color.White;
CONECTAR_DISPOSITIVO.Text = "CONECTAR DISPOSITIVO";
EasyHID.Disconnect();
}
}
private void Lee_Dispositivo(UInt32 In_handle)
{
byte[] BufferINP = new byte[EasyHID.BUFFER_IN_SIZE]; //Declaramos el buffer de entrada.
if ((EasyHID.Read(In_handle, out BufferINP)) == true) //Si hay datos los procesamos.
{ //Segun se haya presionado un pulsador, indicara el evento de forma grafica y textual.
if (BufferINP[1] == 0x01)
{
IN_DIGITAL_1.BackColor = Color.GreenYellow;
MENSAJES_USB.Items.Add("Boton 1 Presionado.");
}
else { IN_DIGITAL_1.BackColor = Color.SeaGreen; }
if (BufferINP[2] == 0x01)
{
IN_DIGITAL_2.BackColor = Color.GreenYellow;
MENSAJES_USB.Items.Add("Boton 2 Presionado.");
}
else { IN_DIGITAL_2.BackColor = Color.SeaGreen; }
if (BufferINP[3] == 0x01)
{
IN_DIGITAL_3.BackColor = Color.GreenYellow;
MENSAJES_USB.Items.Add("Boton 3 Presionado.");
}
else { IN_DIGITAL_3.BackColor = Color.SeaGreen; }
if (BufferINP[4] == 0x01)
{
IN_DIGITAL_4.BackColor = Color.GreenYellow;
MENSAJES_USB.Items.Add("Boton 4 Presionado.");
}
else { IN_DIGITAL_4.BackColor = Color.SeaGreen; }
}
ADCValue1 = (uint)(BufferINP[5] << 8 + BufferINP[6]);
ADCValue2 = (uint)(BufferINP[7] << 8 + BufferINP[8]);
ADC1_VALUE.Value = (int)ADCValue1;
ADC2_VALUE.Value = (int)ADCValue2;
}
private void CONECTAR_DISPOSITIVO_Click(object sender, EventArgs e)
{
habilita_controles();
try
{
EasyHID.Connect(Handle); //conectamos la aplicacion al controlador
if (EasyHID.IsAvailable(EasyHID.VENDOR_ID, EasyHID.PRODUCT_ID) == true)
{ //Si el dispositivo está conectado
MENSAJES_USB.Items.Add("Dispositivo conectado.");
CONECTAR_DISPOSITIVO.Text = "DISPOSITIVO CONECTADO";
CONECTAR_DISPOSITIVO.BackColor = Color.GreenYellow;
CONECTAR_DISPOSITIVO.ForeColor = Color.Black;
}
else
{
MENSAJES_USB.Items.Add("Dispositivo no encontrado, controlador conectado.");
CONECTAR_DISPOSITIVO.Text = "CONTROLADOR CONECTADO";
CONECTAR_DISPOSITIVO.BackColor = Color.Blue;
CONECTAR_DISPOSITIVO.ForeColor = Color.White;
}
}//En caso de no poder enlazar al controlador
catch { MENSAJES_USB.Items.Add("Imposible conectar al controlador."); }
}
private void OUT_DIGITAL_1_Click(object sender, EventArgs e)
{
byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE];
BufferOUT[0] = 0; //Report ID
BufferOUT[1] = 0x0A; //Primero enviamos un comando de control al dispositivo.
//0x0A Conando de Salidas.
BufferOUT[2] = 0x10; //Luego enviamos los datos de control de los LEDs.
EasyHID.Write(controlador, BufferOUT); //Envia los datos.
MENSAJES_USB.Items.Add("Cambia estado: Salida 1.");
}
private void OUT_DIGITAL_2_Click(object sender, EventArgs e)
{
byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE];
BufferOUT[0] = 0; //Report ID
BufferOUT[1] = 0x0A; //Primero enviamos un comando de control al dispositivo.
//0x0A Conando de Salidas.
BufferOUT[2] = 0x20; //Luego enviamos los datos de control de los LEDs.
EasyHID.Write(controlador, BufferOUT); //Envia los datos.
MENSAJES_USB.Items.Add("Cambia estado: Salida 2.");
}
private void OUT_DIGITAL_3_Click(object sender, EventArgs e)
{
byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE];
BufferOUT[0] = 0; //Report ID
BufferOUT[1] = 0x0A; //Primero enviamos un comando de control al dispositivo.
//0x0A Comando de Salidas.
BufferOUT[2] = 0x30; //Luego enviamos los datos de control de los LEDs.
EasyHID.Write(controlador, BufferOUT); //Envia los datos.
MENSAJES_USB.Items.Add("Cambia estado: Salida 3.");
}
private void OUT_DIGITAL_4_Click(object sender, EventArgs e)
{
byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE];
BufferOUT[0] = 0; //Report ID
BufferOUT[1] = 0x0A; //Primero enviamos un comando de control al dispositivo.
//0x0A Comando de Salidas.
BufferOUT[2] = 0x40; //Luego enviamos los datos de control de los LEDs.
EasyHID.Write(controlador, BufferOUT); //Envia los datos.
MENSAJES_USB.Items.Add("Cambia estado: Salida 4.");
}
private void PWM_CONTROL_1_ValueChanged(object sender, EventArgs e)
{
byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE];
BufferOUT[0] = 0; //Report ID
BufferOUT[1] = 0x0B; //Primero enviamos un comando de control al dispositivo.
//0x0B Comando de Salidas.
BufferOUT[3] = Convert.ToByte(PWM_CONTROL_1.Value);
EasyHID.Write(controlador, BufferOUT);
}
private void PWM_CONTROL_2_ValueChanged(object sender, EventArgs e)
{
byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE];
BufferOUT[0] = 0; //Report ID
BufferOUT[1] = 0x0C; //Primero enviamos un comando de control al dispositivo.
//0x0C Comando de Salidas.
BufferOUT[4] = Convert.ToByte(PWM_CONTROL_2.Value);
EasyHID.Write(controlador, BufferOUT);
}
private void USB_HID_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
deshabilita_controles();
}
private void USB_HID_FormClosed(object sender, FormClosedEventArgs e)
{
EasyHID.Disconnect();
}
private void habilita_controles()
{
OUT_DIGITAL_1.Enabled = true;
OUT_DIGITAL_2.Enabled = true;
OUT_DIGITAL_3.Enabled = true;
OUT_DIGITAL_4.Enabled = true;
PWM_CONTROL_1.Enabled = true;
PWM_CONTROL_2.Enabled = true;
IN_DIGITAL_1.Enabled = true;
IN_DIGITAL_2.Enabled = true;
IN_DIGITAL_3.Enabled = true;
IN_DIGITAL_4.Enabled = true;
ADC1_VALUE.Enabled = true;
ADC2_VALUE.Enabled = true;
MENSAJES_USB.Enabled = true;
}
private void deshabilita_controles()
{
OUT_DIGITAL_1.Enabled = false;
OUT_DIGITAL_2.Enabled = false;
OUT_DIGITAL_3.Enabled = false;
OUT_DIGITAL_4.Enabled = false;
PWM_CONTROL_1.Enabled = false;
PWM_CONTROL_2.Enabled = false;
IN_DIGITAL_1.BackColor = Color.Gray;
IN_DIGITAL_1.Enabled = false;
IN_DIGITAL_2.BackColor = Color.Gray;
IN_DIGITAL_2.Enabled = false;
IN_DIGITAL_3.BackColor = Color.Gray;
IN_DIGITAL_3.Enabled = false;
IN_DIGITAL_4.BackColor = Color.Gray;
IN_DIGITAL_4.Enabled = false;
ADC1_VALUE.Value = 0;
ADC1_VALUE.Enabled = false;
ADC2_VALUE.Value = 0;
ADC2_VALUE.Enabled = false;
MENSAJES_USB.Enabled = false;
}
private void salirToolStripMenuItem_Click(object sender, EventArgs e)
{
EasyHID.Disconnect();
this.Close();
}
private void acercaDeHIDToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("USB HID en Visual C#\n\n Version Beta\n\n" +
"Basado en el tuto de Moyano Jonathan\n" +
"Creador del programa Erick Santiago Gómez (Wampiro)\n" +
"Equipo con Atl Odin Vanegas Santoyo (Arbol)\n" +
"Diseño PCB Angel Martinez Zabala (Fraile, Abelardo)\n" +
"Carrera Técnico en mecatrónica Grupo 201\n" +
"CBT No.1 \"Dr. Donato Alarcón Segovia\"", "Acerca del Programa:",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void webDelProyectoToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("No hay web por ahora ¬¬ no se vaya a enojar el profe :P", "Web del Proyecto:",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void manualDeUsuarioToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
Process.Start("Control de dispositivos USB.pdf");
}
catch (Win32Exception)
{
MessageBox.Show("No se encuentra el archivo \"Control de dispositivos USB.pdf\". \n" +
"asegurate que el nombre es correcto y/o se \n" +
"encuentra en la misma ubicación que la aplicación.\n", "Aviso:",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
statusStrip1.Items[0].Text = DateTime.Now.ToLongTimeString();
}
private void toolTip1_Popup(object sender, PopupEventArgs e)
{
MENSAJE_TOOL.SetToolTip(this.CONTENEDOR_ANALOGICAS,
"Barras de progreso que muestran el valor medido en el CAD.");
MENSAJE_TOOL.SetToolTip(this.CONTENEDOR_PWM,
"Control en el cual variamos el ciclo de trabajo de los PWM.");
MENSAJE_TOOL.SetToolTip(this.CONTENEDOR_SALIDAS,
"Control en el cual cambiamos el estado logico de los LEDs de salida.");
MENSAJE_TOOL.SetToolTip(this.CONTENEDOR_IN_DIGITALES,
"Control que muestra el estado de los diferentes pulsadores.");
MENSAJE_TOOL.SetToolTip(this.CONECTAR_DISPOSITIVO,
"Boton que nos permite enlazar el dispositivo al controlador.");
MENSAJE_TOOL.SetToolTip(this.MENSAJES_USB,
"En está ventana van apareciendo los diferentes sucesos ocurridos en la aplicación.");
}
}
}
Por Ultimo como puedo mandar las señales al COM1???
Eso es todo
Porfavor ayuda
Última edición: