Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JPICUSB
1.0 http://divideandconquer.com.ar/dyq/2009/01/jpicusbcomunicacion-pic-usb-usando-java/
NetBeans IDE
6.5 http://www.netbeans.org/downloads/start.html?
platform=windows&lang=en&option=javase&version=6.5
A tener en cuenta:
-Todo archivo Java debe contener una clase cuyo nombre sea
identico al nombre del archivo
vicio.
conectado:
(http://i43.tinypic.com/mhqefa.jpg)
o 13_2_ Si presionamos el boton luego de conectar el
usb:
(http://i44.tinypic.com/ws3hb5.jpg)
Bueno. Eso es todo.
Este es el primer tutorial extenso que escribo, asi que espero que se
entienda y alguien se anime a seguirlo jeje.
Si tienen alguna duda las preguntas son bienvenidas.
Si les intereso el tema de programar en Java con las JFC Swing, en
internet hay mucha pero mucha informacion al respecto.
Y les recomiendo que intenten porque es realmente facil.
Si tienen conocimientos previos sobre programacion orientada a objetos,
les sera mas facil todavia.
Saludos! Y bienvenidos al mundo Java =D
dado tiempo a leer que tiene una especie de paquete que lo llama
javabook en el cual tiene una coleccion de clases utilizada en los
ejemplos del libro.
He intentado incluir ese paquete en mi proyecto y no lo hago bien. A
continuacion te muestro mi codigo haber si hay algo mal.
Cdigo:
import javabook.*;
class MiPrimeraAplicacion
{
public static void main(String[] args)
{
VentanaPrincipal ventanaPrincipal
ventanaPrincipal=new VentanaPrincipal();
VentanaPrincipal.show();
}
}
Supongo que ser algo de paths en el directorio del proyecto, add class
o algo no?
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Enero 31, 2009, 01:54:29
Cita de: Waldillo en Enero 31, 2009, 09:46:55
He intentado incluir ese paquete en mi proyecto y no lo hago bien. A continuacion te
muestro mi codigo haber si hay algo mal.
Cdigo:
import javabook.*;
class MiPrimeraAplicacion
{
public static void main(String[] args)
{
VentanaPrincipal ventanaPrincipal
ventanaPrincipal=new VentanaPrincipal();
VentanaPrincipal.show();
}
}
Supongo que ser algo de paths en el directorio del proyecto, add class o algo no?
Jeje espero se haya entendido y puedas empezar con los ejemplos del
libro por fin jajaja
cualquier duda, pregunta que no molesta!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: Waldillo en Febrero 01, 2009, 06:08:21
Gero simplemente gracias. ;D Eres muy grande
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Febrero 01, 2009, 02:07:32
me alegro que te funcione =)
Saludos!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
a:2318)
at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonMode
l.java:387)
at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:24
2)
at
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonLi
stener.java:236)
at
java.awt.Component.processMouseEvent(Component.java:6134)
at
javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5899)
at java.awt.Container.processEvent(Container.java:2023)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Container.dispatchEventImpl(Container.java:2081)
at java.awt.Component.dispatchEvent(Component.java:4331)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301
)
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965
)
at
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
at java.awt.Container.dispatchEventImpl(Container.java:2067)
at java.awt.Window.dispatchEventImpl(Window.java:2458)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchT
hread.java:269)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThrea
d.java:184)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchT
hread.java:174)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:1
69)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:1
61)
at
java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
no se que mas hacerle y ademas como es viernes la cabeza no me da
para mucho ms.
Muchas gracias por la ayuda.
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Febrero 13, 2009, 09:32:18
Hola carmen.
Podrias poner el codigo de tu aplicacion?
Asi puedo ayudarte mejor a solucionar el problema.
Por lo visto, la libreria sigue sin poder ser cargada por java.
En la nueva version, cuando ejecuutes el metodo iload(), debes capturar
la excepcion, de esa forma sabras si se cargo o no la libreria.
algo asi:
Cdigo:
try{
iface.iload();
}catch(Exception e){
System.out.println(e.getMessage()); //Hubo una excepcion al cargar
dll. La libreria no funcionara
}
Pero bueno, gracias por hacerme abrir los ojos sobre los drivers de
microchip.
En unas semanas me pongo a trabajar en la migracion del proyecto a la
libreria libusb, que es portable entre varios OS.
http://libusb.wiki.sourceforge.net/ (http://libusb.wiki.sourceforge.net/)
PD: Espero que no estes probando con una edicion de 64 bits de vista,
pues la libreria esta compilada en un entorno 32bits
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: carmen en Febrero 16, 2009, 01:12:15
Muchas gracias, por todo.
Pero justamente lo estamos probando con todo lo que indicas que no
funciona. Si conseguimos solucionarlo por algun medio te lo indico.
// defined as jpicusb.dll
iface.load();
} catch (Exception ex) {
Logger.getLogger(mainProgram.class.getName()).log(Level.SEVERE, null,
ex);
try {
System.load((new File(".")).getCanonicalPath() +
System.getProperty("file.separator") + System.mapLibraryName("jpicusb"));
} catch (IOException e) {
Logger.getLogger(mainProgram.class.getName()).log(Level.SEVERE, null, e);
}
}
iface.set_instance(0);
//Creamos un arreglo de bytes de tamao 64
byte[] out = new byte[64];
out[0] = 99;
//do {
try {
send_command(cmd_FW); // ENVIA DATOS AL PIC PARA QUE
LE ESCRIBA LA VERISON DEL FIRMWARE
//iface.WriteRead(byte[] salida, int writeout, int readin, long
timeoutmsec)
//Parametro 1: arreglo de bytes con los datos a enviar (out)
//Parametro 2: cantidad de bytes del arreglo que se enviaran
via usb (1)
//Parametro 3: cantidad de bytes que se esperan de respuesta
via usb (6)
//Parametro 4: tiempo maximo que se esperara al dispositivo en
el envio y la recepcion (1 segundo)
//Retorna: arreglo de bytes con la respuesta del dispositivo usb
byte[] respuesta = iface.QWriteRead(out, 1, 6, 1000);
//convertimos el arreglo de bytes recibido en una cadena con
codificacion utf-8
String data_in = new String(respuesta, "utf-8");
//verificamos que se hallan recibido datos
if (data_in.length() == 0) {
texto.setText(texto.getText() + "No se recibieron datos\n");
} else {
texto.setText(texto.getText() + "Datos recibidos:" + data_in
+ "\n");
}
} catch (Exception ex) {
System.out.println("ERROR:" + ex.getMessage());
}
//} while(true);
}
public void send_command(byte command) {
byte[] out = {command};
// DECLARACION DE VECTOR TIPO
BYTE
iface.QWrite(out, 1, 1000); // METODO QUE REALIZA UN
ESCRITURA RAPIDA EN EL PUERTO USB DE UN BYTE,
}
/////////////////////////////////////////////////////////////////////////////////
///////////////
Como veras, incluimos el codigo correspondiente al que estaba el boton,
en el constructor principal dentro de la clase principal.
Asi como lo ves, el formulario se ejecuta y se muestra, pero solo lo hace
una sola vez (envia datos y lee el puerto USB), ............para que
estubiera continuamente ejecutandose, incorporamos este codigo dentro
de un do-while, sin embargo cuando este se ejecuta el JFrame no
aparece para nada.
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Abril 16, 2009, 06:28:20
Hola umov,
lo que esta pasando es que por culpa del ciclo do while, el proceso de tu
aplicacion nunca sale del contructor ??? jeje
lo que podes hacer es esto:
Crear una inner class que extienda la clase TimerTask, en tu clase
AccionesAula.
Luego, en el constructor de AccionesAula, instanciar un timer que
ejecute tu TimerTask :laugh:
algo asi:
Cdigo:
package javaformulario;
import jPicUsb.*;
import java.util.Timer;
import java.util.TimerTask;
public class AccionesAula extends javax.swing.JFrame {
public byte cmd_FW = 99;
public byte cmd_LED = 88;
Timer t;
miTickTask tarea;
iface.set_instance(0);
tarea = new miTickTask();
t = new Timer();
t.schedule(tarea, 0, 1000); //Comenzar la ejecucion YA y repetir
cada 1000 milisegundos
}
public void send_command(byte command) {
byte[] out = {command};
// DECLARACION DE VECTOR TIPO BYTE
iface.QWrite(out, 1, 1000); // METODO QUE REALIZA UN ESCRITURA
RAPIDA EN EL PUERTO USB DE UN BYTE,
// DE LOS VALORES DE OUT, SOLO EL BYTE 1 SE ESCRIBIRA DURANTE 1 SEG
(1000 MILISEGUNDOS)
}
ESCRITURA RAPIDA
// EN EL PUERTO USB DE DOS BYTE, DE LOS
// VALORES DE OUT, SOLO EL BYTE 2 SE
ESCRIBIRA
// DURANTE 1 SEG (1000 MILISEGUNDOS)
}
private void encender_led() {
byte LED = 0x00;
if (jCheckBox1.isSelected()) {
LED |= 0x01;
}
send_command(cmd_LED, LED); // ENVIA DATOS AL PIC PARA
QUE ENCIENDA LOS LEDS
}
private void SalirActionPerformed(java.awt.event.ActionEvent evt) {
dispose();
}
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent
evt) {
encender_led();
}
private void texto1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new AccionesAula().setVisible(true);
}
});
}
/////////////////////////////////////////////////////////////////////////////////
//////////
puedo utilizar para una aplicacion que consiste en enviar datos del micro
al puerto usb y de alli a la aplicacion o para ke me sirve ese archivo la
verdad estoy un poco confundido o si io tengo ke crear uno aparte para
mi proyecto.
y no se, si no te molesta que te agregue a mi correo.
Saludos y gracias de antemano. :bang:
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: Waldo en Abril 21, 2009, 03:00:05
A y otra cosa se me paso^^ ke es lo ke esta en la carpeta Codigo C Pic
para que sirven los archivos de esa carpeta. ;)
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Abril 21, 2009, 02:08:15
Hola umov.
Me alegro que hallan encontrado la solucion en los Timers =D siempre
son una buena opcion para tareas de polling
Sobre el problema que tuvieron, no tengo la mas palida idea de porque
no anda recibe los datos el pic :S, si averiguo algo no dudes q te
comento al toque.
Saludos!
Waldo: para usar el driver de microchip, necesitas si o si un chip que sea
microchip, y que ademas implemente en su hardware el sub mismo. Es
decir que cualquier chip usb de microchip te va bien. Por ej el que yo
uso es el 18F4550.
La dll de mi proyecto es para poder usar las apis del driver de microchip
en una aplicacion java, pues java tiene graves problemas para cargar
librerias dinamicas. Esta dll te permite comunicarte en las 2 direcciones,
pc a chip y chip a pc.
Empezar con usb de prepo me parece muy exagerado. Te recomiendo
que realizes proyectos simples antes de adentrarte en usb. Por ejemplo,
te recomiendo que aprendas bien el lenguaje C utilizado en CCS (ide y
compilador usados en el proyecto de la carpeta Codigo C Pic).
Podiras realizar proyectos con comunicacion serie antes de usb.
Y desde luego, cuando ya te sientas confiado con CCS y PICs, deberias
aprender leguaje Java para estar mas cerca de realizar el enlace usb con
el Pic.
Y por supuesto, si navegas el foro, veras que puedes sacarte varias
dudas sobre Pics y CCS, pues hay varios manuales dando vueltas.
1 Saludo!
Hola Waldo!
Si ya sabes Java, es un gran paso, y tenes la mitad del camino allanado.
Sobre la interface jpicusb, la documentacion de cada metodo esta en
divideandconquer.com.ar. Dentro del Rar de la libreria.
Alli explica la funcion de cada metodo de la libreria.
Si no conoces la Base del funcionamiento de ennumeracion de un
dispositivo usb en la pc, te va a costar entender la funcion de cada
metodo de la libreria. Yo no tengo el conocimiento como para desarrollar
una explicacion, por lo que te recomiendo que, antes de largarte en la
programacion java, o pic, leas sobre USB y sigas los pasos basicos para
el desarrollo de una comunicacion punto a punto.
Por ej: Establecer una estructura de datos para la comunicacion entre tu
profesor (codigo C del pic) y vos (Java + interfaz mcirochip), que
comandos existiran, la frecuencia con la que se haran transferencias,
etc.
Te recomiendo que investigues sobre usb y los terminos mas usados en
su entorno , por ej vid, pid, clases de dispositivos, etc. Tambien sobre la
libreria USB de microchip. Y luego de todo esto, la documentacion de
JpicUSB.
1 Saludo!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Abril 22, 2009, 11:40:28
Cita de: joana en Abril 22, 2009, 03:10:38
Hola Geronimo.....En verdad agradesco que compartas nos compartas tus
conocimientos respecto a este tema, es la primera vez que trabajo con un pic
conectado a una pc a traves de un puerto....podrias subir el diagrama del circuito q
utilizaste en tu proyecto,,,porfavor solo para ver su estructura...
De antemano gracias...Saludos ;)
Hola joana,
aguantame un tiempito y publico un esquema.
agrego una imagen del esquema de la simulacion, ojo que porque
funcione en el simulador no significa que valla a funcionar en la vida
real. Faltan resistencias en los leds, y esas cosas que en una simulacion
digital pueden obviarse.
En un rato publico en divideandconquer.com.ar el archivo de la
debes escribir:
Cdigo:
try{
iface.load();
}catch(Exception e){
System.out.println("Error al cargar jpicusb.dll.");
System.out.println(e.getMessage());
return;
}
Hola ccencho, adelante con lo que sea que estes haciendo jeje ;)
Ahora si respondeme una cosa... Que version de proteus disponias
:shocked: yo tengo la 7.4SP3, crei que no habia ninguna mas nueva
disponible al "publico".
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: ccencho en Mayo 02, 2009, 01:58:47
Hola amigo si hay una version disponible es la 7.5 sp3....pero funciona
bien el usb q trae con los demos, pero cuando pruebo con el demo de
leds de java...y le doy play no me pide driver, por mas q instale el usb
dirver....ese es el detalle...por eso lo desistale...y use el 7.4
sp3...bueno...amigo pq lo pruebes y veas aca te paso el links , bueno
dejame decirte q tengo blogs como una web con mis amigos es
www.icabots.com asi como un foro www.icabots.com/foro , dedicado a
la electronica y robotica, es nuevo el foro y la web asiq estamos en
mejoras, bueno si veras el enlace es de ahi.
Bueno amigo haber si lo pruebas y me dices si te funciona en esta
version.....de proteus....
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Mayo 02, 2009, 03:00:10
Hola ccencho,
lo estoy bajando asi cuando encuentre un tiemppito libre, lo pruebo para
ver si puedo hacer andar el ejemplo de jpicusb.
De paso me doy un paseo por su web que esta interesante.
PD: Espero no te moleste, edite tu thread para eliminar el enlace a
proteus, ya que viola las reglas :azn:
Saludos!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: ccencho en Mayo 04, 2009, 03:25:05
Bueno amigo la verdad q no lei las reglas almenos esa..pero no hay
problema , bueno espero te des tu time..como asi tuve q parar mis
avances de el proyecto q estab haciendo por motivos de casa..pero ya
en unos dias retomo... ;)
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: umov en Mayo 05, 2009, 02:24:04
Hermano Gero,
creo que ahora te encuentras un poco mas ilustrado de nuestro proyecto
, sin embargo en esta ocasion aparece otro inconveniente, es
relacionado a la orden que se envia desde la casilla de verificacion
( checkbox ) para encender un led atravez del micro, ya que cada vez
que intentamos encender este led en un principio no lo hacia, luego lo
hacia pero cuando le dabamos lentamente la orden, no sabemos por que
se comporta asi.
En nuestro caso, estamos ademas utilizando el conversor
analogo/digital, un led de estado ( que esta implementado utilizando
una interrupcion por timer 0, este led nos indica el estado de
funcionamiento del PIC para que nos indique si en algun momento se
nos bloquea o no )
#include <18F4550.h>
#DEVICE ADC=16
#fuses
HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VR
EGEN // Configuracion del #use delay(clock=48000000)
// Configuracion del relog a utilizar
/////////////////////////////////////////////////////////////////////////////////
//////////////////
#define INTS_PER_SECOND 183
//
(4000000/(4*256*256))
#define USB_HID_DEVICE FALSE
// deshabilitamos el uso de
las directivas HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK // turn on
EP1(EndPoint1) for IN bulk/interrupt transfers (activacion de traferencia
masiva en USB configurando el EndPoint 1 de transmision)
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK // turn on
EP1(EndPoint1) for OUT bulk/interrupt transfers (activacion de
traferencia masiva en USB configurando el EndPoint 1 de recepcion)
#define USB_EP1_TX_SIZE 32
// size to allocate for the tx
endpoint 1 buffer (tamao del buffer de transferencia en la transmision
entre 1 y 32 bytes para USB 2.0)
#define USB_EP1_RX_SIZE 32
// size to allocate for the rx
endpoint 1 buffer (tamao del buffer de transferencia en la recepcion
entre 1 y 32 bytes para USB 2.0)
/////////////////////////////////////////////////////////////////////////////////
//////////////////
// Include the CCS USB Libraries. See the comments at the top of these
// files for more information
////////////////////////////////////////////////////////////////////////////////
#include <pic18_usb.h> // Microchip PIC18Fxx5x Hardware layer for
CCS's PIC USB driver
#include <header.h>
// Configuracin del USB y los descriptores para
este dispositivo
#include <usb.c>
// Handles usb setup tokens and get descriptor
reports
#include <stdio.h>
//
///////////////////////////////////////////////////////////////////////////////
//#define Enciende Output_High
//#define Apaga Output_Low
//#define Conmuta Output_Toggle
#define RecCommand recbuf[0] //
#define LedParam recbuf[1]
#define COMMAND_TEMPERATURA 99
#define COMMAND_LEDS 88
#byte PORT_E = 0
#define LedState PORT_E,2
////////////////////////////////////////////////////////////////////////////////
// RAM, RAM, RAM
////////////////////////////////////////////////////////////////////////////////
const int8 Lenbuf = 32;
//Longitud del Buffer de lectura en el
puerto USB.
int16 conversion;//,min=0,max=1023; //Se declaran Variable enteras a
16Bits.
float temp;
//Decalracion de una variable flotante.
char ctemp[5];
int8 recbuf[Lenbuf];
//int8 sndbuf[Lenbuf];
BYTE int_count;
// Nmero de interrupciones que faltan
antes que haya transcurrido un segundo
////////////////////////////////////////////////////////////////////////////////
// M A I N
////////////////////////////////////////////////////////////////////////////////
#int_rtcc
void Led_State()
//Interrupcin utilizada para el manejo del
bit de estado.
{
if(--int_count==0)
{ output_bit(Pin_E2,!bit_test(LedState)); //Llega aqu cada segundo.
int_count=INTS_PER_SECOND;
}
}
/**
#int_ext
//Interrupcion a aplicar cuando se active
el sensor de movimiento
void sensor_movimiento_isr(){
output_d(0xf0);
delay_ms(1000);
output_d(0x0F);
}
#int_ext1
//Interrupcion a aplicar cuando se active
el sensor de humo
void sensor_humo_isr(){
output_d(LedParam);
delay_ms(1000);
output_d(LedParam);
}
*/
//********************************************************
**********************
ConvenVoltio()
{
temp=((0.0078125*conversion)-0.5); //Calculo de la temperatura
sprintf(ctemp, "%f", temp);
//Convierte un numero de tipo coma
flotante a tipo cadena
return ctemp;
}
//********************************************************
**********************
void main(void){
delay_ms(500);
//Retardo de 0.5 seg
usb_init();
//Inicializa el Modulo de
Comunicacion USB
usb_task();
//
usb_wait_for_enumeration();
//Se situa en un bucle
infinito mientras la comunicacion USB es enumerada
setup_adc_ports(All_ANALOG);
//Configuracion del puerto como
entrada Analoga
setup_adc(ADC_CLOCK_DIV_4);
//
set_adc_channel(0);
//Seleccion del canal de conversion en
este caso el cero
int_count=INTS_PER_SECOND;
set_timer0(0);
setup_counters(RTCC_INTERNAL, RTCC_DIV_256 | RTCC_8_BIT);
enable_interrupts(int_rtcc);
//enable_interrupts(int_ext);
//enable_interrupts(int_ext1);
enable_interrupts(global);
interrupciones
//
//
//
//Inabilita las demas
while(true)
{
if(usb_enumerated()){
//El sistema operativo
de la PC nos ha reconocidos como conectados y ha enumerado la
Comunicacion USB?
if (usb_kbhit(1)){
//Verifica si se han recibido
datos provenientes del PC
usb_get_packet(1, recbuf, Lenbuf);
//Toma los dos bytes
que llegan y los guarda en recbuf,
//y luego son guardos en
RecCommand y LedParam respectivamente
if(RecCommand==COMMAND_TEMPERATURA){
//Verifica si el byte 0 (RecCommad) que llega es igual a
COMMAND_FIRMWARE
usb_put_packet(1,ctemp,4,USB_DTS_TOGGLE); //Escribe en
el Puerto USB el valor de la temperatura
//printf("Data leida de USB: %u",recbuf); //Supuestamente
Hola
Emmm.....estamos intentando hacer el circuito en forma fsica, con el
Pic y todo (somos principiantes u)
Con el programa en Netbeans, sin problemas, hicimos el circuito en una
proto, pero solo enciende el led, mas el programa no reconoce que tiene
algo conectado, lgicamente el led prende porque recibe corriente de la
compu, necesitamos programar el pic? , en el pic utilizamos el 18f2550
ya que por aki no haba otro, buscamos la configuracin de este y la
conectamos de manera similar, el programa solo funciona para el 4550??
Gracias, saludos!!!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Mayo 24, 2009, 01:08:08
Hola Ankoku,
El programa es el mismo para el 18F2550, salvo que tenes que cambiar
la linea #include <18F4550.h> por #include <18F2550.h> y
recompilar.
Tambien debes tener en cuenta que los 8 leds deben conectarse en el
puerto B del micro, pues alli se envian las seales provenientes de la
pc, output_b(LedParam);, y tambien debes instalar los drivers cuando
te los pida.
El esquema que publique, no utiliza la alimentacion del puerto usb, sino
una alimentacion externa regulada de 5V, por eso el pin 1 del conector
usb, queda al aire.
Que led enciende? En que pin esta conectado? Ya que no deberia
encender ninguno si es que no hay comunicacion con la PC.
Saludos!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: claumack en Mayo 24, 2009, 06:39:18
hola.
como lo dijo onkoku...estamos siguiendo tu tutorial pero no hemos
obtenido resultado.
el led k enciende esta conectado al pin RB1 y solo utilizamos ese led dos
resistencias de 100k y un capacitor de 47 y el pic 18f2550
y claro el usb conectado a D+ y D-.
pero la pc no nos logra reconocer el circuito...
nuestra pregunta es k si el pic esta programado y en k? o como
podemos programarlo.
:'(
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Mayo 24, 2009, 08:39:30
Hola claumack,
el pic debe tener cargado el programa para funcionar :rolleyes2:, es
decir que debe estar programado.
Hay varios programadores para cargarles el programa, tenes versiones
comerciales, versiones libres, y cada una con distintas interfaces que
van desde serie, paralelo hasta usb.
Yo uso una version comercial de un programador llamado GTP-USB.
Pero puedes armarte versiones libres como JDM, TE20 y otros.
Si buscas en el foro, vas a encontrar un par, y por la red mas.
Saludos!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: claumack en Mayo 24, 2009, 11:17:37
muchas gracias!
pues si tenemos ya varios programas
el problema va ser cargarlos... tenemos en winpic en c en picbasic
bueno.. varios..
despues de todos los intentos...
lo estamos haciendo simulado y parece k ya mas o menos..
el problema sera fisicamente para poder cargarle el programa al pic
ya k no contamos por ahora con el.
por cierto el codigo k dices k usas no lo subiste por aca? tal vez nos
pueda ser util...
iremos posteando nuestros progresos... ya k nos tiene k funcionar pk
nos tiene k funcionar! XD
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: Ankoku en Mayo 25, 2009, 03:37:28
Hi ^^
Perdona tanta lata, pues ya nos salio :bang: , ya detecta el puerto y
todo, muchas gracias por el tuto, muyyy bueno, pero ahora tenemos
otro problema :'(, la librera no la acepta para aplicaciones mviles u_u
en el mismo Netbeans, porque queremos implementarlo en un celular,
se puede modificar la librera para aplicaciones mviles? o no conoces de
hread.java:269)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThrea
d.java:184)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchT
hread.java:174)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:1
69)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:1
61)
at
java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
try{
iface.load();
}catch(Exception e){
System.out.println("Error al cargar jpicusb.dll.");
System.out.println(e.getMessage());
return;
}
Gracias por avisar, ya edite un poco el paso 9 del tutorial avisando que
con versiones mayores a 1.0 de jpicusb, se debe capturar la excepcion.
Saludos!!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: KARITOU en Mayo 31, 2009, 06:12:14
gero muchisimas gracias eres un divino funciona de maravilla.
gracias por tu ayuda
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: KARITOU en Mayo 31, 2009, 07:30:15
hola gero: revizando tu tutorial de los leds tambien tengo problemas
jejejejeje ;) cuando compilo me salen los siguientes y por cierto muchos
errore q te adjunto.
como siempre ojala puedas ayudarme
Cdigo:
//configuramos el vid_pid del dispositivo asi podemos usar las
funciones "rapidas" de la interfaz
iface.set_vidpid("vid_04d8&pid_000b");
//configuramos la instancia del dispositivo asi podemos usar las
funciones "rapidas" de la interfaz
iface.set_instance(0);
Saludos!!!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: londoo en Julio 15, 2009, 01:40:17
hola Gero
Me gustaria saber si JpicUSB sirve tambin para recibir datod del micro
para visualizalos en el pc, gracias.
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Julio 15, 2009, 03:39:32
Cita de: londoo en Julio 15, 2009, 01:40:17
hola Gero
Me gustaria saber si JpicUSB sirve tambin para recibir datod del micro para
visualizalos en el pc, gracias.
Un consejo nada mas, yo lo que le haria seria subir el conector que esta
abajo y bajar un poco los leds asi dejas espacio en las esquinas por si le
queres poner algun separador o algo para atornillarno en una base.
Un 7805 y un diodo en la entrada nunca esta de mas tampoco, pero eso
depende de la fuente que uses.
Saludos
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: JLondoo en Agosto 05, 2009, 11:45:37
hOla, soy nuevo en esto de Java y quisiera saber como puedo hacer
para que el byte out en el programa Java+Pic+USB sea una variable
asociada a un TextField, si alguien me puede ayudar lo agradeceria
mucho.
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Agosto 05, 2009, 03:20:39
Cita de: JLondoo en Agosto 05, 2009, 11:45:37
hOla, soy nuevo en esto de Java y quisiera saber como puedo hacer para que el byte
out en el programa Java+Pic+USB sea una variable asociada a un TextField, si alguien
me puede ayudar lo agradeceria mucho.
Saludos!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: kraneak en Agosto 08, 2009, 12:28:53
hola ke onda como estan oigan una pregunta, hize un programa ke
suma un numero pero cuando me regresa la resuesta no lo hace como
un numero sino como una letra no se si se daba al String y si es asi
como le hago para ke me muestre el numero
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Agosto 08, 2009, 12:54:50
Cita de: kraneak en Agosto 08, 2009, 12:28:53
hola ke onda como estan oigan una pregunta, hize un programa ke suma un numero
pero cuando me regresa la resuesta no lo hace como un numero sino como una letra
no se si se daba al String y si es asi como le hago para ke me muestre el numero
Saludos!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: kraneak en Agosto 08, 2009, 03:04:12
hola!! gracias por responder creo ke no hize la pregunta muy bien,
bueno ahora tratare de explicarla mejor.
Enciende Output_High
Apaga Output_Low
Conmuta Output_Toggle
RecCommand recbuf[0]
LedParam recbuf[1]
COMMAND_FIRMWARE 99
COMMAND_LEDS 88
Estimado gero me parece genial tu aporte me a funcionado las mil maravillas pero
seria mucho mas interesante saber como lograste crear la dll que maneja en al
puerto usb si podrias asesorarme respecto a ese tema seria genial ya que sos un
maestro ademas no me queda muy claro eso del ("vid_04d8&pid_000b") de que trata
al parecer es como una identificacion y como seria para comunicarme
con una camara web hay me parece que abria que hacer algunas modificasiones
no?? espero puedas
aclararme mis dudas y me ayudes con crear mi dll para cvontrolar el puerto usb
muchas gracias y de verdad sos un maestro aa mi correo es
carlosedu_rg03@hotmail.com
Hola morgan, la dll no es mas que la misma dll de microchip, solo que le
agregue varias funciones que pueden ser llamadas desde java usando
JNI.
No publico los fuentes porque no quiero publicar codigo desordenado y
sin depurar y arreglar. Quiza cuando tenga un tiempo libre, mejore el
codigo fuente y lo publique.
Los vid y pid significan "Vendor Identification" y "Product Identification"
respectivamente. Y son con los que un dispositivo usb se identifica ante
un Host usb (PC). Al usar jpicusb, es necesario que proporciones los
mismos vid y pid que el microcontrolador pic con el que quieres
comunicarte.
Respecto a comunicarte con una camara web, no puedo ayudarte :( y
tampoco puedes utilizar jpicusb para dicho proposito, ya que fue
diseada por microchip para comunicarse con dispositivos pic microchip.
Saludos!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Septiembre 17, 2009, 12:33:30
Cita de: Lectra en Septiembre 16, 2009, 01:34:35
Felicitaciones por este gran foro ha sido de gran ayuda sin embargo he estado tratando
de hacer algo bsico y es enviar un solo bit al programa del ejemplo 1 de este foro
pero me ha sido imposible? Este es el cdigo en C de he tomado prestado de la
primera aplicacin, la idea es almacenar en una variable un numero por ejemplo
result1=8;,result0=8; y visualizarlo tal cual pero he fallado, veo letras que no
cambian a pesar de que cambie el valor de los nmeros Les agradezco cualquier ayuda
:'( :'(
int8 envia[2];
Debierias cambiar el tamao del arreglo asi: int8 envia[5]; o enviar
solo 2 bytes asi: usb_put_packet(1, envia, 2, USB_DTS_TOGGLE);
Si el problema todavia contina, seria mejor que publiques el codigo del
lado de la pc asi pueda ayudarte.
Saludos!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: payatronico en Septiembre 21, 2009, 10:24:44
Ok, perdn la intromisin en este tema, busqu cuanto pude y no
encontr exactamente lo que quera as que s estoy preguntando en el
lugar incorrecto solo digan y me ir a buscar en otro lado sin problema.
Yo programo pics en entorno Windows usando un programador picstar+
con MPLAB y uso basic.net en su versin profesional. Intento ser lo ms
honesto posible e intento igualmente ensear esto, lo que me sucede es
que no puedo pedirle a todo mundo que tenga dinero para tener
Windows legal, MPLAB legal, Basic legal o sus versiones gratuitas con
milln de restricciones al momento de trabajar ms profesionalmente,
as que segu por el camino del bien y de lo simple (o lo ms simple
posible)
Bueno, hasta ahora lo ms barato y legal que he encontrado fue:
Ubuntu, PikLab, BoostC, Picstar+ (o que fabriquen un programador
propio), pic18f4550, netbeans.
El problema es que primero antes que ensear estoy tratando de
aprender esto del boostC y de la comunicacin en Java por USB y
encontr este tutorial en donde casi todos usa Proteus (que para mi es
caro como para exigir que lo compren y no voy a instalar nada pirata ni
a fomentar a que lo haga nadie), y windows.
Al grano: En este tutorial veo el programa para java que me pareci lo
ms simple y me di cuenta que es muy similar a C pero y el programa
del PIC? :( alguien sabe dnde encuentro o cmo hago el programa
para que pueda trabajarlo en boostC, de esta manera podra ensear
todo esto en prcticamente un solo lenguaje o lo ms similar posible a
uno solo.
Disculparn por intentar ser un profesor simplista pero me gusta
Hola de nuevo sigo con lo del problema bsico :'( : les publico el
cdigo como me lo recomendaron, bueno la dificultad que se presenta
es la siguiente cuando en el programa del PIC dejo las lneas
result1=8;,result0=8 visualizo en la pc 00 y cuando lo coloco
result1=8;,result0=8 me aparece las letras RX yo solo necesito
que me visualice el 8 sin colocarlo entre comillas solo ese numero sin
mas ni mas, les agradezco que me colaboren
Cdigo:
package primer_usb;
import jPicUsb.*;
/**
*
*
*/
public class Main
{
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
try
{
iface.load();//++++++++++++
//System.out.println("Presione una tecla cuando desee
conectarse con el dispositivo.");
//System.in.read();
}
catch(Exception e)
{
System.out.println("Error al cargar jpicusb.dll.");
System.out.println(e.getMessage());
return;
}
try
{
System.out.println("Presione una tecla cuando desee
conectarse con el dispositivo.");
System.in.read();
//
iface.load();
//
iface.set_vidpid("vid_04d8&pid_000b");
//
iface.set_instance(0);
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
// System.out.println("Error al cargar jpicusb.dll.");
// System.out.println(e.getMessage());
// return;
}
}
catch(Exception ex)
{
System.out.println("ERROR:" + ex.getMessage());
}
/////////////////////////////////////////////////////////////////////////////
try{
String data = new String(iface.QWriteRead(out, 1, 6,
1000)); //Enviar 1 byte del buffer y leer 6 bytes de respuesta
if (data.length() == 0)
{
System.out.println("No se recibieron datos");
} else
{
byte texto []= data.getBytes();
System.out.println("Datos recibidos:" + texto[0]);// cuando
entra un dato mayor de 125 entrega valores
}
//negativos en
la conversion de byte a int
}catch(Exception ex)
{
System.out.println("ERROR:" + ex.getMessage());
}
return;
}
}
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: locowarcraft en Octubre 07, 2009, 12:12:24
Hola amigo, vers, tengo un problema. Instal el Proteus 7.4 y abri tu
aplicacin correctamente, detect el dispositivo y me pidi que instale el
driver. En una oportunidad me sali un pantallazo azul y en el resto de
veces me sale (error codigo 10). Y no funciona la aplicacin en java
puesto que el driver del dispositivo no fu correctamente instalado. No
s si me podrs ayudar en ese detalle. ^^ :'(
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: xesc0 en Octubre 07, 2009, 06:25:04
Este tipo de fallos son difciles de arreglar para alguien externo al pc. Si
me pasara a mi reinstalara el proteus y el driver o probara con otra
versin. Si te sale otro fallo as es posible que pueda ser alguna carencia
en tu pc. :)
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: Nevermore en Octubre 10, 2009, 06:47:40
Hola a todos, primero que nada quiero agradecer enormemente a
Geronimox por todo su trabajo en esta librera, Java es mi lenguaje
preferido y disponer de todos estos ejemplos para la comunicacin USB
con los PIC me ayud muchisimo. :rolleyes2:
@Lectra
Espero que las siguientes lneas ayuden a resolver tu problema:
Primero lo bsico...
1 byte = 8 bits, con 8 bits el valor mximo que podemos almacenar es
256 (0-255) unsigned, es decir todos positivos.
En Java 1 byte sigue siendo 8 bits por lo cual tambien puede almacenar
un valor mximo de 256 pero lo hace a partir de -128 a 127
Si quieres "positivizar" un byte en Java tienes que transformar ese byte
al siguiente tipo de dato que permita almacenar por lo menos el valor
255 positivo, para el caso podemos usar un short (16 bits, -32768 a
32767), un int (32 bits, -2147483648 a 2147483647) o un long (64 bits,
enooorrrrme).
Ejemplo:
Recibimos un array de bytes desde el PIC (PIC --> Java), hoy dia me
desperte con ganas de desperdiciar memoria asi que vamos a usar ints
Cdigo:
//Codigo Java
byte res[] = iface.QRead(32, 500);
//llenamos res[] con los datos
que nos envia el PIC
if(res.length > 0) {
//verificamos si
obtuvimos respuesta
int positivos[] = new int[res.length]; //creamos un array de enteros
con la misma dimension de res[]
for(int i = 0; i < res.length; i++) {
positivos[i] = res[i] & 0xFF;
//aca esta el "truco", al
hacer uso del operador lgico & con el hexadecimal 0xFF
//positivizamos el
valor y lo almacenamos en una variable capaz de contenerlo
}
//aca puedes hacer lo que quieras con los datos de positivos[]
}
Funcion en JAVA que nos permite leer int16 desde un array de bytes:
Cdigo:
//Codigo Java
//Si los parametros son correctos retorna un positivo, de otra forma
retorna -1
private int unsignedShortToInt(byte[] b, int offset){
int i = -1;
if(b.length >= 2){
if(offset <= (b.length - 2)){
i = 0;
i |= b[offset] & 0xFF;
i <<= 8;
i |= b[offset + 1] & 0xFF;
}
}
return i;
}
Usando la funcin:
Cdigo:
//Codigo Java
int val;
byte res[] = iface.QRead(32, 500);
if(res.length > 0) {
if(res[0] == 3) {
//3 es el codigo que uso para identificar
ADC
val = unsignedShortToInt(res, 1);
}
}
geronimox :
Que mas tengo una sencilla duda, en la parte de la captura de datos
provenientes del PIC, como sabes que llego un dato, sin la necesidad de
hacer un "poli", es decir que si lo tienes por interrupciones la llegada de
los datos.
Como hacer para saber que hay un dato en el buffer del erto USB....
Agradeceria tu mas pronta respuesta....
Hola Sergio, la verdad desconozco... Esos son temas que todavia tengo
pendientes... Espero que si te sacas la duda, despues me cuentes por
aca la forma de lograrlo..
Saludos.
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: Fire en Noviembre 13, 2009, 10:14:07
geronimox :
maneras por ahy estoy viendo algo referente a usb por interrupciones si
me funciona te aviso
okaaaaaaaaaaaaa
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: sergio64 en Noviembre 17, 2009, 11:55:59
Hola Geronimox:
Otra pegunta que tenia pendiente como le indicas a QWriteRead por que
puerto USB transmitira los datos..
bueno mi driver del pic se instalo en el COM16, como le digo a java que
trasmita por ese puerto............... ejjejeje
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Noviembre 17, 2009, 09:54:23
Hola Sergio!
Por lo que comentas, estas usando la clase CDC, la cual emula un puerto
serie sobre USB.
Para este caso, no necesitas usar jpicusb en java. Directamente podes
acceder a los puertos COMM en java usando las "Java Communication
API"
Si deseas usar jpicusb, debes cambiar el codigo en el PIC asi no use la
clase cdc, sino una clase "custom driver". Asi como se muestra en estos
(http://divideandconquer.com.ar/dyq/2009/01/jpicusb-comunicacionpic-usb-usando-java/) ejemplos.
Sobre tu pregunta de hacer un polling sin quedarte colgado en un lazo
infinito, podes crear un Timer como se discutio aqui
(http://www.ucontrol.com.ar/forosmf/programacion-en-java/tutorialjava-pic-usb-%28primeros-pasos%29/75/)
Saludos!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: Dolphinr2d2 en Noviembre 18, 2009, 05:16:18
Soy nuevo en esto, tengo que trabajar con un PIC18F14K50,
bsicamente lo nico que tengo que hacer es mandar un mensaje del
PIC al PC y viceversa. Pero pues para lograr esto hay que configurar el
PIC primeramente, del modo en que va a trabajar, y saben, los pipes,
endpoints, velocidad, carga de datos de transmisin por (micro)frame,
Buenas!
Creo que el problema de desinstalacion de los drivers se debe a que
cuando uno exige demasiado a la simulacion, el proteus no puede
simular en tiempo real, y al menos a mi, me trajo varios problemas. Si
mal no recuero uno de los problemas que tenia al hacer llegar al 100% a
la simulacion usb, era que me lanzaba pantallazos azules, asi que no me
pareceria extrao que se corrompiera el puerto usb virtual.
Sobre el error que obtienes en netbeans, estaria bueno que nos
mostraras que dice el cartel que aparece al sealar la bolita roja a la
izquierda del renglon subrayado de rojo.
Saludos!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: marturetjulio en Diciembre 26, 2009, 12:46:14
hola amigo gracias por responder aqu te mando las imgenes la
primera es cuando posiciono el mouse sobre le bolita roja y el segundo
es el mensaje de salida que sale al compilar...en cuanto a lo de proteus
si yo pienso que es eso tambin pero no habr una forma de solucionar
eso.ahora me encuentro tratando de entender el programa en picc...es
decir entendiendo las instrucciones de usb que son nuevas para
mi...salu2
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: marturetjulio en Diciembre 26, 2009, 05:01:20
hola queria saber si me podian orientar con este programa para el
pic...lo que hice fue modificar el programa demo de gero para adaptarlo
que transmitiera el valor del adc...entonces decidi postearlo aqui para
que me digan si esta bien...y como podria hacer una programa en java
para recibirlo y mostrar ese dato en una area de texto espero me
puedan ayudar y gracias de antemano
//////////////////////////////////////////////////////////
//***** ENVIAR EL VALOR DEL ADC POR EL PUERTO USB********
//////////////////////////////////////////////////
#include <18F4550.h>
#fuses
HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VR
EGEN
#use delay(clock=48000000)
/////////////////////////////////////////////////////////////////////////////////
//////////////////
//
// CCS Library dynamic defines. For dynamic configuration of the CCS
Library
// for your application several defines need to be made. See the
comments
// at usb.h for more information
//
/////////////////////////////////////////////////////////////////////////////////
//////////////////
#define USB_HID_DEVICE FALSE // deshabilitamos el uso de las
directivas HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK // turn on
EP1(EndPoint1) for IN bulk/interrupt transfers
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK // turn on
EP1(EndPoint1) for OUT bulk/interrupt transfers
#define USB_EP1_TX_SIZE 32 // size to allocate for the tx endpoint 1
buffer
#define USB_EP1_RX_SIZE 32 // size to allocate for the rx endpoint 1
buffer
/////////////////////////////////////////////////////////////////////////////////
//////////////////
//
// Include the CCS USB Libraries. See the comments at the top of these
// files for more information
//
/////////////////////////////////////////////////////////////////////////////////
//////////////////
#include <pic18_usb.h> // Microchip PIC18Fxx5x Hardware layer for
CCS's PIC USB driver
#include <header.h> // Configuracin del USB y los descriptores para
este dispositivo
#include <usb.c> // handles usb setup tokens and get descriptor
reports
#define
#define
#define
#define
#define
Enciende Output_High
Apaga Output_Low
Conmuta Output_Toggle
RecCommand recbuf[0]
LedParam recbuf[1]
#define COMMAND_FIRMWARE 99
#define COMMAND_LEDS 88
const int8 Lenbuf = 32;
/////////////////////////////////////////////////////////////////////////////////
//////////////////
//
// RAM, RAM, RAM
//
/////////////////////////////////////////////////////////////////////////////////
//////////////////
char Version[] = "v.1.0";
int8 recbuf[Lenbuf];
int8 sndbuf[Lenbuf];
/////////////////////////////////////////////////////////////////////////////////
//////////////////
//
// M A I N
//
/////////////////////////////////////////////////////////////////////////////////
//////////////////
void main(void) {
int adc0;
setup_adc_ports(AN0|VSS_VDD);
SETUP_ADC(ADC_CLOCK_INTERNAL);
SET_ADC_CHANNEL(0);
delay_ms(500);
usb_init();
usb_task();
usb_wait_for_enumeration();
enable_interrupts(global);
while (TRUE){
if(usb_enumerated()){
if (usb_kbhit(1)){
usb_get_packet(1, recbuf, Lenbuf);
if(RecCommand==COMMAND_FIRMWARE){
adc0 = read_adc();
usb_put_packet(1,adc0,1,USB_DTS_TOGGLE);
}
}
}
}
}
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: marturetjulio en Diciembre 29, 2009, 03:17:28
hola amigos del foro ya logre transmitir el valor del adc con el pic a la pc
y recibirlo y mostrarlo en un area de txto igual que como hiso nuestro
amigo gero aqui les adjunto el programa del pic que esta bien
comentado y el cual es una modificacin del programa que gero hiso al
principio del tutorial...tambien adjunto el programa en java para la pc y
la simulacion del programa en proteus...coloco esto porque asi como
gero me ayudo al colocar este post yo quiero ayudar a los que necesiten
enviar este tipo de dato a la pc...bueno salu2 a todos espero les sirva de
utilidad
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Diciembre 29, 2009, 04:46:35
Hola marturetjulio.
Me alegro que hallas solucionado tu problema!
Y que compartas la solucion, ya que es algo que se pregunto varias
veces en este post, y va a servirle a mucha gente.
Saludos!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: marturetjulio en Diciembre 30, 2009, 02:53:00
hola gero
si espero que le sea de utilidad a algunos compaeros..bueno aqui voy a
postear una forma de hacer lo mismo pero con 4 variables ya que lo
mas comn es eso enviar varias variables...lo que hace este proyecto es
enviar 4 valores adc del pic (que bien podran ser sensores) y el
programa en java los recibe cada vez que se presiona el botn indicado
para esto...
pero bueno de tanto hacer pruebas recorde que ya que una de esas
variables que voy a enviar es un sensor de temperatura, quisiera saber
si me podan ayudar en algo, y es que yo quisiera que el valor adc que
llega desde el pic, graficarlo en una "barra de progreso" como las que
salen en la paleta de contenedores de swing....como saben la
En el Pic...
Cdigo:
FOR (a = 1; a <= (Ciclos_Completos); a++)
{
c++;
if (c == 10){ conmuta(work);c=0;}
FOR (b = 1; b <= 30; b++)
{
dato = READ_EXT_EEPROM (registrol);
sndbuf[b] = dato;
delay_us(100);
registrol++;
}
if (a== ciclos_completos){
sndbuf[0]=5;
sndbuf[31]=29;
Termino_envio();
}else{
sndbuf[0]=1;
sndbuf[31]=29;
Termino_envio();}
}
No existen
Citar
3-. cual es la instruccion o grupo de instrucciones que me permiten: configurar el
puerto serial del pic, enviar y recibir datos atraves del puerto serial del pic.
No existen
Espero haber sido claro, si queres usar JAVA entonces PC, PDA o celus,
los micros de 8 bits se programan en C, Pascal, Basic, Forth o Assembler
plano.
Saludos !
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: carlosandres03cp en Marzo 02, 2011, 12:11:09
Hola mira he tratado de seguir los pasos de tu tutorial pero me
encuentro con el siguiente error no se si puedas ayudarme...de
antemano muchas gracias..
java.lang.NoClassDefFoundError: javausb/Main
Caused by: java.lang.ClassNotFoundException: javausb.Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: javausb.Main. Program will exit.
Exception in thread "main" Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
hola hayn
con voluntad y un poco de tiempo lo puedes lograr ;D
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: hayn en Junio 18, 2011, 11:39:14
hola palitroquez de que parte de venezuela eres?????
Ttulo: Archivo .bat generado por Netbeans
Publicado por: zaratustra_x en Junio 26, 2011, 04:02:54
Saludos.
Antes que nada quiero felicitarlos por este foro ya que por varios dias
estuve buscando cmo desarrollar una aplicacion Desktop para
interfazar PICs hasta que encontr este foro. Y ya que he estudiado OOP
por algun tiempo no se me dificulto. ;D
Ahora si, al problema. He creado un archivo por lotes .bat desde
netbeans modificando el xml que viene el la carpeta dist/ del proyecto.
Las lneas que hay que agregar son estas:
<target name="-post-jar">
<echo file="${dist.dir}/run.bat">java -jar $
{application.title}.jar</echo>
</target>
Ojo: stas deben de colocarse antes de la etiqueta </project>
Bueno, dentro de la carpeta dist/ genera un archivo run.bat que no es
mas que un enlace ara ejecutar la aplicacin en una consola de msdos
Hasta aqui bien, pero cuando ejecuto este archivo en consola me
aparece el mensaje:
"Error al cargar jpicusb.dll"
"No se encontro la libreria jpicus.dll en C:/mi_ruta_del_proyecto/dist/"
En Netbeans compila y ejecuta sin problemas, estoy trabajando en
Windows 7 - 64bits
Mmmm no se si deba modificar algunas dependencias de directorios,
puesto que manualmente copi el dll en la carpeta dist/ pero an asi no
PIC+USB+JAVA.
Hay utilizado el HW y el SW que hay no inicio del forum e el problema se
mantiene.
Quien me puede ayudar, por favor?
En esta pgina (de Enero del 2008), pone que se hay soporte para
windows vista de 32 bits y para windows de 64 bits (supongo que
incluir el windows 7):
http://ww1.microchip.com/downloads/en/DeviceDoc/Release%20Notes
%20for%20MCHPFSUSB%20v1.3.htm
(http://ww1.microchip.com/downloads/en/DeviceDoc/Release%20Notes
%20for%20MCHPFSUSB%20v1.3.htm)
El caso es...y perdn si la pregunta es muy estupida...como puedo
recompilar el dll?? Cual es la direccin exacta de la fuente? En cuanto
sepa como hacerlo, me pongo manos a la obra y os lo aviso.
Tambin me gustara saber, en caso de que recompilando el dll no
funcionase. Habra alguna posibilidad de cambiar yo algo la dll de cara a
hacerlo funcionar? O esto ya tambin depende de que microchip saque
sus drivers?? Lo digo por contribuir un poco a este foro. Ya que siempre
que escribo recibo mucha ayuda.
EDITO: Gracias a ti tambin por contestar VelazquezBio, ya prob ayer a
poner el dll en todos los sitios posibles, y no funcion :(
Un saludo!!
http://sourceforge.net/projects/jpicusb/files/Sources/
Un saludo!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: Dididito en Noviembre 07, 2011, 06:30:58
Ok.
Ya me he aclarado entonces de lo que tengo que hacer. Lo que me da un
poco de verguenza volver a preguntartelo es que...no encuentro el
fuente.
Yo por el fuente entiendo un archivo .java, y en la ruta que tu me has
dado, cuando descomprimo veo lo que te mando en la imagen adjunta.
Muchisimas gracias por la ayuda.
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: geronimox en Noviembre 07, 2011, 06:36:44
que raro... ??? yo apreto en jPicUSB Sources 1.1.1.rar y se me baja el
rar de los sources
a vos se te esta descargando el release.. (me parece que estas
apretando en el boton verde) ;D
de todas formas este es un enlace directo
http://sourceforge.net/projects/jpicusb/files/Sources/jPicUSB
%20Sources%201.1.1.rar/download
saludos!
Ttulo: Re: Tutorial: JAVA + PIC + USB (Primeros pasos)
Publicado por: Dididito en Noviembre 07, 2011, 07:20:46
Exactamente...estaba pulsando el boton verde.
Perdona las molestias. Esta tarde me pongo a ello y en cuanto tenga lo
que sea aviso.
Aunque tu proyecto sea del 2009, debe de perdurar en la memoria!!!!
Hiciste un gran trabajo!!!
Bueno,
Voy a resumir los problemas actuales que tengo para generar la nueva
DLL para permitir usar jPicUSB en Windows 7 Ultimate de 64 Bits, lo que
intuyo que permitir usarlo en cualquier windows de 64 bits.
visual
visual
visual
visual
C++
C++
C++
C++
Runtime
Runtime
Runtime
Runtime
Redistributable
Redistributable
Redistributable
Redistributable
2008
2008
2010
2008
x86
x64
x86
x64
Yo pienso que es por la version del JDK. Nose que otro problema puede
ser.
Te agradeceria cualquier ayuda.
gracias
USB_HID_DEVICE FALSE
USB_EP1_TX_ENABLE USB_ENABLE_BULK
USB_EP1_RX_ENABLE USB_ENABLE_BULK
USB_EP1_TX_SIZE 1
#define USB_EP1_RX_SIZE 1
#include <pic18_usb.h>
#include "header.h"
#include <usb.c>
const int8 Lenbuf = 1;
int8 recbuf[Lenbuf];
void main(void){
delay_ms(500);
output_high(PIN_C0);
usb_init();
usb_task();
usb_wait_for_enumeration();
enable_interrupts(global);
while(TRUE){
if(usb_enumerated()){
if(usb_kbhit(1)){
usb_get_packet(1,recbuf,Lenbuf);
if(recbuf[0]==127)
{output_high(PIN_C1);}
if(recbuf[0]==126)
{output_low(PIN_C1);}
}
}
}
}