c++

c++

Postby pymsoft » Fri Feb 09, 2007 11:06 am

Sigo con las funciones en C++, ahora tengo que lograr hacer que funcione el lector de codigos de barras.

Code: Select all  Expand view
#pragma BEGINDUMP
#include "c:\lavwin\teve\mobitron\inc\Barcode.h"

static CBarcode * bar = NULL;

// BARCODE //

HB_FUNC( BAR_POWERON ) // param: hWnd
{
   if( bar == NULL )
   {
      bar = new CBarcode;
   }
   return bar->Bar_PowerOn( hb_parnl(1) )
}


HB_FUNC( BAR_POWEROFF ) // param: hWnd
{
   if( bar == NULL )
   {
      bar = new CBarcode;
   }
   return bar->Bar_PowerOff( hb_parnl(1) )
}


#pragma ENDDUMP





Luego de esto, me da error al compilar:

teve.c
c:\lavwin\teve\mobitron\inc\barcode.h(12) : fatal error C1189: #error : include
'stdafx.h' before including this file for PCH



Entiendo que tengo que poner ese include que me falta.
Lo busco en los ejemplos de C++ que me proporcionaron y lo agrego.

luego de eso me da este error:


c:\lavwin\teve\mobitron\inc\stdafx.h(17) : fatal error C1083: Cannot open include file: 'afxwin.h': No such file or directory




Muy bien, lo busco por todo el disco y lo encuentro:
en esta carpeta: C:\Programmi\Windows CE Tools\wce400\STANDARDSDK\Mfc\Include


lo agrego y me da este error:



c:\lavwin\teve\mobitron\inc\stdafx.h(17) : fatal error C1083: Cannot open includ
e file: 'afxwin.h': Invalid argument




Alguna idea al respecto?

Gracias
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

Postby Antonio Linares » Fri Feb 09, 2007 11:58 am

Prueba a añadir este flag al compilar con clarm.exe

-IC:\Programmi\Windows CE Tools\wce400\STANDARDSDK\Mfc\Include
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42078
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby pymsoft » Fri Feb 09, 2007 1:20 pm

bueno, el mensaje de error cambió:

teve.c
c:\programmi\windows ce tools\wce400\standardsdk\mfc\include\afxv_w32.h(137) : fatal error C1083: Cannot open include file: 'zmouse.h': No such file or directory



El tema es que ese archivo si que no lo tengo por ningun lado.
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

Postby pymsoft » Fri Feb 09, 2007 4:07 pm

creando un zmouse.h sin nada dentro (visto que sirve solo para la ruedita del mouse), me da este error:


c:\programmi\windows ce tools\wce400\standardsdk\mfc\include\afxv_cpu.h(23) : fatal error C1189: #error : afxv_cpu.h is only for MIPS R4000, DEC AXP, and IBM PowerPC builds



gracias
Pedro Gonzalez
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

Postby Antonio Linares » Fri Feb 09, 2007 6:17 pm

Pedro,

Que contiene Barcode.h ?

La idea es modificarlo para que sólo tenga la declaración de la clase que vas a usar
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42078
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby pymsoft » Mon Feb 12, 2007 10:10 am

Este es el contenido de barcode.h

Code: Select all  Expand view
// Barcode.h : main header file for the BARCODE DLL
//

#if !defined(AFX_BARCODE_H__C9134DC0_653B_4807_B317_1D4B2A6971D8__INCLUDED_)
#define AFX_BARCODE_H__C9134DC0_653B_4807_B317_1D4B2A6971D8__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#ifndef __AFXWIN_H__
   #error include 'stdafx.h' before including this file for PCH
#endif

#include "resource.h"      // main symbols
#include "../inc/BarcodeType.h"

/////////////////////////////////////////////////////////////////////////////
// CBarcodeApp
// See Barcode.cpp for the implementation of this class
//
class __declspec(dllexport) CBarcode
{
public:
   INT Bar_PortOpen(HWND hWnd);
   INT Bar_PortClose(HWND hWnd);
   INT DeSelectScanner(HANDLE hPwr, HWND hWnd);
   INT ReadyForBarIO();
   INT Bar_ScanData(int *sType, char *sData, int *iSize);
   INT CloseScannerDeviceHandle();
   INT Bar_ScannerEnd(HANDLE hPwr, HWND hWnd);
   INT Bar_ScannerStart(HANDLE hPwr, HWND hWnd);
   INT ClosePrtDeviceHandle();
   INT SelectPrinter(HANDLE hPwr, HANDLE hWnd);
   INT OpenPrtDevice();
   HANDLE GetPrtDeviceHandle();
   INT Bar_PowerOff(HWND hWnd);
   INT SelectScanner(HANDLE hPwr, HWND hWnd);
   INT OpenScannerDevice();
   HANDLE GetScannerDeviceHandle();
   int Bar_PowerOn(HWND hWnd);
   CBarcode();
   virtual ~CBarcode();
};

class CBarcodeApp : public CWinApp
{
public:
   CBarcodeApp();

// Overrides
   // ClassWizard generated virtual function overrides
   //{{AFX_VIRTUAL(CBarcodeApp)
   public:
   virtual int ExitInstance();
   virtual BOOL InitInstance();
   //}}AFX_VIRTUAL

   //{{AFX_MSG(CBarcodeApp)
      // NOTE - the ClassWizard will add and remove member functions here.
      //    DO NOT EDIT what you see in these blocks of generated code !
   //}}AFX_MSG
   DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft eMbedded Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_BARCODE_H__C9134DC0_653B_4807_B317_1D4B2A6971D8__INCLUDED_)




y este es el contenido de barcodetype.h


Code: Select all  Expand view

#define NOT_APPLICABLE            11
#define B_CODE_39                  12
#define B_CODABAR                  13
#define B_CODE_128               14
#define B_DISCRETE_2D5            15      
#define B_IATA_2D5               16
#define B_INTERLEAVED_2D5            17
#define B_CODE_93                  18
#define B_UPC_A                  19
#define B_UPC_A_2SUP               20
#define B_UPC_A_5SUP               21
#define   B_UPC_E0                  22
#define B_UPC_E0_2SUP               23
#define B_UPC_E0_5SUP               24
#define B_EAN_8                  25
#define B_EAN_8_2SUP               26
#define B_EAN_8_5SUP               27
#define B_EAN_13_5SUP               28
#define B_EAN_13                  29
#define B_EAN_13_2SUP               30
#define B_MSI_PLESSEY               31
#define B_EAN_128                  32
#define B_UPC_E1                  33
#define B_UPC_E1_2SUP               34
#define B_UPC_E1_5SUP               35
#define B_TRIOPTIC_CODE_39         36
#define B_BOOKLAND_EAN            37
#define B_COUPON_CODE               38
#define B_PDF417                  39
#define DATA_ERROR               40
#define NO_RESPONSE               41
#define NOT_SUPPORTED            42



Gracias
Pedro Gonzalez
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

Postby Antonio Linares » Mon Feb 12, 2007 11:42 am

Pedro,

Prueba a quitar los includes que hay dentro de barcode.h y compila a ver que errores aparecen
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42078
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby pymsoft » Mon Feb 12, 2007 12:30 pm

Antonio, los errores son los siguientes:





c:\lavwin\teve\mobitron\inc\barcode.h(47) : error C2504: 'CWinApp' : base class
undefined
c:\lavwin\teve\mobitron\inc\barcode.h(64) : error C2143: syntax error : missing
';' before '}'
teve.prg(4079) : error C2440: 'initializing' : cannot convert from 'const int' t
o 'class CBarcode'
No constructor could take the source type, or constructor overload resol
ution was ambiguous
teve.prg(4153) : error C2678: binary '==' : no operator defined which takes a le
ft-hand operand of type 'class CBarcode' (or there is no acceptable conversion)
teve.prg(4155) : error C2679: binary '=' : no operator defined which takes a rig
ht-hand operand of type 'class CBarcode *' (or there is no acceptable conversion
)
teve.prg(4158) : error C2143: syntax error : missing ';' before 'return'
teve.prg(4158) : error C2819: type 'CBarcode' does not have an overloaded member
'operator ->'
c:\lavwin\teve\mobitron\inc\barcode.h(23) : see declaration of 'CBarcode
'
teve.prg(4158) : error C2227: left of '->Bar_PowerOn' must point to class/struct
/union
teve.prg(4159) : error C2143: syntax error : missing ';' before '}'
teve.prg(4162) : error C2678: binary '==' : no operator defined which takes a le
ft-hand operand of type 'class CBarcode' (or there is no acceptable conversion)
teve.prg(4164) : error C2679: binary '=' : no operator defined which takes a rig
ht-hand operand of type 'class CBarcode *' (or there is no acceptable conversion
)
teve.prg(4167) : error C2143: syntax error : missing ';' before 'return'
teve.prg(4167) : error C2819: type 'CBarcode' does not have an overloaded member
'operator ->'
c:\lavwin\teve\mobitron\inc\barcode.h(23) : see declaration of 'CBarcode
'
teve.prg(4167) : error C2227: left of '->Bar_PowerOff' must point to class/struc
t/union
teve.prg(4168) : error C2143: syntax error : missing ';' before '}'




Saludos


P.D. Si quieres puedo enviarte los .h, las .lib con un programa que incluya solo las llamadas a funciones contenidas allí.
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

Postby pymsoft » Mon Feb 12, 2007 1:28 pm

Ahora dejé solo esta parte de codigo para que fuera todo mas claro:

Code: Select all  Expand view

#include "FWCE.ch"


FUNCTION Main()

  msginfo( Bar_PowerOn() )

RETURN NIL



#pragma BEGINDUMP

#include "hbapi.h"
#include "windows.h"
#include "c:\lavwin\teve\mobitron\inc\Barcode.h"


static CBarcode * bar = NULL;

// BARCODE //

HB_FUNC( BAR_POWERON ) // param: hWnd
{
   if( bar == NULL )
   {
      bar = new CBarcode;
   }
   Sleep(30);
   bar->Bar_PowerOn( (HWND) hb_parnl( 1 ) );
}


#pragma ENDDUMP





Ahora el error es el siguiente:





laser.c
c:\lavwin\teve\mobitron\inc\barcode.h(47) : error C2504: 'CWinApp' : base class undefined
c:\lavwin\teve\mobitron\inc\barcode.h(64) : error C2143: syntax error : missing ';' before '}'




Saludos
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

Postby Antonio Linares » Mon Feb 12, 2007 2:00 pm

Quita esta declaración del fichero de cabecera ya que no vas a usar esta clase:
Code: Select all  Expand view
class CBarcodeApp : public CWinApp
{
public:
   CBarcodeApp();

// Overrides
   // ClassWizard generated virtual function overrides
   //{{AFX_VIRTUAL(CBarcodeApp)
   public:
   virtual int ExitInstance();
   virtual BOOL InitInstance();
   //}}AFX_VIRTUAL

   //{{AFX_MSG(CBarcodeApp)
      // NOTE - the ClassWizard will add and remove member functions here.
      //    DO NOT EDIT what you see in these blocks of generated code !
   //}}AFX_MSG
   DECLARE_MESSAGE_MAP()
};
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42078
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby pymsoft » Mon Feb 12, 2007 4:30 pm

Antonio, resuelto este problema de la clase no usada.... tengo esta funcion para hacer el wrapper, pero no se como:


INT Bar_ScanData(int *sType, char *sData, int *iSize);

bar.Bar_ScanData(&sBarcodeType, &sBarcodeData[0], &iBarcodeSize);




hice asi:

Code: Select all  Expand view
  HB_FUNC( SCANDATA ) // param: sBarcCodeType, sBarcodeData, iBarcodeSize
  {
//     bar->Bar_ScanData(&sBarcodeType, &sBarcodeData[0], &iBarcodeSize);
     bar->Bar_ScanData( hb_parni(1), hb_parc(2), hb_parni(3) );
  }





pero claramente, no llega a compilar dandome este error:



teve.prg(4254) : error C2664: 'Bar_ScanData' : cannot convert parameter 1 from 'int' to 'int *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast




Gracias
Pedro Gonzalez
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

Postby Antonio Linares » Tue Feb 13, 2007 9:37 am

Prueba así. Has de pasar los parámetros por referencia:
Code: Select all  Expand view
HB_FUNC( SCANDATA ) // param: sBarcCodeType, sBarcodeData, iBarcodeSize
{
   int sBarcCodeType = hb_parni(1);
   char * sBarcodeData = hb_parc(2);
   int iBarcodeSize = hb_parni(3);

   bar->Bar_ScanData( &sBarcodeType, &sBarcodeData[0], &iBarcodeSize );

  hb_storni( sBarcodeType, 1 );
  hb_storc( sBarcodeData, 2 );
  hb_storni( iBarcodeSize, 3 );
}

Estás seguro de que es &sBarcodeData[0] ? Lo lógico sería sBarcodeData
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42078
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby pymsoft » Tue Feb 13, 2007 10:09 am

Antonio, muchas gracias, ya verè ahora de hacerlo funcionar.


este es el ejemplo del manual:


Code: Select all  Expand view
Example using Scan Key

CBarcode bar;
BOOL CBarAppDlg::PreTranslateMessage(MSG* pMsg) 
{
char sBarcodeData[128];
int iBarcodeSize, sBarcodeType;
int iRetValue;
TCHAR cKeyCode;
HANDLE hScannerPwr;
UINT iMessage;

  iMessage = pMsg->message;
cKeyCode = pMsg->wParam;

  if (iMessage == WM_KEYUP) {
  switch (cKeyCode)
  {
   case VK_F3:
   case VK_F4:
    hScannerPwr = bar.GetScannerDeviceHandle();
    bar.Bar_ScannerStart(hScannerPwr, m_hWnd);
    iRetValue = bar.Bar_ScanData(&sBarcodeType,
&sBarcodeData[0], &iBarcodeSize);
    bar.Bar_ScannerEnd(hScannerPwr, m_hWnd);
    bar.CloseScannerDeviceHandle();
    break;
  } 

return CDialog::PreTranslateMessage(pMsg);
}



Saludos
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

Postby pymsoft » Tue Feb 13, 2007 12:48 pm

Antonio, muchas gracias por tu ayuda.

Ya puedo leer codigos de barra desde mi programa en FWH.

:lol:
Pedro Gonzalez
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia


Return to FiveWin para Pocket PC

Who is online

Users browsing this forum: No registered users and 22 guests