怎样在vfp中使用动态连接库(高分悬赏750分)

谁能教我怎样在vfp中使用动态连接库控制硬件设备,我有一台泰兴50u omr光学符号阅读器,想使用vfp编程控制,如果那位大侠会调用dll我在加分。如果我能弄明白一次送上750分。
晕~~一点注释都没有啊,能不能给代码写简单点,告诉我原里就行,分对我来说没什么用,解决问题才最重要。
先追加100分

说了让你慢慢消化,从相关注释和messagebox()内容如果看不懂程序及各函数在做些什么的话,只能说明你没认真看,消化别人的程序要有耐心的。我删一些代码,留下了每个函数在程序中的应用,也算是简洁了点吧。对于非疑问的问题我不会再作答了。
-----------------------------------------------
悬赏分5分?高分悬赏750分?弄明白一次送上750分?要是真有诚意才悬赏5分?
废话不说了,你把分看得这么重,我也不会夺人所爱了。给你一段代码,你自己慢慢消化吧,别说看不懂啊!主要是在VFP中引用DLL库中定义的initomr、testhopper、sendcardform、readcard、getdecoder、sendcommand这几个函数(注:此是国防科大开发的一种光学符号阅读器的DLL定义,参照你机器附带的说明文件和DLL定义自己作出相应的修改)
lparameters wpara
public w_OMR
w_OMR = wpara &&阅卷机机型
****************************************************
Declare integer initomr in "dll2cv10win2000.dll"
Declare integer testhopper in dll2cv10win2000.dll integer @hopper
Declare integer sendcardform in dll2cv10win2000.dll string @filename, integer @nsum
Declare integer readcard in dll2cv10win2000.dll string @cardtype, integer @hopper
Declare integer getdecoder in dll2cv10win2000.dll integer nnnn, integer mmmm, string @decstr
Declare integer sendcommand in dll2cv10win2000.dll string @cmdstr

=messagebox("阅卷机函数定义完毕 !",0+48+0,'提示')

Mfilename='HNZYK05.FOM'
Mnsum=0
Mhopper=2
y=initomr() &&初始化函数

if y<>0
=messagebox("对不起,您的阅卷机初始化错 !返回值为"+str(y,2),0+16+0,'请检查阅读机相关设备')
else
=messagebox("阅卷机初始化完毕 !正确",48,'提示')
endif

z=sendcardform(@Mfilename,@Mnsum) &&送格式函数

if z<>0
=messagebox("对不起,您的阅读机格式文件有错 !返回值为"+str(z,2),0+16+0,'请检查阅读格式文件')
else
=messagebox("阅卷机格式文件传送完毕! ",0+48+0,'提示')
endif

--------------------------------------------
上面在初始化光学阅读器未用到的函数会在阅卡始用到,见下
Mcardtype="A"
Mnsum=0
Mhopper=2

do while 0==testhopper(@Mhopper).and.Mhopper==1
&&测试是否有纸
wx1=readcard(@Mcardtype,@Mhopper)
Mdecstr=space(288)

if wx1=0 &&正常,
wx2=getdecoder(1,287,@Mdecstr)
if wx2=0 &&正常,
wksh = subs(Mdecstr,1,10)

wlss = subs(Mdecstr,13,4)
thisform.wf_y11.value = iif(wlss='0000',' ',wlss)
..........

else
=Messagebox('阅读函数 GETDECODER 出错,错误号为'+ltrim(str(wx2,3))+' , 请重阅当前张卡片 ! ',0,'')
endif
else
=Messagebox('阅读函数 READCARD 出错,错误号为'+ltrim(str(wx1,3))+' , 请重阅当前张卡片 !',0,'')
endif
ENDDO

if 0==testhopper(@Mhopper).and.Mhopper==1
else
=sendcommand("+g")
endif
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-03-26
呵呵
相似回答