import HardwareKit from 'qm-hardwarekit'; const Dsd = HardwareKit.Dsd; import { Platform } from 'react-native'; var Print: any = null; export let Print_Mappers = { 'sprt.58': require('./interfaces/print_sprt_58'), 'print.365': require('./interfaces/print_365'), 'print.yly': require('./interfaces/print_yly'), lkl: require('./interfaces/print_lkl'), 'purong.usb.ds83x': require('./interfaces/print_purong_usb_80'), 'print.powa': require('./interfaces/print_powa'), 'print.usb.58': require('./interfaces/print_usb_58'), 'print.usb.80': require('./interfaces/print_usb_80'), 'sunmi.58': require('./interfaces/print_sunmi_58'), 'sunmi.80': require('./interfaces/print_sunmi_80'), }; export let startPrint = device => { Print = require_Print(device.from); // if (Print) Print.startPrint(device); if (Print) { return Print.startPrint(device); } else { return new Promise(resolve => resolve(null)); } }; export function doInterface(brand: string, model: string, defaultPrinterModal: string = '') { if ('ios' === Platform.OS) { // return { name: 'IOS.powa', from: 'print.powa', bondState: 1 }; // brand => SUNMI, model =>t1host, SN=T105178B00187 } else if ('android' === Platform.OS) { if (Dsd.isSUNMI(brand)) { switch (model) { // case 'T1-GPIOINT': case 't1host': return { name: 'SUNMI.t1host', from: 'sunmi.80', bondState: 1 }; case 'T1': return { name: 'SUNMI.t1host', from: 'sunmi.80', bondState: 1 }; case 'P1': return { name: 'SUNMI.P1', from: 'sunmi.58', bondState: 1 }; case 'V1': return { name: 'SUNMI.V1', from: 'sunmi.58', bondState: 1 }; case 'T2': return { name: 'SUNMI.t1host', from: 'sunmi.80', bondState: 1 }; case 'S2': return { name: 'SUNMI.S2', from: 'sunmi.80', bondState: 1 }; case 'T2mini': let printerModal = defaultPrinterModal || ''; if (printerModal && printerModal == 'T2mini-80') { return { name: 'SUNMI.T2', from: 'sunmi.80', bondState: 1 }; } else { return { name: 'SUNMI.T2', from: 'sunmi.58', bondState: 1 }; } // case 'T2mini-80': // T2mini的model是一样的,但有两种打印机 // return { name: 'SUNMI.T2', from: 'sunmi.80', bondState: 1 }; // case 'T2mini-58': // T2mini的model是一样的,但有两种打印机 // return { name: 'SUNMI.T2', from: 'sunmi.58', bondState: 1 }; default: return { name: 'SUNMI.default', from: 'sunmi.58', bondState: 1 }; } } else if (brand.includes('V8') && model.includes('V8')) { return { name: 'lkl', from: 'lkl', bondState: 1 }; } else if (brand.includes('Android') && model.includes('rk3288')) { return { name: 'rk3288', from: 'purong.rk3288', bondState: 1 }; } else if (brand.includes('Allwinner') && model.includes('DS83X')) { return { name: 'ds83x', from: 'purong.usb.ds83x', bondState: 1 }; } else { return null; } } } export function require_Print(typeName: string) { // let _name = typeName.replace(/\./g, '_'); console.log(`load print ${typeName} ------>`, Print_Mappers[typeName]); return Print_Mappers[typeName]; } /** * * @param text * @param fontSize * @param algin 对齐方式 0--居左 , 1--居中, 2--居右 */ export let printText = (text: String, fontSize: number | 'small' | 'middle' | 'big' = 'middle', algin: number = 0) => { if (__DEV__) console.log('print text---', text); if (Print) { return Print.printText(text, fontSize, algin); } else { return new Promise(resolve => resolve(null)); } }; export let printlnText = ( text: String, fontSize: number | 'small' | 'middle' | 'big' = 'middle', algin: number = 0, ) => { if (__DEV__) console.log('println text---', text); if (Print) { return Print.printlnText(text, fontSize, algin); } else { return new Promise(resolve => resolve(null)); } }; export let printQrCode = (text: String) => { if (__DEV__) console.log('print QrCode ---', text); if (Print) { return Print.printQrCode(text); } else { return new Promise(resolve => resolve(null)); } }; export let printBarCode = (text: String) => { if (__DEV__) console.log('print BarCode ---', text); if (Print) { return Print.printBarCode(text); } else { return new Promise(resolve => resolve(null)); } }; /** * 打印一行多列 * @param texts * @param weights * @param algins */ export let printColumnsText = ( texts: Array, weights: Array, algins: Array, zoom: boolean = true, ) => { if (__DEV__) console.log('print printColumnsText---', texts); if (Print) { return Print.printColumnsText(texts, weights, algins, zoom); } else { return new Promise(resolve => resolve(null)); } }; //打印横线 export let line = () => { if (Print) { return Print.line(); } else { return new Promise(resolve => resolve(null)); } }; //打印空行 export let lineWrap = (nums: number) => { if (Print) { return Print.lineWrap(nums); } else { return new Promise(resolve => resolve(null)); } }; //切割纸 export let endPrint = () => { // if (Print) Print.endPrint(); if (Print) { return Print.endPrint(); } else { return new Promise(resolve => resolve(null)); } }; export const create = () => { // WoyouPrinter.create(); return new Promise(resolve => resolve(null)); }; export const destroy = () => { // WoyouPrinter.destroy(); return new Promise(resolve => resolve(null)); }; //printlnText printColumnsText line lineWrap startPrint endPrint export default { printText, printlnText, printQrCode, printBarCode, printColumnsText, lineWrap, line, doInterface, startPrint, endPrint, create, destroy, };