您的位置:程序门 -> vb -> 基础类



请懂bc的帮个忙!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请懂bc的帮个忙![已结贴,结贴人:hzc1]
发表于:2008-01-21 11:19:56 楼主
我有一个c的头文件,我需要将它翻译成vb的模块文件。
代码如下:
#define   stx 0x20
#define   ack 0x06
#define   nak 0x15
#define   etx 0x03

#define   seqnr 0
#define   command 1
#define   status 1
#define   length 2
#define   data 3

//mifare   error
#define   mi_ok 0
#define   mi_notagerr                                       1
#define   mi_empty 3
#define   mi_autherr 4
#define   mi_parityerr                 5
#define   mi_codeerr 6

#define   mi_sernrerr 8
#define   mi_notautherr 10
#define   mi_bitcounterr 11
#define   mi_bytecounterr 12
#define   mi_transerr 14
#define   mi_writeerr 15
#define   mi_increrr 16
#define   mi_decrerr 17
#define   mi_readerr 18
#define   mi_quit 30

//check   write   error
#define   mis_chk_ok                     0
#define   mis_chk_failed             1
#define   mis_chk_comperr           2


//typedef   unsigned   char   (callback*   lpzlgb_read)(unsigned   char,   unsigned   char*);

typedef   unsigned   char   (callback*   lpzlgb_request)(unsigned   char   ,unsigned   short   *);
typedef   unsigned   char   (callback*   lpzlgb_anticoll)(unsigned   char   ,unsigned   long   *);
typedef   unsigned   char   (callback*   lpzlgb_anticoll2)(unsigned   char   ,unsigned   char   ,unsigned   long   *);
typedef   unsigned   char   (callback*   lpzlgb_select)(unsigned   long   ,unsigned   char   *);
typedef   unsigned   char   (callback*   lpzlgb_authentication)(unsigned   char   ,unsigned   char   );
typedef   unsigned   char   (callback*   lpzlgb_authentication2)(unsigned   char   ,unsigned   char,unsigned   char);
typedef   unsigned   char   (callback*   lpzlgb_halt)(void);
typedef   unsigned   char   (callback*   lpzlgb_read)(unsigned   char   ,unsigned   char   *);
typedef   unsigned   char   (callback*   lpzlgb_write)(unsigned   char   ,unsigned   char   *);
typedef   unsigned   char   (callback*   lpzlgb_increment)(unsigned   char   ,long   *);
typedef   unsigned   char   (callback*   lpzlgb_decrement)(unsigned   char   ,long   *);
typedef   unsigned   char   (callback*   lpzlgb_writeval)(unsigned   char   ,long   );
typedef   unsigned   char   (callback*   lpzlgb_readval)(unsigned   char   ,long   *);
typedef   unsigned   char   (callback*   lpzlgb_changepwd)(unsigned   char   ,unsigned   char,unsigned   char   *);
typedef   unsigned   char   (callback*   lpzlgb_restore)(unsigned   char   );
typedef   unsigned   char   (callback*   lpzlgb_transfer)(unsigned   char   );
typedef   unsigned   char   (callback*   lpzlgb_value)(unsigned   char,unsigned   char,long   *,unsigned   char);
typedef   unsigned   char   (callback*   lpzlgb_load_key)(unsigned   char,unsigned   char,unsigned   char   *);
typedef   unsigned   char   (callback*   lpzlgb_reset)(unsigned   char);
typedef   unsigned   char   (callback*   lpzlgb_close)(void);
typedef   unsigned   char   (callback*   lpzlgb_config)(void);
typedef   unsigned   char   (callback*   lpzlgb_get_info)(unsigned   char   *);
typedef   unsigned   char   (callback*   lpzlgb_check_write)(unsigned   char,unsigned   char,unsigned   char,unsigned   char   *);
typedef   unsigned   char   (callback*   lpzlgb_set_control_bit)();
typedef   unsigned   char   (callback*   lpzlgb_clr_control_bit)();
typedef   unsigned   char   (callback*   lpzlgb_buzzer)(unsigned   char,unsigned   char,unsigned   char,unsigned   char);
typedef   unsigned   char   (callback*   lpzlgb_read_e2)(unsigned   char,unsigned   char   ,unsigned   char   *);
typedef   unsigned   char   (callback*   lpzlgb_write_e2)(unsigned   char,unsigned   char,unsigned   char   *);
typedef   unsigned   char   (callback   *lpzlgb_init)(int   ,   int   );
typedef   void   (callback*   lpzlgb_exit)(void);
发表于:2008-01-21 11:23:341楼 得分:20
上面的都是定义常量
下面类似typedef的是api函数指针
你得把库文件说出来不然不好给你定义

上面的#define   可以改成const
比如#define       stx   0x20   改成const   stx   =&h20
发表于:2008-01-21 11:27:012楼 得分:0
不好意思,库文件是zlg500b.dll
发表于:2008-01-21 11:31:213楼 得分:0
那我只给你翻译一个其他的你自己照着来就行了

typedef       unsigned       char       (callback*       lpzlgb_request)(unsigned       char       ,unsigned       short       *);  

private   declare   function   lpzlgb_request   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,byref   intbuffer   as   integer)   as   long

其中函数名(lpzlgb_request)必须和库中的名字一样区分大小写的
发表于:2008-01-21 11:42:194楼 得分:0
哦,那long   也对应long   是吧
还有这个,unsigned       char,long       *,这个怎么写呢?

不好意思,麻烦了
发表于:2008-01-21 11:48:475楼 得分:0
unsigned               char对应是byte
long   *表示指针,你改地址传递byref      
发表于:2008-01-21 11:53:476楼 得分:0
好,先谢谢,我先改改,有问题再请教,待会儿就结贴
发表于:2008-01-21 13:03:487楼 得分:0
请帮我瞧瞧,我改得对吗?谢了~~~~~~
'typedef   unsigned   char   (callback*   lpzlgb_request)(unsigned   char   ,unsigned   short   *);
private   declare   function   lpzlgb_request   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_anticoll)(unsigned   char   ,unsigned   long   *);
private   declare   function   lpzlgb_anticoll   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_select)(unsigned   long   ,unsigned   char   *);
private   declare   function   lpzlgb_select   lib   "zlg500b.dll"   (byval   bytbuffer   as   long,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_authentication)(unsigned   char   ,unsigned   char   );
private   declare   function   lpzlgb_authentication   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byval   intbuffer   as   byte)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_authentication2)(unsigned   char   ,unsigned   char,unsigned   char);
private   declare   function   lpzlgb_authentication2   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byval   intbuffer   as   byte,   byval   int2   as   byte)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_halt)(void);
private   declare   function   lpzlgb_halt   lib   "zlg500b.dll"   ()   as   long

'typedef   unsigned   char   (callback*   lpzlgb_read)(unsigned   char   ,unsigned   char   *);
private   declare   function   lpzlgb_read   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_write)(unsigned   char   ,unsigned   char   *);
private   declare   function   lpzlgb_write   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_increment)(unsigned   char   ,long   *);
private   declare   function   lpzlgb_increment   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_decrement)(unsigned   char   ,long   *);
private   declare   function   lpzlgb_decrenent   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_writeval)(unsigned   char   ,long   );
private   declare   function   lpzlgb_writeval   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_readval)(unsigned   char   ,long   *);
private   declare   function   lpzlgb_readval   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_changepwd)(unsigned   char   ,unsigned   char,unsigned   char   *);
private   declare   function   lpzlgb_changepwd   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byval   byt2   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_restore)(unsigned   char   );
private   declare   function   lpzlgb_restore   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_transfer)(unsigned   char   );
private   declare   function   lpzlgb_transfer   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_value)(unsigned   char,unsigned   char,long   *,unsigned   char);
private   declare   function   lpzlgb_value   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byval   byt2   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_load_key)(unsigned   char,unsigned   char,unsigned   char   *);
private   declare   function   lpzlgb_load_key   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_reset)(unsigned   char);
private   declare   function   lpzlgb_reset   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_close)(void);
private   declare   function   lpzlgb_close   lib   "zlg500b.dll"   ()   as   long

'typedef   unsigned   char   (callback*   lpzlgb_config)(void);
private   declare   function   lpzlgb_config   lib   "zlg500b.dll"   ()   as   long

'typedef   unsigned   char   (callback*   lpzlgb_get_info)(unsigned   char   *);
private   declare   function   lpzlgb_get_info   lib   "zlg500b.dll"   (byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_check_write)(unsigned   char,unsigned   char,unsigned   char,unsigned   char   *);
private   declare   function   lpzlgb_check_write   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byval   bytbuffer2   as   byte,   byval   bytbuffer3   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_set_control_bit)();
private   declare   function   lpzlgb_set_control_bit   lib   "zlg500b.dll"   ()   as   long

'typedef   unsigned   char   (callback*   lpzlgb_clr_control_bit)();
private   declare   function   lpzlgb_clr_control_bit   lib   "zlg500b.dll"   ()   as   long

'typedef   unsigned   char   (callback*   lpzlgb_buzzer)(unsigned   char,unsigned   char,unsigned   char,unsigned   char);
private   declare   function   lpzlgb_buzzer   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byval   bytbuffer2   as   byte,   byval   bytbuffer3   as   byte,   byval   bytbuffer4   as   byte)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_read_e2)(unsigned   char,unsigned   char   ,unsigned   char   *);
private   declare   function   lpzlgb_read_e2   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byval   bytbuffer2   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback*   lpzlgb_write_e2)(unsigned   char,unsigned   char,unsigned   char   *);
private   declare   function   lpzlgb_write_e2   lib   "zlg500b.dll"   (byval   bytbuffer   as   byte,   byval   bytbuffer2   as   byte,   byref   intbuffer   as   integer)   as   long

'typedef   unsigned   char   (callback   *lpzlgb_init)(int   ,   int   );
private   declare   function   lpzlgb_init   lib   "zlg500b.dll"   (byval   bytbuffer   as   integer,   byval   bytbuffer2   as   integer)   as   long

'typedef   void   (callback*   lpzlgb_exit)(void);
private   declare   function   lpzlgb_exit   lib   "zlg500b.dll"   ()   as   long
发表于:2008-01-21 14:01:488楼 得分:0
应该差不多了


快速检索

最新资讯
热门点击