说了让你慢慢消化,从相关注释和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
温馨提示:答案为网友推荐,仅供参考