回 帖 发 新 帖 刷新版面

主题:在Foxpro中如何用Mscomm发送16进字符A9?

请问专家:在Foxpro中如何用Mscomm发送16进字符串?
我要发送的是170个16进数字,从DBF中读取:A9 00 00 00 10 00 00 30 34 36 00 00 等,接收为文本。现在无法发送A9,其他正常。


              谢谢!

回复列表 (共19个回复)

沙发

自己顶一下,我只会一点foxpro,很多年前学的,不精!但经常能用它编点小软件自用,感觉良好,希望专家多指点,谢谢!
   没人答复,是不是没有办法[em10],看来此路不通?[em10]

板凳

Foxpro中的Mscomm发送字符,是按二进制进行的。即:发送“A9”时,Thisform.olecontrol1.Output="A9",Mscomm发送的是“A”的ASCII码“65”和“9”的ASCII码“57”

3 楼


谢谢zfh630528,但我的问题是如何发送ASCII大于127的字符,olecontrol1.Output只能发送小于127的字符。因为A9是一个控制符,不是A、9两个字符。

4 楼

你是下位机是什么?是单片机吗?

5 楼

一台仪器,只能用针式打印机输出,它有RS232接口,想自己编个软件来控制。我用串口软件分析了它的正版控制软件(很贵),破译了指令,就是以A9 00 00 00....10 00等16进字符,用串口分析软件的HEX发送,确认正确。foxpro中用Mscomm发送,少了一个字符,就是开头的A9 ,其他均正常。我估计用FOXPRO发不了,但我只会foxpro,用VB 是可以的,但我不会编[em10]

6 楼

VB与Vf的Mscomm是一个道理。我使用VF的Mscomm与单片机通信,就是参考VB的Mscomm使用方法。

7 楼

用这个方法试试:Thisform.olecontrol1.Output=CHR(INT(VAL("0xA9"))),此语句可以让Msmoss输出“A9”的ASCII码(即:十进制为169,对应的十六进制为A9)。

   VAL("0xA9")等于169.0,INT(VAL("0xA9"))等于169,CHR(INT(VAL("0xA9")))结果是ASCII为169的字符,

8 楼

用这个方法试试:Thisform.olecontrol1.Output=CHR(INT(VAL("0xA9"))),此语句可以让Msmoss输出“A9”的ASCII码(即:十进制为169,对应的十六进制为A9)。

   VAL("0xA9")等于169.0,INT(VAL("0xA9"))等于169,CHR(INT(VAL("0xA9")))结果是ASCII为169的字符。

   这是我个人的想法,没有在机器上试验。

9 楼


由于中文操作系统的原因,CHR()无法识别ASCII大于127的字符,VB有二进制变量,但VFP没有。我现在准备用VB编个发送小程序,用VFP调用。zfh630528你能否帮我编一个,具体发送和接受的内容我自己修改,我的EMAIL:107041038@qq.com,谢谢!

10 楼

前面我说的方法你试一下,应该是可以的

我来回复

您尚未登录,请登录后再回复。点此登录或注册