c++

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

c++

Post by pymsoft »

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

Code: Select all | Expand

#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
Antonio Linares
Site Admin
Posts: 42561
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 35 times
Been thanked: 80 times
Contact:

Post by Antonio Linares »

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
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

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
Contact:

Post by pymsoft »

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
Antonio Linares
Site Admin
Posts: 42561
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 35 times
Been thanked: 80 times
Contact:

Post by Antonio Linares »

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
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

Este es el contenido de barcode.h

Code: Select all | Expand

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

#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
Antonio Linares
Site Admin
Posts: 42561
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 35 times
Been thanked: 80 times
Contact:

Post by Antonio Linares »

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
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

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
Contact:

Post by pymsoft »

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

Code: Select all | Expand

#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
Antonio Linares
Site Admin
Posts: 42561
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 35 times
Been thanked: 80 times
Contact:

Post by Antonio Linares »

Quita esta declaración del fichero de cabecera ya que no vas a usar esta clase:

Code: Select all | Expand

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
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

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

  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
Antonio Linares
Site Admin
Posts: 42561
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 35 times
Been thanked: 80 times
Contact:

Post by Antonio Linares »

Prueba así. Has de pasar los parámetros por referencia:

Code: Select all | Expand

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
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

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


este es el ejemplo del manual:


Code: Select all | Expand

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
Contact:

Post by pymsoft »

Antonio, muchas gracias por tu ayuda.

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

:lol:
Pedro Gonzalez
Post Reply