本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
PRIVATE Lpmode,Lpread,num,m.rl,M,COM2
DIMENSION acr(256)
*装入FOXTOOLS.FLL库文件
SET LIBRARY TO SYS(2004)+“FOXTOOLS.FLL" ADDITIVE
*初始化通信协议:通信端口为COM2,波特率为2400,没用奇
*偶校验方式,8位数据位,1位停止位。
Commmode=“COM2"+“2400"+“N"+“8"+“1"
Lpmode=REPLICATE(CHR(0),40)
&&初始化设备控制块DCB结构为0
Lpread=REPLICATE(CHR(32),256)
&&初始化接收队列为空,长度256B
*注册Windows.DLL通信函数
buildcommDCB=Regfn(“BuildCommDCB",“C@C",“I")
opencomm=Regfn(“OpenComm",“CII",“I")
setcommstate=Regfn(“SetCommState",“@C",“I")
readcomm=Regfn(“ReadComm",“I@CI",“I")
writecomm=Regfn(“WriteComm",“ICI",“I")
closecomm=Regfn(“CloseComm",“I",“I")
clearcomm=Regfn(“GetCommError",“I@C",“I")
*初始化COM2通信端口
=Callfn(buildcommdcb,commmode,@lpmode)
&&建立Windows可接受的通信方式
COM2=Callfn(opencomm,“COM2:",256,256)
&&打开COM2通信口
IF COM2<0
WAIT WINDOW“打开通信口失败,退出后重引导"timeout 1
=Callfn(closecomm,COM2) &&关闭COM2口
return -1
ENDIF
M=Callfn(setcommstate,@lpmode) &&设置通信方式
IF M<0
WAIT WINDOW“设置通信方式失败,退出后重引导"timeout 1
=Callfn(closecomm,COM2)
return -1
ENDIF
*对通信口进行读/写操作
m.order=CHR(184) &&发请求取数据命令
M=Callfn(writecomm,COM2,m.order,LEN(m.order))
IF M<0
WAIT WINDOW“请求失败,退出后重引导"timeout 1
=Callfn(clearcomm,COM2,NULL)
&&通信失败,清除端口
=Callfn(closecomm,COM2) &&释放缓冲区
return -1
ENDIF
num=256
M=Callfn(readcomm,COM2,@lpread,num)
&&读num个字节入缓冲区
IF M<0
WAIT WINDOW“读数据失败,退出后重引导"timeout 1
=Callfn(clearcomm,COM2,NULL)
=Callfn(closecomm,COM2)
return -1
ENDIF
显示接收到的数据
FOR I=1 to num
d=(I%8)*10-1
j=int(I/8)
m.siotemp=substr(lpread,I,1)
acr(I)=ASC(SUBSTR(lpread,I,1))
@j,d say acr(I);
FONT"FIXEDSYS",8
ENDFOR
*通信结束
=Callfn(closecomm,COM2)
RELEASE LIBRARY SYS(2004)+"FOXTOOLS.FLL"
WAIT WINDOW"通信已结束!"NOWAIT
RETURN |