function sane() { } sane.socket = null; sane.printlog = false; sane.onInit = null; sane.onGetDevices = null; sane.onScanOneFileDone = null; sane.onErrorMessage = null; sane.showbase64 = 0; sane.source = "Adf-duplex"; sane.mode = "Color"; sane.resolution = 200; sane.init = function(port, printlog) { if (sane.socket != null) { return; } sane.socket = new WebSocket("ws://127.0.0.1:" + port.toString()); sane.printlog = printlog; sane.socket.onopen = function(msg) { sane.socket.send(JSON.stringify({ 'func':'is_device_init' })); sane.socket.onmessage = function(msg) { if (sane.printlog) console.log(msg.data); var message = JSON.parse(msg.data); if ("is_device_init" == message['func']) { if (message['ret'] != 0) { sane.socket.send(JSON.stringify({ 'func':'init_device' })); } else { if (typeof sane.onInit === 'function') { sane.onInit(); } } } else if ("init_device" == message['func']) { if (0 == message['ret']) { if (typeof sane.onInit === 'function') { sane.onInit(); } } else { if (typeof sane.onErrorMessage === 'function') { sane.onErrorMessage(message['err_info']); } } } } } sane.socket.onclose = function(msg) { //alert('socket.onclose'); } sane.socket.onerror = function(msg) { //alert('socket.onerror'); } } sane.deinit = function() { if (sane.socket === null) { return; } sane.socket.close(); sane.socket = null; } sane.registerevent = function(eventName, callback) { if ("OnInit" == eventName) { sane.onInit = callback; } else if ("OnGetDevices" == eventName) { sane.onGetDevices = callback; } else if ("OnScanOneFileDone" == eventName) { sane.onScanOneFileDone = callback; } else if ("OnErrorMessage" == eventName) { sane.onErrorMessage = callback; } } sane.getdevices = function() { if (sane.socket === null) { return; } sane.socket.send(JSON.stringify({ 'func':'get_device_name_list' })); sane.socket.onmessage = function(msg) { if (sane.printlog) console.log(msg.data); var message = JSON.parse(msg.data); if ("get_device_name_list" == message['func']) { if (0 == message['ret']) { if (typeof sane.onGetDevices === 'function') { sane.onGetDevices(message['device_name_list']); } } else { if (typeof sane.onErrorMessage === 'function') { sane.onErrorMessage(message['err_info']); } } } } } sane.clear = function() { if (sane.socket === null) { return; } sane.socket.send(JSON.stringify({ 'func':'clear_global_file_save_path' })); sane.socket.onmessage = function(msg) { if (sane.printlog) console.log(msg.data); var message = JSON.parse(msg.data); if ("clear_global_file_save_path" == message['func']) { if (0 != message['ret']) { if (typeof sane.onErrorMessage === 'function') { sane.onErrorMessage(message['err_info']); } } } } } sane.scan = function(devname) { if (sane.socket === null) { return; } if (devname === "" || typeof devname === 'undefined') { return; } sane.socket.send(JSON.stringify({ 'func':'get_curr_device_name' })); sane.socket.onmessage = function(msg) { if (sane.printlog) console.log(msg.data); var message = JSON.parse(msg.data); if ("get_curr_device_name" == message['func']) { if (0 != message['ret']) { var openDeviceJsonData = {}; openDeviceJsonData.func = 'open_device'; openDeviceJsonData.device_name = devname; //alert(JSON.stringify(openDeviceJsonData)); sane.socket.send(JSON.stringify(openDeviceJsonData)); } else { if (message['device_name'] != devname) { sane.socket.send(JSON.stringify({ 'func':'close_device' })); } else { sane.socket.send(JSON.stringify({ 'func':'is_device_scanning' })); } } } else if ("close_device" == message['func']) { if (0 == message['ret']) { var openDeviceJsonData = {}; openDeviceJsonData.func = 'open_device'; openDeviceJsonData.device_name = devname; //alert(JSON.stringify(openDeviceJsonData)); sane.socket.send(JSON.stringify(openDeviceJsonData)); } else { if (typeof sane.onErrorMessage === 'function') { sane.onErrorMessage(message['err_info']); } } } else if ("open_device" == message['func']) { if (0 == message['ret']) { sane.socket.send(JSON.stringify({ 'func':'is_device_scanning' })); } else { if (typeof sane.onErrorMessage === 'function') { sane.onErrorMessage(message['err_info']); } } } else if ("is_device_scanning" == message['func']) { if (0 != message['ret']) { var setDeviceParamJsonData = {}; setDeviceParamJsonData.func = 'set_device_param'; setDeviceParamJsonData.device_param = []; var ele1 = {}; ele1.name = '颜色模式'; ele1.value = '24位彩色'; if (sane.mode == 'Gray') ele1.value = '256级灰度'; else if (sane.mode == 'Lineart') ele1.value = '黑白'; setDeviceParamJsonData.device_param.push(ele1); var ele2 = {}; ele2.name = '扫描页面'; ele2.value = '双面'; if (sane.source == 'Adf-front') ele2.value = '单面'; setDeviceParamJsonData.device_param.push(ele2); var ele3 = {}; ele3.name = '分辨率'; ele3.value = sane.resolution; setDeviceParamJsonData.device_param.push(ele3); //alert(JSON.stringify(setDeviceParamJsonData)); sane.socket.send(JSON.stringify(setDeviceParamJsonData)); } else { if (typeof sane.onErrorMessage === 'function') { sane.onErrorMessage('设备正在扫描中...'); } } } else if ("set_device_param" == message['func']) { if (0 == message['ret']) { var startScanJsonData = {}; startScanJsonData.func = 'start_scan'; startScanJsonData.get_base64 = false; if (sane.showbase64) startScanJsonData.get_base64 = true; //alert(JSON.stringify(startScanJsonData)); sane.socket.send(JSON.stringify(startScanJsonData)); } else { if (typeof sane.onErrorMessage === 'function') { sane.onErrorMessage(message['err_info']); } } } else if ("start_scan" == message['func']) { if (0 != message['ret']) { if (typeof sane.onErrorMessage === 'function') { sane.onErrorMessage(message['err_info']); } } } else if ("scan_begin" == message['func']) { // } else if ("scan_end" == message['func']) { // } else if ("scan_info" == message['func']) { if (message['is_error'] && typeof sane.onErrorMessage === 'function') { sane.onErrorMessage(message['info']); } } else if ("scan_image" == message['func']) { if (typeof sane.onScanOneFileDone === 'function') { sane.onScanOneFileDone("string", "jpg", message['image_path'], message['image_base64']); } } } }