Estimados
El mismo programa para la MC3000 funciona para la MC1000
Se que no es gran cosa, pero anexo el programa de como quedo.
Saludos
#include "fwce.ch"
#include "hbclass.ch"
#include "Directry.ch"
#define crlf chr(13)+chr(10)
#define CRLF chr(13)+chr(10)
#define CR chr(13)
#pragma comment (lib,"scnapi32")
FUNCTION Main()
* begin
PRIVATE oWnd
PRIVATE nCant := 1 , oCant
PRIVATE nCantUltimo := 1 , oCantUltimo
PRIVATE oMsg , oMsgUltimo
PRIVATE cBarCode := space(13) , oBarCode
PRIVATE nContador := 0 , oContador
PRIVATE nContador2 := 0 , oContador2
PRIVATE cCurDir := curdir()
PRIVATE aTemp_file := {}
IF StillRun("Toma-Facil++ V1.0")
Quit
ENDIF
if ! file( cCurDir+"INVENTA.DBF")
aadd( aTemp_file , { "BARCODE","C",13,0} )
aadd( aTemp_file , { "INVENTARIO" ,"N",08,0} )
aadd( aTemp_file , { "FECHA" ,"D",08,0} )
aadd( aTemp_file , { "HORA" ,"C",08,0} )
create_tmp_file( aTemp_file , cCurDir , "inventa.dbf" )
endif
if ! file( cCurDir+"INVENTA.DBF")
msginfo("Base de datos no pudo se creada.")
close all
return
endif
use ( cCurDir +"INVENTA.DBF" ) alias INVENTA
index on upper( barcode ) to ( cCurDir+"INVENTA.NTX" )
set order to 1
go top
DEFINE WINDOW oWnd TITLE "Toma-Facil++ V1.0"
@ 1.0,02 SAY "Cantidad :" SIZE 70, 20
@ 1.0,12 GET oCant VAR nCant picture "99999" VALID CheckCant() SIZE 40, 20
@ 2.3,02 SAY "Codigo :" SIZE 70, 20
@ 2.5,12 GET oBarCode VAR cBarcode picture "@!" VALID CheckBarCode() SIZE 120, 20
@ 04.0,02 SAY oMsgUltimo VAR "Ultimo : Cant:" SIZE 400, 20
@ 06.5,02 SAY oContador VAR "Piezas:" SIZE 200, 20
@ 08.0,02 SAY oContador2 VAR "Codigos:" SIZE 200, 20
* @ 08.5,02 SAY oMsg VAR "Msg :" SIZE 400, 20
@ 08.5,22 BUTTON "Terminar" SIZE 80, 30 ACTION oWnd:END()
ACTIVATE WINDOW oWnd on Init BuildTimer( oWnd )
RETURN NIL
procedure BuildTimer( oWnd )
* Begin
Define Timer oTimer Interval 1000 Action CheckBattery() OF oWnd
Activate Timer oTimer
return
function CheckBattery()
If BatteryLife () < 10
oMsg:VarPut( "!! Bateria Baja, Grabe su informacion.!!")
oMsg:refresh()
endif
return .t.
FUNCTION CheckCant()
* begin
LOCAL cFile , cRet , nActual := 0 , lReturn := .F.
IF oCant:nLastKey = 13
cBarCode := ""
cRet := SCAN_OPEN()
IF valtype( cRet ) = "C"
cRet := strtran( cRet , chr(0),"" )
FOR i := 1 TO len( cRet )
IF substr(cRet,i,1) $"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890+-/"
cBarCode += substr(cRet,i,1)
ENDIF
NEXT
ENDIF
cBarCode := alltrim(cBarcode)+space(13-len(alltrim(cBarcode)))
IF ! empty( cBarCode )
if INVENTA->(DbSeek( cBarcode))
replace INVENTA->inventario with INVENTA->inventario + nCant
else
INVENTA->(DbAppend())
replace INVENTA->barcode with cBarcode
replace INVENTA->inventario with nCant
endif
replace INVENTA->fecha with date()
replace INVENTA->hora with time()
nContador += nCant
oContador:VarPut("Piezas:"+transform(nContador,"999"))
oContador:refresh()
nContador2 += 1
oContador2:VarPut("Codigos:"+transform(nContador2,"999"))
oContador2:refresh()
oCant:VarPut(1)
oCant:refresh()
oBarCode:VarPut( space(15))
oBarCode:refresh()
oMsgUltimo:VarPut("Ultimo:"+alltrim(cBarCode)+" Cant:"+transform(nCant,"999"))
oMsgUltimo:refresh()
ENDIF
ELSE
lReturn := .T.
ENDIF
RETURN lReturn
FUNCTION CheckBarCode()
* begin
LOCAL cFile , cRet , nActual := 0 , lReturn := .F. , nHandle , cTxt
IF oBarCode:nLastKey = 38
oBarCode:oJump := oCant
RETURN .T.
ENDIF
if oBarCode:nLastKey = 13
cBarCode := alltrim(cBarcode)+space(13-len(alltrim(cBarcode)))
if INVENTA->(DbSeek( cBarcode))
replace INVENTA->inventario with INVENTA->inventario + nCant
else
INVENTA->(DbAppend())
replace INVENTA->barcode with cBarcode
replace INVENTA->inventario with nCant
endif
replace INVENTA->fecha with date()
replace INVENTA->hora with time()
nContador += nCant
oContador:VarPut("Piezas:"+transform(nContador,"999"))
oContador:refresh()
nContador2 += 1
oContador2:VarPut("Codigos:"+transform(nContador2,"999"))
oContador2:refresh()
oCant:VarPut(1)
oCant:refresh()
oBarCode:VarPut( space(15))
oBarCode:refresh()
oMsgUltimo:VarPut("Ultimo:"+cBarCode+" Cant:"+transform(nCant,"999"))
oMsgUltimo:refresh()
oCant:VarPut(1)
lReturn := .T.
endif
IF lReturn
oBarCode:oJump := oCant
ENDIF
RETURN lReturn
* Funciones que no corren en Symbol MC3000
FUNCTION cesetmenu() ; RETURN NIL
FUNCTION getmenu() ; RETURN NIL
FUNCTION readbitmap() ; RETURN NIL
FUNCTION palbmpread() ; RETURN NIL
****************************************************************************************************
#pragma BEGINDUMP
#include <hbapi.h>
#include <windows.h>
#include <Scancapi.h>
#include <mmsystem.h>
#include <uniqueid.h>
LPWSTR AnsiToWide( LPSTR );
#define BUFFER_SIZE 7095
#define DEFAULT_TIMEOUT 10000
LPSCAN_BUFFER lpScanBuffer = NULL;
BOOL bUseText = TRUE;
DWORD dwScanSize = 7095;
DWORD dwScanTimeout = 0;
HANDLE hScanner = NULL;
TCHAR szScannerName[MAX_PATH] = TEXT("SCN1:");
DWORD dwResult ;
CHAR Buffer ;
UINT uMsg ;
DWORD dwTimeout ;
HB_FUNC( SCAN_OPEN )
{
dwResult = SCAN_Open( szScannerName, &hScanner );
if ( dwResult == E_SCN_SUCCESS )
{
dwResult = SCAN_Enable( hScanner );
if ( dwResult == E_SCN_SUCCESS )
{
BOOL state = TRUE;
dwResult = SCAN_SetSoftTrigger(hScanner, &state);
if (dwResult == E_SCN_SUCCESS)
{
// allocate a new scan buffer
lpScanBuffer = SCAN_AllocateBuffer(TRUE /* data as chars */, BUFFER_SIZE);
if (lpScanBuffer)
{
dwResult = SCAN_ReadLabelWait(hScanner, lpScanBuffer, DEFAULT_TIMEOUT);
if (dwResult == E_SCN_SUCCESS)
{
hb_retclen( (char *)SCNBUF_GETDATA(lpScanBuffer),28);
}
}
SCAN_DeallocateBuffer(lpScanBuffer);
}
state = FALSE;
SCAN_SetSoftTrigger(hScanner, &state);
}
else
{
MessageBox( GetActiveWindow(), L"Error en SCAN_Enable", L"Ok", 0 );
}
}
else
{
MessageBox( GetActiveWindow(), L"Error en SCAN_Open", L"Ok", 0 );
}
}
HB_FUNC (STILLRUN)
{
HWND hWnd;
BOOL lRet = FALSE;
LPWSTR pW = AnsiToWide( hb_parc( 1 ) );
hWnd = FindWindow ( NULL,pW);
if (hWnd)
{
SetForegroundWindow ((HWND) ((ULONG) hWnd |0x01));
lRet = TRUE;
}
hb_retl( lRet );
}
HB_FUNC (BATTERYLIFE)
{
BOOL iRet;
SYSTEM_POWER_STATUS_EX status;
iRet = GetSystemPowerStatusEx (&status, TRUE);
hb_retnl ((INT) status.BatteryLifePercent);
}
HB_FUNC (BATTERYINFO)
{
BOOL iRet;
SYSTEM_POWER_STATUS_EX status;
iRet = GetSystemPowerStatusEx (&status, TRUE);
hb_reta (9);
hb_stornl ((INT) status.ACLineStatus, -1, 1);
hb_stornl ((INT) status.BatteryFlag, -1, 2);
hb_stornl ((INT) status.BatteryLifePercent, -1, 3);
hb_stornl ((ULONG) status.BatteryLifeTime, -1, 4);
hb_stornl ((ULONG) status.BatteryFullLifeTime, -1, 5);
hb_stornl ((INT) status.BackupBatteryFlag, -1, 6);
hb_stornl ((INT) status.BackupBatteryLifePercent, -1, 7);
hb_stornl ((ULONG) status.BackupBatteryLifeTime, -1, ;
hb_stornl ((ULONG) status.BackupBatteryFullLifeTime, -1, 9);
}
#pragma ENDDUMP
FUNCTION create_tmp_file( aFields , cPath , cName )
* Begin
LOCAL temp
temp := cPath
temp := temp+cName
DbCreate( temp , aFields , "DBFNTX" )
RETURN temp
MC1000
-
- Posts: 101
- Joined: Mon Oct 10, 2005 6:48 pm
- Location: Cd. Juarez Chihuahua
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Estimado Osvaldo(o quien me pueda ayudar):
Fijate que tenemos una MC1000 y estoy revisando tu codigo, mi pregunta es, ese codigo para que lenguaje de programacion aplica?, y la segunda seria, como lo cargas a la MC1000?, mucho te agradeceria esa informacion, para poder echar a andar el equipo, ya que el demo que trae no permite exportar el archivo que genera.
Muchas Gracias:
Fijate que tenemos una MC1000 y estoy revisando tu codigo, mi pregunta es, ese codigo para que lenguaje de programacion aplica?, y la segunda seria, como lo cargas a la MC1000?, mucho te agradeceria esa informacion, para poder echar a andar el equipo, ya que el demo que trae no permite exportar el archivo que genera.
Muchas Gracias:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
-
- Posts: 101
- Joined: Mon Oct 10, 2005 6:48 pm
- Location: Cd. Juarez Chihuahua
- Contact:
Miguel
1.- Lenguage de programacion harbour para Pocket PC
( este te convierte a codigo de el cual se compila en VCE )
2.- Libreria para Graficos FiveWin para Pocket PC
Para Navegar desde tu pc el la memoria del la MC1000
3.- Bajar el SDK de Symbol para dicha terminal
(Desde luego instalarlos)
4.- Bajar el ActiveSync de Microsoft
5.- Conectar el cargador o cradle via USB a tu PC y lo reconoce
En tu PC, haces tus programas, compilas y generas los exe para luego copiarlos a tu terminal donde los vas a ejecutar
Lo que se me hico laborioso en la MC1000 es que se batalla para activar el menu de windows y el teclado numerico que trae no ayuda mucho.
Ya que esta terminal no es touch screen, si es batallar.
BEETPEM
( Bueno Eso Es Todo Por El Momento )
Saludos
Osvaldo Ramirez
1.- Lenguage de programacion harbour para Pocket PC
( este te convierte a codigo de el cual se compila en VCE )
2.- Libreria para Graficos FiveWin para Pocket PC
Para Navegar desde tu pc el la memoria del la MC1000
3.- Bajar el SDK de Symbol para dicha terminal
(Desde luego instalarlos)
4.- Bajar el ActiveSync de Microsoft
5.- Conectar el cargador o cradle via USB a tu PC y lo reconoce
En tu PC, haces tus programas, compilas y generas los exe para luego copiarlos a tu terminal donde los vas a ejecutar
Lo que se me hico laborioso en la MC1000 es que se batalla para activar el menu de windows y el teclado numerico que trae no ayuda mucho.
Ya que esta terminal no es touch screen, si es batallar.
BEETPEM
( Bueno Eso Es Todo Por El Momento )
Saludos
Osvaldo Ramirez
Aplicación para MC1000 con uso de scanner
Hola a todos, tengo que desarrollar una aplicación para una MC1000, en la cual mediante el uso del scanner se debe poder controlar el stock de un depósito, se debe almacenar la cantidad de cada artículo. Baje sl SMDK para MC1000m estuve viendo varios ejemplos en Embedded Visual C++, el problema es que no se por donde empezar y buscando en la Web accedí a este foro, en el cual hay un ejemplo enviado por ramirezosvaldo, el el cual se hace uso del scanner y maneja DBfs (yo programa en Visual FoxPro). Lo que necesitaría es que me comentén el software que tengo que bajar para probar el código que envió ramirezosvaldo.
Yo tengo instalado lo siguiente:
ActiveSync 4.2
Embedded Visual C 4.0 y SP4
Windows CE Platform SDK for MC1000c42
Symbol Mobility Developer Kit (SMDK) for Embedded Visual 4.0 (eVC4) (SMDK-C-1.04.02)
Conecté la MC1000 a mi PC, copie un ejemplo y lo ejecuté.
Espero su ayuda, desde ya muchas gracias.
Saludos.
Mauricio.
Yo tengo instalado lo siguiente:
ActiveSync 4.2
Embedded Visual C 4.0 y SP4
Windows CE Platform SDK for MC1000c42
Symbol Mobility Developer Kit (SMDK) for Embedded Visual 4.0 (eVC4) (SMDK-C-1.04.02)
Conecté la MC1000 a mi PC, copie un ejemplo y lo ejecuté.
Espero su ayuda, desde ya muchas gracias.
Saludos.
Mauricio.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Mauricio,
Necesitas FWPPC que es un producto comercial de FiveTech Software y que puedes comprar desde www.fivetechsoft.com sección pedidos, gracias
Necesitas FWPPC que es un producto comercial de FiveTech Software y que puedes comprar desde www.fivetechsoft.com sección pedidos, gracias
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact: