添加立思辰web-api demo
This commit is contained in:
parent
da38f0ac86
commit
969b20a232
Binary file not shown.
After Width: | Height: | Size: 3.7 KiB |
|
@ -0,0 +1,365 @@
|
||||||
|
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']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,141 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Test!</title>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<script src="sane.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
<h1>Test!</h1>
|
||||||
|
<select id="devicenames" style="width:200px; height:25px;">
|
||||||
|
</select>
|
||||||
|
<input id="getdevices" type="button" value="获取设备列表" onclick="getdevices()" /><br>
|
||||||
|
<label for="showbase64">转换成Base64:</label>
|
||||||
|
<input type="checkbox" id="showbase64"><br>
|
||||||
|
<label for="source">单/双面:</label>
|
||||||
|
<select id="source">
|
||||||
|
<option value="Adf-front">Adf-front</option>
|
||||||
|
<option value="Adf-duplex" selected>Adf-duplex</option>
|
||||||
|
</select><br>
|
||||||
|
<label for="mode">颜色模式:</label>
|
||||||
|
<select id="mode">
|
||||||
|
<option value="Lineart">Lineart</option>
|
||||||
|
<option value="Gray">Gray</option>
|
||||||
|
<option value="Color" selected>Color</option>
|
||||||
|
</select><br>
|
||||||
|
<label for="resolution">分辨率:</label>
|
||||||
|
<input type="number" id="resolution" min="1" max="600" value="200" step="1"><br>
|
||||||
|
<input id="scan" type="button" value="扫描" onclick="scan()" /><br>
|
||||||
|
<input id="cleardata" type="button" value="清理" onclick="cleardata()" />
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img id="myCanvas" width='640' height='480' style="background-color: black;"/>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<input type="text" id="pathinfo" style="width:640px; height:40px;" />
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<input type="text" id="errinfo" style="width:640px; height:40px;" />
|
||||||
|
</p>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
function onInitFunc()
|
||||||
|
{
|
||||||
|
getdevices();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onGetDevicesFunc(devs)
|
||||||
|
{
|
||||||
|
//alert(JSON.stringify(devs));
|
||||||
|
|
||||||
|
var select = document.getElementById('devicenames');
|
||||||
|
select.innerHTML = "";
|
||||||
|
for (var i = 0; i < devs.length; ++i)
|
||||||
|
{
|
||||||
|
var option = document.createElement('option');
|
||||||
|
option.value = devs[i];
|
||||||
|
option.textContent = devs[i];
|
||||||
|
select.appendChild(option);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onScanOneFileDoneFunc(datatype, imgtype, imgpath, imgbase64data)
|
||||||
|
{
|
||||||
|
if (imgpath)
|
||||||
|
{
|
||||||
|
var pathinfo = document.getElementById('pathinfo');
|
||||||
|
pathinfo.value = imgpath;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (imgbase64data)
|
||||||
|
{
|
||||||
|
var myCanvas = document.getElementById("myCanvas");
|
||||||
|
myCanvas.src = imgbase64data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onErrorMessageFunc(errormsg)
|
||||||
|
{
|
||||||
|
var errinfo = document.getElementById('errinfo');
|
||||||
|
errinfo.value = errormsg;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getdevices()
|
||||||
|
{
|
||||||
|
var errinfo = document.getElementById('errinfo');
|
||||||
|
errinfo.value = "";
|
||||||
|
|
||||||
|
sane.getdevices();
|
||||||
|
}
|
||||||
|
|
||||||
|
function scan()
|
||||||
|
{
|
||||||
|
var pathinfo = document.getElementById('pathinfo');
|
||||||
|
pathinfo.value = "";
|
||||||
|
var errinfo = document.getElementById('errinfo');
|
||||||
|
errinfo.value = "";
|
||||||
|
var myCanvas = document.getElementById("myCanvas");
|
||||||
|
myCanvas.src = 'placeholder.png';
|
||||||
|
|
||||||
|
sane.showbase64 = document.getElementById('showbase64').checked;
|
||||||
|
sane.source = document.getElementById('source').value;
|
||||||
|
sane.mode = document.getElementById('mode').value;
|
||||||
|
sane.resolution = parseInt(document.getElementById('resolution').value, 10);
|
||||||
|
|
||||||
|
sane.scan(document.getElementById('devicenames').value);
|
||||||
|
}
|
||||||
|
|
||||||
|
function cleardata()
|
||||||
|
{
|
||||||
|
var errinfo = document.getElementById('errinfo');
|
||||||
|
errinfo.value = "";
|
||||||
|
|
||||||
|
sane.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
var pathinfo = document.getElementById('pathinfo');
|
||||||
|
pathinfo.value = "";
|
||||||
|
var errinfo = document.getElementById('errinfo');
|
||||||
|
errinfo.value = "";
|
||||||
|
var myCanvas = document.getElementById("myCanvas");
|
||||||
|
myCanvas.src = 'placeholder.png';
|
||||||
|
|
||||||
|
sane.registerevent("OnInit", onInitFunc);
|
||||||
|
sane.registerevent("OnGetDevices", onGetDevicesFunc);
|
||||||
|
sane.registerevent("OnScanOneFileDone", onScanOneFileDoneFunc);
|
||||||
|
sane.registerevent("OnErrorMessage", onErrorMessageFunc);
|
||||||
|
|
||||||
|
sane.init(38999, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onbeforeunload = function()
|
||||||
|
{
|
||||||
|
sane.deinit();
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue