Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB6-通过RS232线路/COM端口读取单个位_Vb6_Serial Port - Fatal编程技术网

VB6-通过RS232线路/COM端口读取单个位

VB6-通过RS232线路/COM端口读取单个位,vb6,serial-port,Vb6,Serial Port,我目前正在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

我目前正在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上分别得到“无变量”和“”。使用Powershell,我可以看到COM1端口正在工作


你知道我做错了什么吗?

你要么循环,要么放入事件处理程序,因为你的代码将在外部世界发生任何事情之前执行。循环浪费电池寿命,降低计算机速度。帮助文件位于C:\Windows\HELP\COMM98.CHM

恶性肿瘤事件

每当CommEvent属性的值发生更改时,就会生成OnCom事件,指示发生了通信事件或错误

语法

Private Sub object_OnComm ()
OnCom事件语法包含以下部分:

零件说明 对象计算为“应用于”列表中的对象的对象表达式

评论

CommEvent属性包含生成OnComm事件的实际错误或事件的数字代码。请注意,将RThreshold或Strreshold属性设置为0将分别禁用comEvReceive和comEvSend事件的捕获

在插脚2和3(RXD和TXD)之间连接开关

这将创建一个环回。
这仅在您的程序发送测试消息时有用。
如果没有收到任何信息,则开关仍然打开。当开关闭合时,程序将开始接收它发送的消息

你知道我做错了什么吗

您的程序不能被动等待。

它必须通过发送字节来轮询UPS,然后检查是否接收到任何数据。

我不确定短接RD&TD怎么会产生有效字符,或者根本没有。让开关切换RS-323控制线之一似乎更有意义。通常至少会使用某种形式的RS-232信号缓冲区,而不是简单地短接导线以进行接触。我会尝试在短时间内写入端口。然后,我将监视接收到的数据eventhandler是否被触发,这将表示开关已关闭