Factfis; Clase Para El Manejo De Impresoras Fiscales

Páginas: 6 (1394 palabras) Publicado: 24 de abril de 2012
Clase para el manejo de impresoras fiscales
http://code.google.com/p/factfis/
# -*- coding: iso-8859-1 -*-

#* OEOG Clase que permite enviar comandos a impresoras fiscales
#*
#*
#* @version Beta 1
#* @author Andres Hocevar
#*
#* @since Agosto 10 del 2010
#**/
#/***************************************************************************
#*
#* Este programa essoftware libre: usted puede redistribuirlo y / o modificar
#* bajo los términos de la GNU General Public License publicada por
#* la Free Software Foundation, bien de la versión 3 de la Licencia, o
#* (A su elección) cualquier versión posterior.
#*
#* Este programa se distribuye con la esperanza de que sea útil,
#* pero SIN NINGUNA GARANTÍA, incluso sin la garantía implícita de
#*COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Ver la
#* Licencia Pública General GNU para más detalles.
#*
#* Debería haber recibido una copia de la GNU General Public License
#* junto con este programa. Si no, véase .
#*
#***************************************************************************/
import serial
import operator
import sys
import time
import glob

classfactfis:
bandera=False
mdepura=False
puerto =None
status =''
error =''
envio =''
status =''
error =''

def __init__(self,p='auto'):
if p=='auto':
posibles=glob.glob('/dev/ttyS*') + glob.glob('/dev/ttyUSB*')
for self.puerto in posibles:
if self.OpenFpctrl():
if self.ManipulaCTS_RTS():
self._write(chr(0x05))
time.sleep(0.2)t=self.ser.inWaiting()
if t>0:
self.ser.setRTS(False)
break
else:
self.CloseFpctrl()
else:
self.puerto = p
self.OpenFpctrl()

def OpenFpctrl(self):
if not self.bandera:
try:
self.ser = serial.Serial(
port=self.puerto,
baudrate=9600,
bytesize=serial.EIGHTBITS,
parity =serial.PARITY_EVEN,
stopbits=serial.STOPBITS_ONE,timeout =1.5,
writeTimeout=5,
xonxoff=0,
rtscts=0)
self.bandera=True
return True
except serial.SerialException:
self.bandera=False
self.envio = "Impresora no conectada o error accediendo al puerto"
return False

def CloseFpctrl(self):
if self.bandera:
self.ser.close()
self.bandera=False

def ManipulaCTS_RTS(self):
try:self.ser.setRTS(True)
lpri=1
while not self.ser.getCTS():
time.sleep(lpri/10)
lpri=lpri+1
if lpri>20:
self.ser.setRTS(False)
return False
return True
except serial.SerialException:
return False

def SimpleCmd(self,cmd):
try:
self.ser.flushInput()
self.ser.flushOutput()
if self.ManipulaCTS_RTS():
msj=self.qenviar(cmd)
self._write(msj)rt=self._read(1)
if rt==chr(0x06):
self.envio = "Status: 00 Error: 00"
rt=True
else:
self.envio = "Status: 00 Error: 89"
rt=False
else:
self.DarStatus_Error(0, 128);
self.envio = "Error... CTS in False"
rt=False
self.ser.setRTS(False)
except serial.SerialException:
rt=False
return rt

def QueryCmd(self,cmd):
try:self.ser.flushInput()
self.ser.flushOutput()
if self.ManipulaCTS_RTS():
msj=self.qenviar(cmd)
self._write(msj)
rt=True
else:
self.DarStatus_Error(0, 128);
self.envio = "Error... CTS in False"
rt=False
self.ser.setRTS(False)
except serial.SerialException:
rt=False
return rt

def FecthRow(self):
while True:
time.sleep(0.7)
bytes =self.ser.inWaiting()
if bytes>3:
msj=self._read(bytes)
linea=msj[1:-1]
lrc=chr(self.lrc(linea))
if lrc==msj[-1]:
self.ser.flushInput()
self.ser.flushOutput()
self._write(chr(0x06))
return msj
else:
self._write(chr(0x15))
else:
break
return None


def ReadFpStatus(self):
if self.ManipulaCTS_RTS():
msj=chr(0x05)...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Estrategias para el manejo de grupos en clase
  • Impresoras fiscales
  • Impresoras fiscales
  • Impresoras fiscales
  • Manejo fiscal
  • Manejo de las clases
  • EL MANEJO DE CLASE
  • clases de manejo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS