主题:在Foxpro中如何用Mscomm发送16进字符A9?
lidong883545
[专家分:20] 发布于 2008-12-12 11:19:00
请问专家:在Foxpro中如何用Mscomm发送16进字符串?
我要发送的是170个16进数字,从DBF中读取:A9 00 00 00 10 00 00 30 34 36 00 00 等,接收为文本。现在无法发送A9,其他正常。
谢谢!
最后更新于:2008-12-13 13:30:00
回复列表 (共19个回复)
沙发
lidong883545 [专家分:20] 发布于 2008-12-12 11:29:00
自己顶一下,我只会一点foxpro,很多年前学的,不精!但经常能用它编点小软件自用,感觉良好,希望专家多指点,谢谢!
没人答复,是不是没有办法[em10],看来此路不通?[em10]
板凳
zfh630528 [专家分:130] 发布于 2008-12-13 16:57:00
Foxpro中的Mscomm发送字符,是按二进制进行的。即:发送“A9”时,Thisform.olecontrol1.Output="A9",Mscomm发送的是“A”的ASCII码“65”和“9”的ASCII码“57”
3 楼
lidong883545 [专家分:20] 发布于 2008-12-13 22:11:00
谢谢zfh630528,但我的问题是如何发送ASCII大于127的字符,olecontrol1.Output只能发送小于127的字符。因为A9是一个控制符,不是A、9两个字符。
4 楼
zfh630528 [专家分:130] 发布于 2008-12-13 22:22:00
你是下位机是什么?是单片机吗?
5 楼
lidong883545 [专家分:20] 发布于 2008-12-13 22:41:00
一台仪器,只能用针式打印机输出,它有RS232接口,想自己编个软件来控制。我用串口软件分析了它的正版控制软件(很贵),破译了指令,就是以A9 00 00 00....10 00等16进字符,用串口分析软件的HEX发送,确认正确。foxpro中用Mscomm发送,少了一个字符,就是开头的A9 ,其他均正常。我估计用FOXPRO发不了,但我只会foxpro,用VB 是可以的,但我不会编[em10]
6 楼
zfh630528 [专家分:130] 发布于 2008-12-13 22:57:00
VB与Vf的Mscomm是一个道理。我使用VF的Mscomm与单片机通信,就是参考VB的Mscomm使用方法。
7 楼
zfh630528 [专家分:130] 发布于 2008-12-14 00:25:00
用这个方法试试: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 楼
zfh630528 [专家分:130] 发布于 2008-12-14 00:27:00
用这个方法试试: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 楼
lidong883545 [专家分:20] 发布于 2008-12-14 09:42:00
由于中文操作系统的原因,CHR()无法识别ASCII大于127的字符,VB有二进制变量,但VFP没有。我现在准备用VB编个发送小程序,用VFP调用。zfh630528你能否帮我编一个,具体发送和接受的内容我自己修改,我的EMAIL:107041038@qq.com,谢谢!
10 楼
zfh630528 [专家分:130] 发布于 2008-12-14 21:49:00
前面我说的方法你试一下,应该是可以的
我来回复