code_app/test/webservice/lsc-demo/sane.js

365 lines
6.9 KiB
JavaScript
Raw Normal View History

2024-09-29 06:13:15 +00:00
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']);
}
}
}
}