Simple driver (gcc) para un billetero JCM
UBA-10-SS usando el protocolo ID003.
Las
tramas del protocolo ID003 tienen la forma:
|
SYNC | Length | CMD | Data Fields | Checksum |
▪ SYNC
(1byte): 0xFC
▪ Length
(1byte): Longitud total del string (todos los bytes)
▪ CMD
(1byte) (instrucción,
tipo de orden)
▪
Data (variable)( datos, opcional)
▪
CRC (2byte)( CRC-Kermit)
Para
mayor comprensión del CRC-Kermit probar la librería de Lammert Bies, la cual se puede compilar en gcc. Las funciones para el
crc-kermit en este driver han salido de aquí.
----------------------------------------------------------------.
crc: tst_crc.o lib_crc.o
gcc -o crc tst_crc.o lib_crc.o
Aquí se ha usado de
la librería WiringPI los archivos wiringSerial.c, wiringSerial.h
ademas de la función Delay(), pero el código funciona en ambos
(Raspberry
Pi / Banana Pi/PC Linux).
En el caso de la
librería wiringSerial, esta debería trabajar para 7 bits de datos, 1
bit de paridad EVEN.
Por lo que se ha
modificado la función serialOpen ;
options.c_cflag
|= PARENB; // Paridad activada.
options.c_cflag
&= ~PARODD; // Paridad EVEN.
options.c_cflag
|= CS7; // 7 bits de datos.
Este simple driver
consta de 5 archivos; main.c, apex.c, apex.h, wiringSerial.c,
wiringSerial.h. Para compilarlos;
Para este ejemplo en
la función loop_apex se
indica que cuando haya un billete valido, este sea aceptado automáticamente, una vez almacenado el billete se envia el mensaje:
Accept bill: #billete
Ademas de los BYTE 0, BYTE1, BYTE2 enviados por el billetero.
Simple
driver Apex bill acceptor (Linux Mint, x86)
Raspberry Pi
Conexión Rpi - Apex (conector 18 pin)
conector 18 pin (verde-Tx, rojo/blanco-Rx)
Pyramid
Bill Acceptors Apex 5000/7000
Los
billeteros (Bill Acceptors) Pyramid APEX 5000/7000 :
Comunicación:
▪ Baud
rate- 9600
▪ 1
start and 1 stop bit
▪ 7
data bits (bit 0 = sent first (LSB))
▪ 1
parity bit ( even parity)
Inactive
Timing – Si el Bill Acceptor no detecta comunicación con el Host
dentro de un lapso de 5 segundos, iniciando desde la última
comunicación enviada por el host, el bill acceptor:
1 –
rechazara cualquier billete mantenido en escrow.
2 –
Dejará de aceptar billetes hasta que el master inicie la
comunicación nuevamente.
Formato
común para la transmisión:
|
STX | Length | MSG Type and Ack Number | Data Fields | ETX | Checksum
|
STX-
0x02 El inicio del mensaje es indicado por 1 byte.
Length-
Número de bytes en cada mensaje (binary), incluyendo STX, ETX y
Checksum.