添加立思辰web-api demo

This commit is contained in:
luoliangyi 2024-09-29 14:13:15 +08:00
parent da38f0ac86
commit 969b20a232
3 changed files with 506 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -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']);
}
}
}
}

View File

@ -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>