Spanish b4a ->tcp/udp->vb6

otomas

New Member
Licensed User
Longtime User
buenos dias a tod@s...
Llevo varios dias dandole vueltas a un tema que tengo que realizar y las primeras pruebas no son nada concluyentes.
El tema es el siguiente, necesito que el dispositivo al conectarse por cable se comunique con una applicacion para actualizar una bbdd (por desgracia propietaria). La idea es que el b4a sea un "servicio" que cuando se conecta el USB se comunique con el programa del pc e intercambien la informacion.

actualmente esta aplicacion de escritorio es funcional con portatiles y al conectar un portatil a la red, la informacion se sincroniza.
he probado algunos ejemplos que encontre por aqui, pero sin exito, me dice el b4a que no encuentra el host (127.0.0.1), o que la connexion ha sido rechazada ( el firewall esta desactivado).
Por simplicidad, lo que necesito es pasar texto puro ( la trama ya la tengo desarrollada).
alguien tiene algun ejemplo para mi proposito?
un saludo y muchas gracias.
Pd. por cierto el programa del pc esta en VB6...
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola otomas

No tengo muy claro lo que quieres, por que dices:
La idea es que el b4a sea un "servicio" que cuando se conecta el USB se comunique con el programa del pc e intercambien la informacion.

Pero despues sigues diciendo que:
me dice el b4a que no encuentra el host (127.0.0.1), o que la connexion ha sido rechazada (el firewall esta desactivado).

Primero dices que tu aplicacion quiere que se conecte al USB y luego has probado via red y no te funciona.

Si lo que pretendes es conectarte vía USB aqui tienes ejemplos de conexión serie:

http://www.b4x.com/android/forum/th...s-and-other-usb-serial-devices.24835/#content

Si lo que quieres es bajarte un fichero via FTP de un servidor, aqui hay un tutorial:

http://www.b4x.com/android/forum/threads/android-ftp-tutorial.10407/#content



Saludos
 

otomas

New Member
Licensed User
Longtime User
buenos dias, gracias por la respuesta....
Me explique mal ( muyyyyyy mal) :p
lo que necesito es que al conectar el dispositivo al pc via usb, el servicio (que esta corriendo en bck en el dispositivo), lo detecte y mediante socket udp establezca dialogo con la apli de escritorio.
por lo que he leido ( seguro que lo he entendido mal), el dispositivo al conectar por usb tiene una ip...
se que seria mas facil hacerlo por red/wifi/bluetooth pero por temas de seguridad y requerimientos, solo puede haber comunicacion mediane conexion fisica...osea usb....
gracias y saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

No te preocupes, nos suele pasar que estamos tan centrados en lo que hacemos que al final no escribimos lo que queremos, por eso te puse que no entendia exactamente lo que querias

Bueno, en el primer link te puse como conectarse via serie (http://www.b4x.com/android/fo...s-and-other-usb-serial-devices.24835/#content)

Si quieres detectar que se han conectado al PC de forma que no tengas que tener un temporizador, hay una forma facil, que seria detectando que esta conectada la alimentación, ya se que no siempre cuando hay alimentacion hay datos, pero si detectas alimentacion luego intentas comunicar y asi te ahorras un temporizador haciendo esos intentos.
Saber que esta conectado se hace con la libreria Phone y concretamente con el PhoneEvents, luego detectas el evento lo haces desde el : NombreEvento_BatteryChanged (Level As Int, Scale As Int, Plugged As Boolean, Intent As Intent), el Plugged te dice si esta conectado o no.


Con esto podrias saber la IP:
B4X:
Dim server1 As ServerSocket

Try
  server1.Initialize(5505, "server1")
Catch 
Log("Error al inicializar")
End Try

Msgbox("IP: " & server1.GetMyIP, "Prueba")

Saludos
 

otomas

New Member
Licensed User
Longtime User
buenos dias.
ciertamente no siempre decimos lo que deseamos.
El codigo que me pones lo he utilizado para averiguar la ip del dispositivo, pero cuando conectado con cable, el pc que ip tiene?
he probado 127.0.0.1, con la ip de la net, con la wifi, con localhost, y nada pero siempre me encuentro con el host desconocido o sin respuesta...
estoy desarrollando con el IDE en modo debug, podria ser ese el problema?
gracias y saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Perdona si no te respondi antes pero estuve fuera.

La IP de tu PC la tienes que ver tu en el Panel de Control, por otro lado no entiendo para que la quieres, ya que si la comunicación la quieres hacer serie es comunicarte con un puerto serie (COM) , y darle los valores de comunicación de un puerto serie (velocidad, bits, paridad, etc) .

He realizado pruebas con puertos series y depende mucho del dispositivo, y cuesta que funcione y en algunos casos de dispositivos concretos no he podido hacerlo, será por la misma circustancia de que no todos los dipositivos les funciona el OTG, es una cuestion del hardware del dispositivo, que ya sabes que ningún fabricante es igual a otro e incluso dentro del mismo fabricante.

Yo te recomiendo que lo hagas por bluetooth, si no te quieres complicar puedes hacer el emparejamiento desde ajustes del dispositivo, hacerlo por código ya te puedo garantizar que da mucho trabajo. Y por otro lado al PC le pones un USB bluetooth y el driver de este te creará x puertos virtuales COM y desde VB solo tienes que tratarlo como un puerto serie normal. Con esto la seguridad es muy alta, ya que si el dispositivo no esta emparejado no transmites y de paso estas comunicando en serie que es lo que querias

Saludos
 
Top