![]() |
Problemas con comunicación impresoras fiscales.
Hola Coboleros.. tengo que comunicarme con impresora fiscal SAMS4S ELLIX40F. Con la herramienta de comunicación (SAMDRV.EXE) que viene con la impresora, que funciona como el viejo (PFBACH) logre programarla.
Pero ahora tengo que comunicarme por medio de la DLL que viene con la impresora. Nunca lo hice, leyendo vi que las funciones o protocolos de esta DLL tengo que cargalas en COBOL85. No se como se hace esto, paso a paso. Tengo que ejecutar cobol85 y como agrego estos datos.? powercobol 5 ej: Código:
SerialPortOpen=Sam4sFiscalDriver.dllsaludos a todos.... |
Hola @Ale, no he trabajado con este Impresor Fiscal , pero deberias mirar en el manual de la libreria cuales son los miembros de la clase "Sam4sFiscalDriver.DLL" para poder armar el archivo cobol85.cbr y luego
desde tu aplicacion llamar a esas funciones con los parametros que requiera tales miembros y calculo que devolvera un resultado a tales llamadas. La libreria deberias registrarla , tu aplicacion y el archivo cobol85.cbr deben estar en el misma carpeta En el foro hay varios ejemplos de como hacer estas llamadas (Ej Epson tm900 Fiscal , Epson no fiscal) Saludos.... |
hola y gracias por responderme fastpho.. si si el problema mío es que no se como se registran en cobol85 estas funciones. ej: SerialPortOpen=Sam4sFiscalDriver.dll no se como se hace para entrar al cobol85 e incluir estos compandos..
muchas gracias.. saludos..... |
@Ale, el archivo cobol85.cbr es una archivo de texto , los editas con cualquier editor como bloc de notas o notepad etc ....
te quedaria algo asi ejemplo: Código COBOL:
Luego dentro de tu aplicacion llamas a la funcion : Código COBOL:
Hay muchos ejemplos en el foro de como implementarlo , bajate alguno y miralos . Saludos |
Muchas Gracias Genio!!. voy a probar si me sale..
abrazo.. Ale. |
Ayuda con comunicación por Dll con impresor fiscal
Hola buenas noches. Sigo sin darme cuenta como comunicarme con impresora fiscal sam4s por intermedio de la DLL de la empresa.
no puedo abrir el puerto com1. Parte del manual de las funciones de la DLL, dice asi: MANUAL FUNCIONES A continuación se describen las funciones que contiene la librería. Ver ejemplos de uso en el Capítulo V y el la carpeta Ejemplos (incluida junto a esta documento). int SerialPortOpen (int portnum) Abre el puerto serial. Parámetros: portnum: número de puertos serial. Ej.: el COM8 es el 8. Retorno: 1 en caso de éxito, 0 en caso de error. int SerialBaudSet (int baudrate) Establece la velocidad a usar con el puerto serial, debe coincidir con la configurada en el equipo. Por ejemplo 115200. Llamar antes de SerialPortOpen. No tiene ningún efecto si el equipo se encuentra conectado por USB. Retorno: 1 en caso de éxito, 0 en caso de error. int SerialPortClose () Cierra el puerto serial. Retorno: 1 en caso de éxito, 0 en caso de error. int IFOpBegin (const char * name) Comienza a preparar un nuevo comando por nombre. Parámetros: name: nombre del comando. Ver comandos disponibles en el Capítulo III. Retorno: 1 en caso de éxito, 0 en caso de error. etc.. cargo las funciones y comando de la dll, en el cobol85 asi. Código:
[tpv.Entry]Código COBOL:
** cerrar el puerto me funciona, porque según el manual valor 1 = operacion correcta. ahora cuando quiero abrirlo no me funciona se cierra el programa y no tira ningun error.: Código COBOL:
utilizo Powecobol 5 ahora les pongo un ejemplo en otros lenguajes. Código VB:
---------- Post añadido el 6 de febrero de 2022 a las 02:40 ---------- Perdón. logre encotrarle la vuelta Código COBOL:
ahora no me toma funciones. las envio asi. Código COBOL:
Código CPP:
Parámetros: • name: nombre del comando. Ver comandos disponibles en el Capítulo III. Retorno: 1 en caso de éxito, 0 en caso de error. ejemplo en otro lenguaje.. Código CPP:
saludos, perdón por las molestias.. muchas gracias...
|
Hola @Ale, podes subir el manual al que haces referencia de la dll para poder ayudarte
Saludos.. |
fiscales
1 Archivos Adjunto(s)
Hola y gracias nuevamente Fastpho por responderme..
Estoy un poco mareado con esta impresora, por intermedio de la aplicación Samdrv he podido hacerle funcionar casi todo. Pero no le encontre funciones para asociarle nota de credito a la factura.. Entonces me largue a tratar de comunicarme por intermedio de funciones y protocolos de la dll sams4sFiscalDriver.dll . Adjunto el manual.. lo unico logro hacer hasta ahora como puse en este tema es abrir y cerrar el puerto.. nada mas.. muchas gracias y saludos.. |
Informe Z Sam4s
@Ale,estuve viendo el manual tiene 2 librerias una para 32 y otra 64 bits , tenes que usar la 32
aparentemente no hay que registrarla solo copiarla dll en la carpeta del proyecto por lo que dice el manual . Encontre en google un grupo de Visual FoxPro un programa en Python completo con todas las funciones te puede servir de ejemplo para traducirlo al powercobol. y te paso el link del grupo para que leas los problemas que tienen con la libreria ..... https://groups.google.com/g/publices...m/Q-fexaz_AQAJ Ejemplo para hacer una Informe Z Código COBOL:
|
fiscal
Muchas Gracias Fastpho.. me sirvió tu información, avanzo de apoco cada día.
Ahora me tira error y me cancela el comprobante cuando envio el comando ItemVenta y no se porque. Código COBOL:
Y lo hago luego de enviar sin errores el comando AbrirTique como corresponde el orden. me falta poco, pero se me hace cada vez mas complicado.. Muchas Gracias nuevamente... saludos... |
sintaxis
hola. tengo que enviar al impresor fiscal item venta, así como me indica el ejemplo.:
Código CPP:
ahora en COBOL esta bien la sintaxis como la hago ? porque no me tira error, pero no me imprime ningun dato. todo en cero. Y descripción espacio en blanco. así envio por ejemplo el importe No se si el error estara en la sintaxis del Call. Código COBOL:
Perdón por molestar, le agradecería mucho me puedan ayudar a resolverlo. saludos...
|
Hola @Ale, , por lo que se puede ver no estas respetando las funciones de la libreria.
*funcion IFOpParamFloatSet* devuelve un entero Código CPP:
El campo descripcion sale con espacios por que no lo estas mandando o pone el ejemplo completo usando botones de resalto. Saludos... |
comunicación
Hola Fastpho como siempre agradecido por tu ayuda. Estas en lo cierto.. no había percatado eso.
pero lo raro es que me devuelve valor 1. pero no me imprime el importe, lo mismo me pasa con Descripcion. Y no me doy cuenta como armarlo solo con dos parámetros. Probe varias formas y por ejemplo : Código COBOL:
Código COBOL:
dividirlo en 3. saludos y muchas gracias por tu ayuda.... |
sintaxis
Hola @Ale , te paso un ejemplo de como pasar parametros a la funciones.
Código COBOL:
Código CPP:
Código COBOL:
Código CPP:
Código COBOL:
|
hola fastpho. nuevamente gracias por tu gran ayuda..
Buenísimo los ejemplos fue un gran asesoramiento, pero vos sabes que Precio sigue sin funcionar.. me lo imprime en 0.00 al tique. Descripción si anda.. pero todo lo que sea importe ya sea Precio, Cantidad, Iva. no anda ninguno. realmente se me acaba el tiempo y no logro hacerlo funcionar.. un gran saludo... y agradecido como siempre. |
sintaxis
Hola @Ale deberia funcionarte usando en todos los campos numericos , el ejemplo
que te puse , es decir usando la funcion Entero , NO uses la del Funcion Flotante. Código CPP:
Saludos..... |
Hola fastpho, perdón pero no me doy cuenta.. pongo otro ejemplo en otro lenguaje por las dudas.
Probé de varias maneras y no hay caso. Lo unico pude hacer funcionar es "Descripcion". Código CPP:
|
Hola:
Los valores numéricos tenés que finalizarlos con un null. Ejemplo Código COBOL:
Saludos... Fito... |
sigo probando. ayuda por favor...
hola amigos! espero que estén bien..
Aun no puedo lograr enviar esta función a la fiscal (no me funciona), para enviar el importe en decimales item y cantidad. manual de la DLL: dice Código CPP:
Agrega un parámetro de número flotante por nombre al comando que se está preparando. Parámetros: • name: nombre del parámetro. Ver detalles en el Capítulo III. • value: valor del parámetro. Retorno: 1 en caso de éxito, 0 en caso de error. ejemplos: otro lenguaje. Código VB:
como se envía con cobol.? y como lo defino en la working a la variable que lleva el precio del articulo. 01 precio.... ya probé definiéndolo como PIC S9(9) COMP-5 y no anduvo. algo así tengo armado: Código COBOL:
Si alguien me puede dar una mano, desde ya muchas gracias.. Saludos a todos.... |
Hola Ale
Para poder ayudarte podrias poner que version de powercobol estas usando , en que entorno estas la impresora fiscal es ????? , esta fiscalizada o en modo entrenamiento , tipo comunicacion serial o usb , que libreria estas usando , Podes sacar X y Z basico , subi un pequeño proyecto para verlo completo como abris el puerto , como lo cerras , como haces el proceso de venta del item o articulo etc etc Respeta las normas del foro..... Saludos .... |
@Ale, por lo que veo en el ejemplo, debes usar tipo float, que en Cobol correponde a COMP-1 o COMP-2, de 4 y 8 bytes respectivamente (single & double precision).
Código COBOL:
|
controlador fiscal
hola nuevamente, muchas gracias por responder.
Perdón por incumplir las normas del foro, tendré que leerlas bien, para entenderlas. Kuk voy a probar con COMP-1 O COMP-2 como me indicaste. Este tema lo inicie yo hace bastante ya. Utilizo powercobol V5, windows10, controlador Ellix40f . utilizo la Dll: Sam4sFiscalDriver.dll comunicación serial, a modo entrenamiento. Abro el puerto, configuro la velocidad Baudios, abro item tiquet por ejemplo. todo bien. hasta ahí. envio el comando: ItemVenta. como el ejemplo que envio, y tambien me lo toma bien. Código COBOL:
el problema es que no le encuentro la vuelta cuando envío comando Precio por ejemplo, que tiene que ser según el manual de la dll: Código CPP:
El numero decimal creo que serian 7 entero 2 decimales. ¿Como definiría en la working... el importe del item? para que funcione. saludos a todos. |
@Ale, estas son las correspondencias de tipos:
[TABLE]Tipo C|Tipo COBOL float|COMP-1 double|COMP-2[/TABLE] Ambos son de coma flotante, es decir, no tiene posición fija para decimales. Una vez que hayas recibido el valor, tienes que hacer un MOVE a un campo con decimales fijas, obtendrás así el valor en el formato que quieras (con cuantas decimales prefieras). |
controlador fiscal
Buen día genios.
Kuk probe como me dijiste y nada. sigue largando en 0,00 el tiquet Lo hago así. No se que esta mal. Código COBOL:
probe tambien con By value y el compilador me tira error. saludos y muchas gracias por su ayuda.. |
@Ale, esto:
Código CPP:
se traduciría así: Código COBOL:
|
controlador fiscal
Kuk lo hago como me indicas.
y el compilador me tira este error. Código:
** DIAGNOSTIC MESSAGE ** (SAMTIQUE) |
@Ale, inténtalo así a ver:
Código COBOL:
|
controlador fiscal
Ya me había ilusionado. lo probe, pero me tira este error al compilar.
SAMTIQUE CmCommand1-Click(44) : JMN1123I-S INVALID WORD 'BINARY-LONG' IS FOUND. IGNORED UNTIL NEXT VALID PARAGRAPH,SECTION OR DIVISION. SAMTIQUE CmCommand1-Click(44) : JMN2222I-S PICTURE CLAUSE IS MISSING. PICTURE 9 ASSUMED. escapa a mi saber... |
Ale la version de powercobol v.5 desconoce la
declaracion BINARY-LONG. Subi el ejemplo COMPLETO de como estas armando para enviar el comando "ItemVenta" como estas enviando los parametros ? Descripcion Cantidad Precio Iva MontoImpIntFijo CodigoInterno CodigoProducto UnidadMedida tambien subi el archivo cobol85.cbr para ver como declaraste las funciones del libreria Saludos... Ale podes sacar x y Z ? Saludos |
controlador fiscal
Hola fastpho.
Esto tengo. Código COBOL:
Código COBOL:
Perdón porque utilizo en mayuscula para programar, porque no veo bien. Tengo hasta ahí echo, porque Precio, Iva, me pasaría lo mismo (no se como enviar Valor flotante). el tique hasta descripción del articulo, lo imprimo. luego sale del programa y no responde mas. gracias por su ayuda.... |
@Ale, bueno pues inténtalo así, con COMP-1:
Código COBOL:
El caso es que este es de 4 bytes, y lo importes muy grandes no van a entrar. |
@Ale proba con este ejemplo a ver si enviando
valores enteros a la .dll logras facturar algo , juga con los numeros de los campos cantidad precio y ver si logras que el impresor multiplique la cantidad por el precio y facture un importe. Otra cosa podes sacar el informe Z ? Saludos .. Código COBOL:
|
controlador fiscal
Hola gente. muchas gracias, voy a probar todo y les cuento..
Si cierre Z los larga bien. El tique también, alcanza a largar descripción del articulo, y luego cuando llega a cantidad larga en cero, o si no el compilador no me deja probar otros Pic... Fastpho voy a probar también con entero, pero el parámetro por ejemplo (precio), me indica que tiene que ser flotante. No se si lo tomaría, o como hago cuando el valor sea con decimales. saludos chicos. y eternamente agradecido igual... |
@Ale, no importan los decimales el impresor va a.poner el pto decimal no te preocupes por eso
Proba como te lo mande , te envía todo Debería poner precio 1.21 cantidad 5.00 Vamos a probar todos los valores numéricos Como enteros por ahora .. Saludos |
controlador fiscal
Chicos, le comento que probé las dos opciones que me enviaron.
Kuk probé lo que me enviaste. El compilador no me tira error. Pero en ejecución me cancela el tiquet. Y no imprime mas que descripción. fastpho probé también lo que me indicaste, y tuvo una notable mejoría, si bien me cancela igual el comprobante, precio unitario le muevo 2200 a la variable y en el tiquet me imprime 22,00. Y le muevo 210 a iva y me imprime en el tiquet 2,10. cantidad le envio 300 y me imprime 0,00. y tambien mejoro en el sentido de que no se cierra el programa. Cosa que antes si. Una leve esperanza le sigo teniendo al cobol.. Todo comenzó porque tengo que hacer el sistema de facturación nueva. por las nuevas resoluciones de Afip y la leyenda a consumidor finales. Me venia comunicando con el controlador fiscal, con la aplicación (Samdrv.exe) por medio de comandos armados en un archivo de texto... pero resulta que la aplicación por lo que estuve averiguando no tiene ningún comando que permita armar esa leyenda. Llamo a la empresa que lo hizo y no me dan respuesta, se ve que es como pienso yo.. Por eso tengo que hacer todo de nuevo comunicándome por DLL . Tengo tiempo hasta Abril. Fastpho debes saber de lo que hablo.. Hago todo esto para mi negocio, y como se programar algo de cobol, me largue hacer mis sistemas.. Agradecido eternamente a uds.. y disculpen las molestias. |
Cita:
Habría que asegurarnos primero de que el problema viene del campo/tipo de campo. Has probado pasando un valor "en duro", es decir algo así: Código COBOL:
Por cierto, en mi ejemplo de antes se me había olvidado añadir el convenio del call WITH STDCALL, lo mismo el problema viene de ahí. Prueba otra vez con el convenio (si no lo habías hecho ya): Código COBOL:
|
controlador fiscal
hola amigos.
Voy a probar enviar el valor en bruto como me decis a ver que pasa. De la otra forma probé y como comente en el mensaje anterior, no tira error el compilador, pero no funciona. Descripción, iva, precio unitario enviándolo como Int. en vez de float , algo esta funcionando, no cancela el comprobante, pero no logro que imprima cantidad. Algo así hago y no toma nada, lo raro que en precio unitario, iva, y los demás valores numéricos los toma. De todas maneras el manual dice enviar "IFOpParamFloatSet", seguimos en la lucha. Código COBOL:
O se podra copartir en la misma pc las dos versiones.? |
@Ale con el ejemplo que te di te anda ? no esta claro
Código COBOL:
Código COBOL:
subi alguna foto del ticket porfa , y con el valor que manda en estas variables Saludos.. |
controlador fiscal
fastpho si si funciona, pero el único que no funciono es el de cantidad. No se porque.
si envio como el ejemplo : IFOpParamIntSet a la tarde subo foto de tique, no lo tengo a mano aca. |
@Ale, "int" es el tipo Integer, que viene a ser de tipo entero, no te vale para valores con decimales.
La verdad es que no sé qué diferencia hay entre la v5 y la v7. Lo interesante sería, probar mi ejemplo con BINARY-LONG en la v7 y ver si lo acepta. No obstante, aunque el compilador coja esta definición, no garantiza que vaya a funcionar. No se puede tener 2 instancias NetCOBOL/PowerCOBOL instaladas en el mismo SO. Puedes pasar por otro PC o una VM. |
| La franja horaria es GMT +2. Ahora son las 16:22. |
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.