读书人

用myfll.fll串口发十六进制数据有关问

发布时间: 2012-03-04 11:13:34 作者: rapoo

用myfll.fll串口发十六进制数据问题?(望豆兄帮忙)
要求就是往【串口设备】发一个16进制“aa 00 00 00 00”信息,通过验证后,【串口设备】会立即返回一串16进制,当然需要接收时再把16进制转回asc码。我用的是myfll.fll

PUBLIC cretmsg,hCom1

cRetMsg=''
Set Library To myFll
mm=60 && 等待循环总时间

* ----------------------------------------------------- \\ 发送
hCom1=ComOpen(2,"9600,n,8,1")
cMsg=CREATEBINARY("aa 00 00 00 00") && 【赋值16进制字符】 -- 这种方法不行
cMsg=CREATEBINARY("aa 00 00 00 00") && 【赋值16进制字符】 -- 这种方法也不行
cMsg=CREATEBINARY("chr(170)")+CREATEBINARY("chr(0)")+CREATEBINARY("chr(0)")+CREATEBINARY("chr(0)")+CREATEBINARY("chr(0)")" && 【赋值16进制字符】 -- 也不行

ComWrite(hCom1,cMsg) &&向串口输出

* --------------------------------------------------- \\ 马上接收
m_time1=SECONDS()
DO whil .t.
cRetMsg=cRetMsg+ComRead(hCom1,0)
IF LEN(ALLTRIM(cRetmsg))>6 && 接收字符大于6个退出
MESSAGEBOX('恭喜您!数据传输完毕!')
EXIT
ENDIF
m_time2=SECONDS()
mtime=60-(m_time2-m_time1)
IF mtime=59
WAIT '' TIMEOUT 2
ENDIF

IF m_time2-m_time1>mm && 没有接收到退出

MESSAGEBOX('由于长时间未接受,接收状态停止!请重新传递!')
EXIT
ENDIF
ENDDO
ComClose(hCom1)&&关闭串口
Set Library To



[解决办法]
send chr(0xaa)+chr(0)+chr(0)+chr(0)


[解决办法]
试试:

cMsg=chr(170)+chr(0)+chr(0)+chr(0)+chr(0)
ComWrite(hCom1,cMsg) &&向串口输出

读书人网 >VFP

热点推荐