Conectando Impresora por Bluetooth = Error Socket
Hola, amigos.
Intento imprimir recibos desde un smartfone a una impresora inalámbrica por BlueTooth. Estuve indagando en el foro y en internet varios días y no encontré una solución satisfactoria. Uso Delphi10 Seattle. Encontré un ejemplo en la dirección C:\RadStudio10\17.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\Bluetooth\Classic Bluetooth Basic app. Comencé a hacer pruebas con con este proyecto de ejemplo de Embarcadero y he llegado a la conclusión de que tiene un problema al crear el socket para la conexión. El error que da la aplicación compilada y SIN MODIFICACIÓN DE CÓDIGO es el siguiente: java.io.IOException: read failed, socket might closed or time out, read ret:-1 He intentado localizar el error con el siguiente código:
El código es el original de Embarcadero, yo solamente he añadido los mensajes para descubrir el punto del error. El resultado ha sido: Dos mensajes. El primero: "Socket = Nil o bien el índice ha cambiado". El segundo: "Socket no es Nil". El Tercer mensaje, sería si ha conectado o no. PUES EL ERROR SALTA ANTES DE EMITIR EL tercer mensaje: éste no aparece. Lo más "gracioso" es que detecta la impresora y al pulsar el "ComboBoDevices" aparece en la lista detectada y lo puedes seleccionar. Y LA SELECCIONA. Pero cuando cambias al tab "SERVICE DEMO" y pulsas el boton "Send Texto-> Thermal Printer" entonces aparecen los dos mensajes mencionados y a continuación el mensaje de error en el Memo1. No se si el problema está en que no crea un GUID adecuado para la impresora, o si le asignas una impresora bluetooth el socket NO SE CREA. NO LE ENVIO UN CÓDIGO DE ESCAPE A LA IMPRESORA, PORQUE LA APP, HE COMPROBADO QUE NO LLEGA HASTA AHÍ. Espero una respuesta al problema, y si no la recibo, tendré que cancelar el proyecto. Pues todo él se basa en la posibilidad de imprimir BlueTooth. Un gran saludo para todos y especialmente a los que han conseguido leer hasta aquí. Mis disculpas por el ROLLAZO. Pero como dice Neftalí "Más tiempo dedicado a la pregunta=Mejores respuestas." Gracias por anticipado a los que puedan ayudarme. Saludos para todos. Gracias por mantener este foro de consulta durante tantos años. |
Impresora Bluetooth
Saludos a Todos
Ese Mismo problema me pasa a mi he intentado varios código pero siempre me el mismo error en el socket , por favor si alguien sabe de esto que nos ayude a resolverlo Gracias.. |
Hola wramirez.
Tengo que darte una buena noticia. ESTOY EN EL BUEN CAMINO. Si te esperas unos 15 días para que confirme mis expectativas, espero tenerlo resuelto. Ya te subiré el código cuando compruebe que funciona 100x100. Un saludo. |
Cita:
Pensé que nadie leía nunca ese mensaje... ;) Lo primero que se me ocurre es si tienes bien configurados todos los permisos. Sería lo primero por lo que se denegaría la conexión. Por otro lado aquí tenéis alguien que está intentando hacer algo similar. Revisad el código a ver si os sirve de ayuda: http://stackoverflow.com/questions/2...rtable-printer Echadle un vistazo también a este componente: http://hyperbasesuite.blogspot.com.e...-conexion.html A ver si vamos aclarando algo... |
1 Archivos Adjunto(s)
Gracias, Neftalí.
Precisamente he estado trabajando sobre el link de StackOverflow. He conseguido conectar con la impresora y enviarle texto. Lástima que haya tenido que devolver la impresora, pues parecía muy completa. Sólo un problema la pongo: no escribe la "Ñ,ñ" ni las vocales acentuadas. He probado todos los juegos de caracteres que venían en el "Programmer Manual" y todos los que venían en el test de la impresora. Una pena de servicio técnico y, además de venir los manuales sólo en inglés y chino, no te permitían imprimir los ".pdf". La marca, por si le interesa a alguien, es "Excelvan E300". Basado en este link he conseguido enviar texto. Dejo aquí el ".zip" con el programa de prueba por si interesa a alguien. Lo digo por ti wramirez Evidentemente, los códigos de Escape habrá que modificarlos de acuerdo con el manual de cada impresora. (aunque la mayoría suelen ser iguales tanto los que siguen el sistema Epson como los de IBM, que suelen ser los más comunes) Espero que le sirva a alguien. Saludos a todos. |
Bueno.
Se me olvidaba deciros, que al compilar da un mensaje de error que no sé por qué, pero que no afecta al funcionamiento de la apk. Dice "Error: Field Form1.Impresora does not have a corresponding component. Remove the declaration?" No hace falta que os diga que debéis responder "No" Además, podéis quitar el componente "BlueToothLE1", ya que lo puse para hacer unas pruebas, pero funciona exactamente igual sin él. Saludos de nuevo. |
Gracias por la explicación y el ejemplo.
^\||/^\||/^\||/ |
Cita:
Por lo general pasa si se editan a mano algunos archivos y se eliminan referencias; también puede pasar el algún copia-pega o deshacer que falla. Lo que podés hacer para solucionarlo es, seleccionar el componente impresora, hacerle un cortar (control + x) y pegarlo: al insertar el componente nuevamente, Delphi va a volver a generar las referencias necesarias. Te lo digo porque es como que el form no conoce al componente, entonces si tenés configurada algunas propiedades y/o eventos en diseño te podés llegar a encontrar con problemas raros en tiempo de ejecución Si lo que propongo arriba no lo soluciona yo reconstruiría el proyecto entero, antes de que se haga más grande |
Gracias, Agustín, por tu interés.
No me había preocupado por el tema, porque no me daba error en tiempo de ejecución. Y porque este proyecto era sólo para conectar con la impresora por Bluetooth. Pero ahora he intentado resolverlo. No ha funcionado corta/pega. Pero he visto que ¡SOY UN ANIMAL...! Tenía declarada la variable "Impresora : TBluetoothDevice;" ¡por encima de la directiva private!. Bueno, a lo que vamos. ¡He conseguido escribir en la impresora las Ñs y los acentos.!. Resulta que los códigos de Escape para manipular la impresora deben ir codificados en ASCII, el juego de caracteres debe ser WPC1252(Latin-1) y el texto enviado a la impresora debe ir codificado en Unicode. Al menos en mi impresora... Dejo las modificaciones en el código del proyecto por si interesan a alguien.
Saludos a todos. |
Gracias Hermano.. Quiera Dios y Pueda Resolver eso, porque llevo 1 mes en eso buscando esa solución y nadie ha podido resolvoerlo
|
Vale,wramirez.
Pruébalo y me cuentas. Si tienes alguna duda, pregunta en el foro mejor que en privado. Como habrás leído, a mi me funciona perfectamente. Saludos. |
Muy bueno muchas gracias
|
Saludos a Todos:
Resulta que el código que envió jhonalone , solo me funciona en table o windows no tengo idea porque cuando instalo el apk en un samsum s5 sigue dándome el error de socket java.ioexeption, pero desde windows o una table con androide imprimo bien aunque después de la primera impresión da un error socket java.ioexeption y luego vuelvo y le doy e imprime de nuevo. que puedo hacer para que me funciones en un mobil.. lo he probado en varios mobil con diferentes versiones pero no he tenido resultado. Gracias.. |
Hola a todos.
wramirez dijo: Cita:
1.- Respecto al error de Socket. Lo más probable es que tengas pareados en el teléfono más de un dispositivo además de la impresora. 2.- Respecto a la escritura en sí: Cada impresora es un mundo y cada dispositivo otro. Con el mismo juego de caracteres y con el mismo ¡¡¡NO TE VA A ESCRIBIR IGUAL EN TODAS LAS IMPRESORAS.!!! Casi seguro. Tendrás que adaptar el juego de caracteres y el TEncoding para cada impresora. Saludos. |
Hola a todos.
¡Ah! wramirez, se me olvidó decirte que te dará este error si tienes la impresora conectada por Bluetooth a otro dispositivo. No tengo la suerte de tener un móvil Samsung S5 así que lo más que he podido probar es en S4 y a mí me ha funcionado. Saludos. |
Resolvido java.io.IOException: read failed, socket might closed or time out
1 Archivos Adjunto(s)
Olá a todos.
não vou fica aqui falando sobre o mesmo assunto. " java.io.IOException: read failed, socket might closed or time out, read ret:-1 " só estou postando o que consegui pra retribuir com todos do fórum pois foi dessa forma em fórum como esse que chequei aqui como desenvolvedor em delphi. em anexo exemplo em delphi berlin para windows,android. foi testado em três impressoras top (china) de R$199.00 de marca diferentes. |
Muchas gracias!! me salvaste la vida :D
|
Cita:
Lo primero agradecer la respuesta y el ejemplo (aunque se a antiguo). Lo segundo (y no he podido evitarlo) esto me ha hecho daño a la vista... :D:D:D |
Creo que está escrito en portugués, no en castellano.
|
Cita:
Pues creo que tienes razón... |
La franja horaria es GMT +2. Ahora son las 01:44:53. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi