VB6 RS232命令不工作

VB6 RS232命令不工作,vb6,serial-port,Vb6,Serial Port,我有以下代码: MSCommProj.CommPort = 6 MSCommProj.RThreshold = 1 MSCommProj.Settings = "19200,N,8,1" MSCommProj.InputLen = 0 MSCommProj.PortOpen = True 它可以正常打开并连接,但当我尝试发送命令时: MSCommProj.Output = "21 8901 5057 31 0A" & Chr$(13) 及 及 按照用户手册的说明,它不会启动 以下是手

我有以下代码:

MSCommProj.CommPort = 6
MSCommProj.RThreshold = 1
MSCommProj.Settings = "19200,N,8,1"
MSCommProj.InputLen = 0
MSCommProj.PortOpen = True
它可以正常打开并连接,但当我尝试发送命令时:

MSCommProj.Output = "21 8901 5057 31 0A" & Chr$(13)

按照用户手册的说明,它不会启动

以下是手册中显示这一点的页面。也许我只是做错了

您确定要为此向RS232接口发送字符数据吗?对我来说,这些看起来像二进制序列

而不是:

MSCommProj.Output = "3F 89 01 50 57 0A" & Chr$(13)
我希望通过以下方式传输二进制数据:

MSCommProj.Output = chr$(63) & chr$(137) & chr$(1) & chr$(80) & chr$(87) & chr(10)
您会注意到,最后没有
chr$(13)
,规范没有要求这样做


如果您想知道这些十六进制值的转换是什么,请启动Windows计算器,将视图更改为“科学”,切换到十六进制模式,输入值,切换到十进制模式

或者,您也可以为此目的下载。或者查看我关于这个主题的一篇长篇大论。

你确定要为此向RS232接口发送字符数据吗?对我来说,这些看起来像二进制序列

而不是:

MSCommProj.Output = "3F 89 01 50 57 0A" & Chr$(13)
我希望通过以下方式传输二进制数据:

MSCommProj.Output = chr$(63) & chr$(137) & chr$(1) & chr$(80) & chr$(87) & chr(10)
您会注意到,最后没有
chr$(13)
,规范没有要求这样做


如果您想知道这些十六进制值的转换是什么,请启动Windows计算器,将视图更改为“科学”,切换到十六进制模式,输入值,切换到十进制模式


或者,您也可以为此目的下载。或者查看我关于这个主题的一篇长篇论文。

您需要发送给定的字节。
而是发送这些的字符串表示形式

发送实际字节。

chr$(&h21)&chr$(&h89)&chr$(&h01)&chr$(&h50)
等。

您需要发送给定的字节。
而是发送这些的字符串表示形式

发送实际字节。

chr$(&h21)&chr$(&h89)&chr$(&h01)&chr$(&h50)
等等。

这是因为我没有使用交叉电缆。。。所有的rs232代码都是正确的。废话。

那是因为我没有使用交叉电缆。。。所有的rs232代码都是正确的。诸如此类。

您应该按照@gserg和@paxdiablo的建议,以二进制模式发送(和接收)。然而,在此之前,请注意第69页说您需要19200bps的连接;但是,您正在将串行端口设置为9600bps。您可能会冒着意外错误的风险,在尝试按照人们的建议将字节值塞进字符串中时会出错。使用字节数组并正确执行。这样,您就不会因为到ANSI的隐式转换而绊倒,因为它会扰乱您的数据。@Bob:有机会举个例子吗?:o) 您应该按照@gserg和@paxdiablo的建议,以二进制模式发送(和接收)。然而,在此之前,请注意第69页说您需要19200bps的连接;但是,您正在将串行端口设置为9600bps。您可能会冒着意外错误的风险,在尝试按照人们的建议将字节值塞进字符串中时会出错。使用字节数组并正确执行。这样,您就不会因为到ANSI的隐式转换而绊倒,因为它会扰乱您的数据。@Bob:有机会举个例子吗?:o) 有在线转换器吗o) 似乎找不到0A的转换方法?
0x0a
10
-我添加了一个附录,告诉您如何计算它们,或者您可以从网络上获得一个包含十进制和十六进制的ASCII表,例如:@SteathRT,看看uodate,它提供了一个如何进行此操作的链接。那么,还有很多事情可能是错误的。如果您正在使用“下一步恢复出错时的
,是否正在检查
err
以查看设置中是否存在问题?您是否已将设备连接到正确的端口?您是否有LED样式的接线盒,以便查看数据线和控制线是否在导线上切换?设备是否正确激活了控制线?我发现只有rxd、txd和接地连接,但Windows驱动程序可能依赖rts/cts握手(这将阻止数据发送)。是否有在线转换器o) 似乎找不到0A的转换方法?
0x0a
10
-我添加了一个附录,告诉您如何计算它们,或者您可以从网络上获得一个包含十进制和十六进制的ASCII表,例如:@SteathRT,看看uodate,它提供了一个如何进行此操作的链接。那么,还有很多事情可能是错误的。如果您正在使用“下一步恢复出错时的
,是否正在检查
err
以查看设置中是否存在问题?您是否已将设备连接到正确的端口?您是否有LED样式的接线盒,以便查看数据线和控制线是否在导线上切换?设备是否正确激活了控制线?我看到只有rxd、txd和接地连接,但Windows驱动程序可能依赖于rts/cts握手的事实(这将阻止数据发送)。尝试了MSCommProj.Output=Chr$(&H21)和Chr$(&H89)和Chr$(&H1)和Chr$(&H50)和Chr$(&H57)和Chr$(&H30)和Chr$(&HA)但是它没有做任何事情。尝试MSCommProj.Output=Chr$(&H21)和Chr$(&H89)和Chr$(&H1)和Chr$(&H50)和Chr$(&H57)和Chr$(&H30)和Chr$(&HA),但它没有做任何事情。