Hola,
Estoy probando una tableta para la captura de firma, como la que tienen los bancos, pero no se por donde empezar
¿Alguien la está utilizando?
Algún ejemplo, o ayuda será bienvenido
Gracias
Turbo Incremental Link 6.70 Copyright (c) 1997-2014 Embarcadero Technologies, Inc.
Error: 'X:\CEPP\FUENTES\FW\WACOM\LIB\W32\WGSSSTU.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
Function main()
pruebaC()
Msginfo("fin")
RETURN NIL
STATIC FUNCTION PruebaC()
Testear()
RETURN NIL
FUNCTION Testear()
Local x
x := WgssSTU():UsbDevices() // Array de tablets conectadas
RETURN NIL
DLL FUNCTION WgssSTU() AS LONG PASCAL LIB "wgssSTU.DLL"
//DLL FUNCTION WgssSTU() AS LONG PASCAL FROM "WgssSTU" LIB "wgssSTU.dll"
*/
<html>
<head>
<title>SendToSTU</title>
<script type="text/javascript">
<!--
// ==========================================================================
// Utilities
//
function print(txt) {
var txtDisplay = document.getElementById("txtDisplay");
txtDisplay.value += txt + "\n";
txtDisplay.scrollTop = txtDisplay.scrollHeight; // scroll to end
}
function dec2hex(i) {
return( "0x" + ((i<16)?"0":"") + i.toString(16).toUpperCase()); // add leading zero if < 16 e.g. 0x0F
}
function DisplayImage() {
var filename = document.getElementById("imgFilename").value;
document.getElementById("idImg").src = filename;
}
function SendToSTU() {
DisplayImage();
var filename = document.getElementById("imgFilename").value;
print("SendToSTU: " + filename);
sdkSendToSTU(filename);
}
function getCurrentDir() {
var scriptFullName = window.location.pathname; // gets /c:/pathname/file.html
scriptFullName = scriptFullName.replace(/\//g,"\\"); //convert all '/' to ''
var scriptPath = scriptFullName.substring( 1, scriptFullName.lastIndexOf("\\")+1 ); // c:\pathname\
scriptPath = unescape(scriptPath); // change %20 back to space
return( scriptPath );
}
function OnLoad() {
document.getElementById("imgFilename").value = getCurrentDir() + "640x480.png"; // default to STU-500
DisplayImage();
print("Use the [Browse] button to select an image file. Sample images are included in this folder:");
print( getCurrentDir() );
print("To display the image on an STU press [Send Image to STU]");
}
// ==========================================================================
// SDK Application code
//
// enumerations copied from SDK\COM\doc with reformatted syntax
enumEncodingFlag = { // encodingFlag reports what the STU device is capable of:
EncodingFlag_Zlib : 0x01,
EncodingFlag_1bit : 0x02, // mono
EncodingFlag_16bit : 0x04, // 16bit colour (520/530)
EncodingFlag_24bit : 0x08 // 24bit colour (530)
}
enumEncodingMode = { // selects image transformation
EncodingMode_1bit : 0x00, // mono display STU300/430/500
EncodingMode_1bit_Zlib : 0x01, // use zlib compression (not automated by the SDK – the application code has to compress the data)
EncodingMode_16bit : 0x02, // colour stu-520 & 530
EncodingMode_24bit : 0x04, // colour STU 530
// tablet.supportsWrite() is true if the bulk driver is installed and available
EncodingMode_1bit_Bulk : 0x10, // use bulk driver (520/530)
EncodingMode_16bit_Bulk : 0x12,
EncodingMode_24bit_Bulk : 0x14,
EncodingMode_Raw : 0x00,
EncodingMode_Zlib : 0x01,
EncodingMode_Bulk : 0x10,
EncodingMode_16bit_565 : 0x02
}
enumScale = {
Scale_Stretch : 0,
Scale_Fit : 1,
Scale_Clip : 2
}
var tablet;
var protocolHelper;
function sdkSendToSTU(filename) {
if (connect())
{
try
{
var caps = tablet.getCapability();
var info = tablet.getInformation();
print("STU model: " + info.modelName);
var pId = tablet.getProductId();
print("Product id: "+ dec2hex(pId));
var encodingFlag = protocolHelper.simulateEncodingFlag(pId, caps.encodingFlag);
print("encodingFlag: " + dec2hex(encodingFlag));
if ((encodingFlag & enumEncodingFlag.EncodingFlag_24bit) != 0)
{
encodingMode = tablet.supportsWrite() ? enumEncodingMode.EncodingMode_24bit_Bulk : enumEncodingMode.EncodingMode_24bit;
}
else if ((encodingFlag & enumEncodingFlag.EncodingFlag_16bit) != 0)
{
encodingMode = tablet.supportsWrite() ? enumEncodingMode.EncodingMode_16bit_Bulk : enumEncodingMode.EncodingMode_16bit;
}
else
{
// assumes 1bit is available
encodingMode = enumEncodingMode.EncodingMode_1bit;
}
print("encodingMode: " + dec2hex(encodingMode));
var stuImage = protocolHelper.resizeAndFlatten(unescape(filename), 0, 0, 0, 0, caps.screenWidth, caps.screenHeight, encodingMode, enumScale.Scale_Fit, false, 0);
tablet.writeImage(encodingMode, stuImage); // uses the colour mode flags in encodingMode
tablet.disconnect();
}
catch(e)
{
print("Exception: " + e.message);
}
}
}
function connect()
{
var connected = false;
try
{
var usbDevices;
usbDevices = new ActiveXObject("WacomGSS.STU.UsbDevices");
var count = usbDevices.Count;
if (count > 0)
{
var usbDevice = usbDevices.Item(0); // use the first STU found in the list.
if (tablet == null)
{
protocolHelper = new ActiveXObject("WacomGSS.STU.ProtocolHelper");
tablet = new ActiveXObject("WacomGSS.STU.Tablet");
}
var r1 = tablet.usbConnect(usbDevice, false);
var r = r1.value;
if (r == 0)
{
connected = true;
}
else
{
print("Connect failed");
}
}
else
{
print("No devices connected");
}
usbDevices = null;
}
catch (e)
{
print("Exception: "+ e.message);
}
return connected;
}
-->
</script>
</head>
<body onload="OnLoad()">
<h1>SendToSTU</h1>
<table>
<tr>
<td style="border:1px solid black;width:250pt;height:190pt;">
<img id="idImg" style="width:250pt;"/>
</td>
<td>
<input type="button" value="Send Image to STU" style="width:40mm;margin-left:5mm" onClick="SendToSTU();"
title="Sends the image file to the STU display"/>
</td>
</tr>
</table>
<p/>
<input type="hidden" id="imgFilename" />
<input type="file" id="browseFile" size=80 onchange="imgFilename.value=this.value;DisplayImage();" />
<br/><br/>
<textarea cols="125" rows="15" id="txtDisplay"></textarea>
</body>
</html>
#include "FiveWin.Ch"
#define NTRIM(n) ( LTrim( Str( n ) ) )
//#define print(x) msginfo(x)
#translate print( <v1>[, <v2>]) => ;
depura( <v1> [, <v2> ] )
STATIC UsbDevices, usbDevice, tablet, protocolHelper, r, r1
//------------------------------------------------------------------------//
Function main()
If MsgNoYes("Borrar")
BorrarTablet()
Else
EnviarImagen()
EndIf
print("fin")
RETURN NIL
//------------------------------------------------------------------------//
Function Connect()
Local nCount //, r1, r
//Local usbDevices, nCount
//Local usbDevice, tablet, protocolHelper, r1, r
Local Connected := .F.
nCount := 0
TRY
usbDevices = createObject("WacomGSS.STU.UsbDevices")
nCount := usbDevices:Count
CATCH
Msginfo("Falta el driver de conexion STU")
RETURN Connected
END
If nCount ==0
WindAviso("No se localizaron dispositivos STU")
Return Connected
EndIf
with object usbDevices
usbDevice := :Item(0)
End
protocolHelper = createObject("WacomGSS.STU.ProtocolHelper")
tablet = createObject("WacomGSS.STU.Tablet")
r1 = tablet:usbConnect(usbDevice, 0)
r = r1:value
If r = 0
Connected = .t.
Else
WindAviso("No se pudo conectar")
EndIf
Return Connected
//------------------------------------------------------------------------//
#define EncodingFlag_Zlib 0x01
#define EncodingFlag_1bit 0x02 // mono
#define EncodingFlag_16bit 0x04 // 16bit colour (520/530)
#define EncodingFlag_24bit 0x08 // 24bit colour (530)
/*
enumEncodingFlag = { // encodingFlag reports what the STU device is capable of:
EncodingFlag_Zlib : 0x01,
EncodingFlag_1bit : 0x02, // mono
EncodingFlag_16bit : 0x04, // 16bit colour (520/530)
EncodingFlag_24bit : 0x08 // 24bit colour (530)
}
*/
#define EncodingMode_1bit 0x00 // mono display STU300/430/500
#define EncodingMode_1bit_Zlib 0x01 // use zlib compression (not automated by the SDK – the application code has to compress the data)
#define EncodingMode_16bit 0x02 // colour stu-520 & 530
#define EncodingMode_24bit 0x04 // colour STU 530
// tablet.supportsWrite() is true if the bulk driver is installed and available
#define EncodingMode_1bit_Bulk 0x10 // use bulk driver (520/530)
#define EncodingMode_16bit_Bulk 0x12
#define EncodingMode_24bit_Bulk 0x14
#define EncodingMode_Raw 0x00
#define EncodingMode_Zlib 0x01
#define EncodingMode_Bulk 0x10
#define EncodingMode_16bit_565 0x02
/*
enumEncodingMode = { // selects image transformation
EncodingMode_1bit : 0x00, // mono display STU300/430/500
EncodingMode_1bit_Zlib : 0x01, // use zlib compression (not automated by the SDK – the application code has to compress the data)
EncodingMode_16bit : 0x02, // colour stu-520 & 530
EncodingMode_24bit : 0x04, // colour STU 530
// tablet.supportsWrite() is true if the bulk driver is installed and available
EncodingMode_1bit_Bulk : 0x10, // use bulk driver (520/530)
EncodingMode_16bit_Bulk : 0x12,
EncodingMode_24bit_Bulk : 0x14,
EncodingMode_Raw : 0x00,
EncodingMode_Zlib : 0x01,
EncodingMode_Bulk : 0x10,
EncodingMode_16bit_565 : 0x02
}
*/
#define Scale_Stretch 0
#define Scale_Fit 1
#define Scale_Clip 2
/*
enumScale = {
Scale_Stretch : 0,
Scale_Fit : 1,
Scale_Clip : 2
}
*/
#define false 0
FUNCTION BorrarTablet()
If !Connect()
RETURN NIL
EndIf
print("Tablet conectada")
tablet:setClearScreen()
tablet:disconnect()
print("tablet borrada")
return nil
FUNCTION unescape(xValue) ; RETURN xValue
FUNCTION EnviarImagen()
Memvar oErr
Local caps, info, pId, encodingFlag, encodingMode, stuImage, filename
BorrarTablet()
If !Connect()
RETURN NIL
EndIf
print("Tablet conectada")
caps = tablet:getCapability()
info = tablet:getInformation()
print("STU model: " + info:modelName)
pId = tablet:getProductId()
print("Product id: "+ dec2hex(pId))
encodingFlag = protocolHelper:simulateEncodingFlag(pId, caps:encodingFlag)
print("encodingFlag: " + dec2hex(encodingFlag))
If nAnd(encodingFlag, EncodingFlag_24bit ) != 0
encodingMode = iif(tablet:supportsWrite(), EncodingMode_24bit_Bulk, EncodingMode_24bit)
elseif nAnd(encodingFlag , EncodingFlag_16bit) != 0
encodingMode = iif(tablet:supportsWrite(), EncodingMode_16bit_Bulk, EncodingMode_16bit)
else
encodingMode = EncodingMode_1bit
EndIf
print(encodingflag)
print(EncodingFlag_24bit )
print(nAnd(EncodingFlag, EncodingFlag_Zlib ))
print(nAnd(EncodingFlag, EncodingFlag_1bit ))
print(nAnd(EncodingFlag, EncodingFlag_16bit))
print(nAnd(EncodingFlag, EncodingFlag_24bit ))
print(tablet:supportsWrite(), "suportswrite")
print("encodingMode: " + dec2hex(encodingMode))
filename := unescape("imagen.jpg")
stuImage = protocolHelper:resizeAndFlatten(filename, 0, 0, 0, 0, caps:screenWidth, caps:screenHeight, encodingMode, Scale_Fit, .f., 0)
print(filename, "filename")
print(caps:screenWidth, "screenwidth")
print(caps:screenHeight, "screenhigh")
print(encodingMode, "encondingmode")
print(Scale_Fit, "ScaleFit")
TRY
tablet:writeImage(encodingMode, stuImage) // uses the colour mode flags in encodingMode
CATCH oErr
Msginfo("Error en la escritura de la tablet")
END
tablet:disconnect()
RETURN NIL
filename := "imagen.jpg"
stuImage = protocolHelper:resizeAndFlatten(filename, 0, 0, 0, 0, caps:screenWidth, caps:screenHeight, encodingMode, Scale_Fit, .f., 0)
TRY
tablet:writeImage(encodingMode, stuImage) // uses the colour mode flags in encodingMode
CATCH oErr
Msginfo("Error en la escritura de la tablet")
END
mastintin wrote:¿ Que tipo de captura de firma necesitas ? .
Me refiero si simplemente es capturar una imagen de firma o se trata de que se "realmente segura" con todo lo que aporta wacom, de seguridad en trazos, certificado,fechado , etc
Yo me peleé con una de un amigo hace como un año.
Si lo que buscas requiere "seguridad" la opción facil es usar el programa de generacíon de pdf que trae la tableta, te permite personalizar ciertos parametros ( limitados) pero te genera "pdf seguros" con un monton de información sobre la firma. Si necnesitas personalizarlo mucho mas tienes que tirar del sdk que ademas creo que era de pago .
Para una cosa simple donde quieras recoger los trazos tienes un sdk mas simple con ejemplos en varios idiomas de programación. Yo lo intente intentando crear un wrapper a harbour pero no funcionaba como debería.
La solución final para mi ( que solo pretendía capturar la firma ) fue coger el ejemplo que tienes en Delphi y modificarlo un poco para poner el logo de fondo de pantalla y los tesxto que quería mostar y que generase una imagen de la firma .
Es un exe delphi con unos pocos parametros en un fichero ini. Se llama desde el programa fwh.exe , se espera a que genere el archivo imagen de la firma y se cierra el programa y se devuelve el control al exe fwh para que genere el pdf con la firma ...
AngelSalom wrote:Hola mastintin , ¿sería posible que me pasaras el fuente Delphi modificado? Me basta con recoger la firma sin más florituras.
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 61 guests