API description
Printer API
There are three layers of printer API, the lower layer is C, the device provid C interface, and the third app to write their own JNI source by calling the C interface. The middle layer is JNI interface, wizarPOS write JNI source and generate the device so files, so the third app just use the JNIInterface to finish the calling. The upper layer is Java interface, wizarPOS provide Java interface for the third app, the third app only need to import the .aar pakcage to their libs. The app should request permission in manifest file. The permission is android.permission.CLOUDPOS_PRINTER
C interface
Functions
The calling sequence is open>query_status>begin>write>end>close.
open
int printer_open()
Open the printer device.This operation should be used before other operations.
Parameters
Returns
The result code, >= 0, success; <0 error code.
begin
int printer_begin()
Prepare to print, the app should print data after this funciton.
Parameters
Returns
The result code, >= 0, success; <0 error code.
end
int printer_end()
End to print,the begin and end apis are pair operations.
Parameters
Returns
The result code, >= 0, success; <0 error code.
close
int printer_close()
Close the device.The open and close apis are pair operations. If you don’t want to use the device, you should call close to release the device.
Parameters
Returns
The result code, >= 0, success; <0 error code.
query_status
int printer_query_status()
Query the status of the printer.This api should be used inner open and close, but not inner begin and end.
Parameters
Returns
The result code, == 1, has paper; == 0, success; <0 error code.
write
int printer_write(unsigned char* pData, int nDataLength)
Write data to the device. The data can be String, Bitmap data or ESC command.
Parameters
pData | data or ESC command |
nDataLength | Length of data |
Returns
The result code, >= 0, success; <0 error code.
read
query_voltage
Sample
JNI interface
Functions
open
native static int open()
close
native static int close()
begin
native static int begin()
end
native static int end()
write
native static int write(byte arryData[], int nDataLength);
read
native static int read(byte arryData[], int nDataLength, int nTimeout);
write
native static int write(byte arryData[], int offset, int nDataLength);
queryStatus
native static int queryStatus();
queryVoltage
native static int queryVoltage(int[] pCapacity, int[] pVoltage);
isOpened
native static boolean isOpened();
Sample
The following code shows how to print some content: int result = PrinterInterface.open(); if (result <0){ return; } Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.printer_barcode_low); byte[] arryBeginText = null; byte[] arryEndText = null; try { arryBeginText = mContext.getResources().getString(R.string.print_QR_code).getBytes("GB2312"); arryEndText = "This is a Bitmap of Barcode".getBytes("GB2312"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } int result = PrinterInterface.begin(); if (result <0){ return; } result = PrinterInterface.write(arryBeginText, arryBeginText.length); if (result <0){ return; } // print line break writeLineBreak(2); PrinterBitmapUtil.printBitmap(bitmap, 0, 0, true); // print line break writeLineBreak(2); // print text write(arryEndText); // print line break writeLineBreak(2); result = PrinterInterface.end(); if (result <0){ return; } PrinterInterface.close();
Java interface
Functions
open
void open(int logicalID) throws DeviceException;