|
Leer infrarojo de un control remoto HB++
|
matto
[Palm Padawan]
Registrado: 04 Jul 2006
Mensajes: 10
|
Sab 09 Dic 2006 0:57 |
Leer infrarojo de un control remoto HB++ |
|
|
Que tal? Estoy intentando crear un programita en HB++ para palm que tenga la posibilidad de leer los datos que emite un control remoto por medio del IR.
La idea es que cuando apunto con un control remoto cualquiera (por ejemplo el de una TV) a mi palm, mi programa reciba la señal y me la muestre en una etiqueta o caja de texto.
De esa manera podemos diferenciar los codigos de los botones, ya que no es lo mismo presionar el boton de encedido del control, que el de subir el volumen.
¿Alguien tiene idea de como se puede llegar a hacer?
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
javispedro
[Inventaste Palm OS?]
Registrado: 08 Feb 2006
Mensajes: 2981
Ubicación: Barcelona
|
Sab 09 Dic 2006 1:51 |
|
|
|
Costará. HB++ solo usa el Serial Manager, que obviamente espera recibir paquetes IrDA sobre el puerto infrarrojo.
No se si hay alguna otra API más a nivel de hardware.
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
scooter
[Inventaste Palm OS?]
Registrado: 02 Sep 2005
Mensajes: 21640
Ubicación: Aquí
|
Sab 09 Dic 2006 17:33 |
|
|
|
En realidad se puede deshabilitar el protocolo IrDA con facilidad, pero siguen siendo a niven físico bytes IR.
Desconozco los esándares de los mandos, quizás sea solo un problema de velocidad, pero no me suena, de hecho los programas de mando a distancia no funcionaban en ciertos modelos porque no tenían acceso al hard.
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
matto
[Palm Padawan]
Registrado: 04 Jul 2006
Mensajes: 10
|
Dom 10 Dic 2006 9:27 |
IR |
|
|
Mi idea era crear un programa en HB++ que me permita por ejemplo manejar el Pocket Tunes con el control remoto de mi TV, pero al parecer es mas complicado de lo que pensaba!
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
scooter
[Inventaste Palm OS?]
Registrado: 02 Sep 2005
Mensajes: 21640
Ubicación: Aquí
|
Dom 10 Dic 2006 13:20 |
|
|
|
Que yo sepa los mandos no envian bytes de la misma forma que IR. Busca información a ver.
Intenté leer lo que enviaba mi mando a 9600bps y siempre me salía FF, tampoco es necesario ver el código perfectamente, si a otra velocidad salen códigos diferentes según que tecla con eso bastará.
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
matto
[Palm Padawan]
Registrado: 04 Jul 2006
Mensajes: 10
|
Dom 10 Dic 2006 20:59 |
|
|
|
Eso es un comienzo, buena idea!
Me podrias mandar el codigo fuente que estas utilizando?
mi correo es mattogodoy@gmail.com (no se si se puede postear dirs de e-mail)
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
scooter
[Inventaste Palm OS?]
Registrado: 02 Sep 2005
Mensajes: 21640
Ubicación: Aquí
|
Lun 11 Dic 2006 1:39 |
|
|
|
Vale, ahora estoy en Valencia y no se si lo tengo aquí. Pero cueta con el.
Si averiguas algo informa, please.
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
scooter
[Inventaste Palm OS?]
Registrado: 02 Sep 2005
Mensajes: 21640
Ubicación: Aquí
|
Mar 12 Dic 2006 1:24 |
|
|
|
El código:
Que conste que no es mio, lo escribió mauriTX.
| Código: | public ir as new StreamSerial
public t as new Timer
Private Sub Form_Load()
'Abro el puerto y seteo parametros
ir.Open hbPortIrDA,9600
'Inicio el timer
t.Interval=100
t.Enabled=True
End Sub
Private Sub t_Timer()
Dim b as Byte
'if there is somes bytes waiting in the internal buffers
While ir.Ready(hbStreamRead)>0
'read byte per byte
Read ir, b
'Display it
me.txtCodigo.Text=me.txtCodigo.Text & hex(b)
Wend
End Sub
Private Sub cmdLimpiar_Click()
ir.Close
ir.Open hbPortIrDA,9600
me.txtCodigo.Text=""
me.txtTecla.Text=""
End Sub
Private Sub cmdGuardar_Click()
'Controlo que la tecla no sea ""
if me.txtTecla.Text="" then
msgbox "No ha especificalo la tecla presionada",hbMsgBoxError
exit sub
end if
'Controlo que el codigo no sea ""
if me.txtCodigo.Text="" then
msgbox "El codigo esta en blanco, no se guardara.",hbMsgBoxError
exit sub
end if
dim resultado as String
resultado="Tecla: '" & me.txtTecla.Text & "'" & chr(10)
resultado=resultado & me.txtCodigo.Text
dim memo as new clsMemo
memo.OpenDataBase hbModeWrite+hbModeOpenAlways
memo.NewMemo
memo.Memo=resultado
memo.SaveMemo True
End Sub
Private Sub mnuAcerca_Click()
msgbox "Aplicacion desarrollada para PDAExpertos por MauriTX",hbMsgBoxInformation
End Sub | [/code]
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
matto
[Palm Padawan]
Registrado: 04 Jul 2006
Mensajes: 10
|
Vie 15 Dic 2006 18:35 |
IR |
|
|
Muy buen codigo! El unci problema es que independientemente del boton que presione me salen todas letras "F", inclusive la misma cantidad de letras "F" con distintas teclas, por lo que no hay manera de diferenciar un boton de otro... ya me voy a poner a jugar con los valores a ver si logramos algo.
Grax!
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
scooter
[Inventaste Palm OS?]
Registrado: 02 Sep 2005
Mensajes: 21640
Ubicación: Aquí
|
Vie 15 Dic 2006 18:57 |
|
|
|
Claro, eso ya lo vi.
No tengo ni idea de la forma de onda del mando a distancia, primero tendrías que mirar como es.
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
matto
[Palm Padawan]
Registrado: 04 Jul 2006
Mensajes: 10
|
Vie 15 Dic 2006 19:16 |
IR |
|
|
Solucionado! En vez de pasar el resultado de los bytes a hexadecimal:
| Cita: | | me.txtCodigo.Text=me.txtCodigo.Text & hex(b) |
directamente ponemos los bytes recibidos:
| Cita: | | me.txtCodigo.Text=me.txtCodigo.Text & b |
y siempre nos da codigos distintos dependiendo de la tecla presionada. A continuacion pongo el codigo completo:
| Código: |
public ir as new StreamSerial
public t as new Timer
Private Sub Form_Load()
'Abro el puerto y seteo parametros
ir.Open hbPortIrDA,9600
'Inicio el timer
t.Interval=50
t.Enabled=True
End Sub
Private Sub t_Timer()
Dim b as Byte
'if there is somes bytes waiting in the internal buffers
While ir.Ready(hbStreamRead)>0
'read byte per byte
Read ir, b
'Display it
me.txtCodigo.Text=me.txtCodigo.Text & b & " - "
Wend
End Sub
Private Sub cmdLimpiar_Click()
ir.Close
ir.Open hbPortIrDA,9600
me.txtCodigo.Text=""
me.txtTecla.Text=""
End Sub
Private Sub cmdGuardar_Click()
'Controlo que la tecla no sea ""
if me.txtTecla.Text="" then
msgbox "No ha especificalo la tecla presionada",hbMsgBoxError
exit sub
end if
'Controlo que el codigo no sea ""
if me.txtCodigo.Text="" then
msgbox "El codigo esta en blanco, no se guardara.",hbMsgBoxError
exit sub
end if
'dim resultado as String
'resultado="Tecla: '" & me.txtTecla.Text & "'" & chr(10)
'resultado=resultado & me.txtCodigo.Text
'dim memo as new clsMemo
'memo.OpenDataBase hbModeWrite+hbModeOpenAlways
'memo.NewMemo
'memo.Memo=resultado
'memo.SaveMemo True
End Sub
|
Ahora si podemos programar cualquier aplicacion controlada por control remoto infrarojo 
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
scooter
[Inventaste Palm OS?]
Registrado: 02 Sep 2005
Mensajes: 21640
Ubicación: Aquí
|
Vie 15 Dic 2006 20:58 |
|
|
|
Pues no tiene mucha lógica, lo mismo da que sea hexa o no. De todos modos si funciona se abre la veda para usar los mandos como otra cosa, joypad o teclado.
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
matto
[Palm Padawan]
Registrado: 04 Jul 2006
Mensajes: 10
|
Vie 15 Dic 2006 21:02 |
IR |
|
|
Es verdad no tiene lógica, pero si lo probas funciona a la perfeccion. Son codigos bastante largo.
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
scooter
[Inventaste Palm OS?]
Registrado: 02 Sep 2005
Mensajes: 21640
Ubicación: Aquí
|
Vie 15 Dic 2006 22:03 |
|
|
|
Los códigos del teclado infrarojo son tremendos
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
JLuisMx
[Mis primeros pasitos]
Registrado: 25 May 2011
Mensajes: 2
|
Mie 25 May 2011 19:18 |
Problema al correrlo en HB++ 2.53 |
|
|
Paso el código a HB++ y al momento de compilar me sale un error en esta parte
| Cita: |
Private Sub t_Timer()
Dim b as Byte
'if there is somes bytes waiting in the internal buffers
While ir.Ready(hbStreamRead)>0
'read byte per byte
Read ir, b
'Display it
me.txtCodigo.Text=me.txtCodigo.Text & b & " - "
Wend
End Sub
|
Más específicamente en la línea
Read ir, b
error #2201 : identifier 'Read' is not defined
Soy un completo novato en HB++, así que siento que ha de ser algo muy obvio, tal ves agregar una librería? Pero no doy, alguna idea?
El proyecto primero fue crado como "Minimal", después uno en blanco y agregué un form, en ambos casos aparece el mismo error.
De antemano gracias.
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
scooter
[Inventaste Palm OS?]
Registrado: 02 Sep 2005
Mensajes: 21640
Ubicación: Aquí
|
Mie 25 May 2011 21:59 |
|
|
|
HB++ es "puñeterillo", ten paciencia. Buscaré a ver si tengo aún los programas
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
JLuisMx
[Mis primeros pasitos]
Registrado: 25 May 2011
Mensajes: 2
|
Mie 25 May 2011 22:18 |
Ya estás |
|
|
| scooter escribió: | | HB++ es "puñeterillo", ten paciencia. Buscaré a ver si tengo aún los programas |
Ya estás, grax.
[Firma sólo visible para usuarios registrados]
|
|
|
|
|
Todas las horas son GMT + 2 Horas
|
Hilo Anterior | Siguiente
Añadir a Mensajes Favoritos
Puedes publicar nuevos temas en el Foro No puedes responder a temas en el Foro No puedes editar sus mensajes en el Foro No puedes borrar sus mensajes en el Foro No puedes votar en encuestas en el Foro |
|
|