365 lines
6.9 KiB
JavaScript
365 lines
6.9 KiB
JavaScript
|
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']);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|