我目前正致力于在VB6上编写一个小脚本来替换在UNIX计算机上运行的脚本。该脚本所做的是等待UPS系统关闭交换机,然后由COM端口接收交换机,然后驱动程序关闭UNIX计算机。我想为Windows PC做这件事,但它给我带来一些麻烦。VB6 - 通过RS232线/ COM端口读取一个位
根据我的示意图,我搭建了一个连接器,用于桥接引脚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上得到“无变量”和“”。使用Powershell我可以看到COM1端口正在工作。
关于我在做什么的错误?
我不确定如何将RD&TD结果缩短为有效字符,或者完全没有。使开关切换RS-323控制线中的一个似乎更有意义。通常至少使用某种形式的RS-232信号缓冲器,而不是简单地使电线短路以进行接触。 – Bob77
我会尝试写入端口,并短暂超时。然后我会监控接收到的数据事件处理程序是否被触发,这意味着交换机已关闭 –