高手们救命啊,FOXPRO 向串口发送这样的一代段代码,怎么写?

dimension ComBuff(9) As Byte
combuff(1)=0
combuff(2)=0x5a
combuff(3)=0x53
combuff(4)=0
combuff(5)=1
combuff(6)=1
combuff(7)=0
combuff(8)=0
combuff(9)=1

顺便把接收的也告我吧,弄了好久,都是提示“ MSCOMM 无效的属性值”,,救命啊

VFP 向串口发送:
thisform.oleCOM.Output = CHR(0)+CHR(90)+CHR(83)+CHR(0)+CHR(0)+CHR(1)+CHR(1)+CHR(0)+CHR(0)+CHR(1)
或:
thisform.oleCOM.Output = CHR(0)+“ZS”+CHR(0)+CHR(0)+CHR(1)+CHR(1)+CHR(0)+CHR(0)+CHR(1)
接收时用一个字符型变量接收后拆解追问

都不行,按你的办法,板没反应,也不报错!在VB上就简单如上几句,,可在VF上就是通不过,奇怪!
combuff(1)=0
combuff(2)=0x5a
combuff(3)=0x53
combuff(4)=0
combuff(5)=1
combuff(6)=1
combuff(7)=0
combuff(8)=0
combuff(9)=175
这种办法按理应该通的,但最终得出的COMBUFF竟然是0,不懂!MSCOMM的设置和VB上的一模一样!其实就是发一数据帖,9字节,该死的VF,还请指教!

追答

实测了一下,果然用以上方法超过 128 的字节无法发送出去,要使用 CREATEBINARY():
thisform.oleCOM.Output =;
CREATEBINARY(CHR(0))+;
CREATEBINARY(CHR(90))+;
CREATEBINARY(CHR(83))+;
CREATEBINARY(CHR(0))+;
CREATEBINARY(CHR(1))+;
CREATEBINARY(CHR(1))+;
CREATEBINARY(CHR(0))+;
CREATEBINARY(CHR(0))+;
CREATEBINARY(CHR(175))

&& 串口调试助手收到的结果:00 5A 53 00 01 01 00 00 AF

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-08
我是专做VF的,RS232通信做很多,你真的需要帮助吗
如果需要,请现在在线联系

VF的com传输只有两种方式
0、TXT
1、BIN
你上面的是16进制,因此要用Createbinary()
下面是我程序的一段代码,如果感兴趣,可以互相交流
**********************************二进制发送
ty_bin=Createbinary(CHR(EVALUATE('0x'+substr(dat_hex,1,2))))
for i=1 to 13
ty_bin=ty_bin+Createbinary(CHR(EVALUATE('0x'+substr(dat_hex,i*3+1,2))))
endfor
thisform.zym4.output=ty_bin
第2个回答  2011-05-07
通常都是 用 VB 的
你这个 要用 Foxpro

推荐
Visual_Basic与_RS-232_串行通信控制追问

先谢你!VB的我已经通过,现想移动VF上~!继续请教

追答

应该 大同小异

祝你顺利 吧

相似回答