【发布时间】:2014-05-16 13:23:34
【问题描述】:
我目前正致力于在 VB6 上编写一个小脚本来替换在 UNIX 机器上运行的脚本。该脚本所做的是等待 UPS 系统关闭一个开关,然后由 COM 端口接收该开关,驱动程序关闭 UNIX 机器。我想为 Windows PC 这样做,但这给我带来了一些麻烦。
根据我的原理图,我构建了一个连接器,桥接引脚 7 和 8,并在引脚 2 和 3(RXD 和 TXD)之间连接一个开关。打开开关与 UPS 系统做的完全一样。
Private Sub shutdownPC()
Dim inStr As Variant
myCom.CommPort = 1
myCom.Settings = "9600,e,7,1"
myCom.RThreshold = 1
myCom.InputLen = 0
myCom.InputMode = comInputModeBinary
myCom.InBufferCount() = 0
myCom.PortOpen = True
'Shell ("shutdown.exe -s -t01")
If myCom.CommEvent = comEvReceive Then
inStr = myCom.Input
End If
End Sub
到目前为止,这是我的代码。我已经包含了 MSComm 库并在我的表单中添加了一个 MSComm 对象。当我使用 comInputModeBinary 和 comInputModeText 时,我分别在 myCom.Input 上得到“No variables”和“”。使用 Powershell 我可以看到 COM1 端口正在工作。
关于我做错了什么有什么想法吗?
【问题讨论】:
-
我不确定短接 RD 和 TD 是如何产生有效字符的,或者根本就没有。让开关切换 RS-323 控制线之一似乎更有意义。通常至少会使用某种形式的 RS-232 信号缓冲器,而不是简单地将电线短接以进行接触。
-
我会尝试写入端口,但超时时间很短。然后,我将监视接收到的数据事件处理程序是否被触发,这表示开关已关闭
标签: vb6 serial-port