powershell - 如何使用PowerShell通过串行端口将十六进制命令发送到监视器

标签 powershell serial-port

好的,这有点奇怪,但是由于我对如何使用串行端口或PowerShell完全不了解,我无法想到其他任何地方。

我正在尝试将基本命令发送到具有RS232端口的显示器,该端口可用于控制显示器的属性,即亮度,对比度,背光等。

我正在尝试使用PowerShell进行此操作以进行测试。我可以在PowerShell中创建$ port并将其分配给监视器连接到的相关COM#,但是我对如何实际发送命令感到困惑,因为它对于监视器上的 Controller 必须为十六进制了解它。
该监视器能够使用相同的十六进制布局返回确认,但是我找不到在Powershell控制台上显示该响应的方法。
这是我到目前为止能够做到的。

PS C:\Users\Kingdel> [System.IO.Ports.SerialPort]::getportnames()
COM1
COM2
COM3
COM4
COM5
COM6
PS C:\Users\Kingdel> $port= new-Object System.IO.Ports.SerialPort COM1,9600,None,8,one
PS C:\Users\Kingdel> $port.open()
PS C:\Users\Kingdel> $port.WriteLine("0xA6,0x01,0x00,0x00,0x00,0x03,0x01,0x31,0x94")
PS C:\Users\Kingdel>

任何人都可以向我指出正确的方向,以指示我如何将此命令发送到监视器并查看返回的确认。

我愿意尝试不同的终端,我尝试过PuTTy和Termite,据我所知,它们都不成功。

最佳答案

这是一个非常好的问题。也许我可以帮上忙。

SerialPort.WriteLine()方法接收一个字符串以写入输出缓冲区,因此使用它实际上是在发送字符串参数。

要将某些内容发送到[System.IO.Ports.SerialPort]对象,您需要将SerialPort.Write()Byte[]参数一起使用。 Write()方法可以使用来自缓冲区的数据将许多字节带入串行端口。

您还需要向它发送三个参数,分别是buffer Byte[]offset Int32count Int32。因此,您可以执行以下操作:

[Byte[]] $hex = 0xA6,0x01,0x00,0x00,0x00,0x03,0x01,0x31,0x94
$port.Write($hex, 0, $hex.Count)

buffer参数是一个数组,其中包含要写入端口的数据,offset是缓冲区数组中从零开始的字节偏移,从此处开始将字节复制到端口,而count是要写入的字节数。

关于powershell - 如何使用PowerShell通过串行端口将十六进制命令发送到监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59582329/

相关文章:

winapi - 如何使用 Windows API 将空字符发送到串行端口?

linux - 将来自一个 COM 端口的传入数据镜像到 Linux 上的虚拟 COM 端口

linux - USB 调制解调器回显错误字符

Java 通信 API 问题

powershell - 如何使用 Powershell 显示用户的 OU

django - 使用特殊字符在 Heroku(通过 powershell)中设置环境变量

powershell - 使用 Powershell 测试代理规则

powershell - 将电源计划更改为高性能

python - 一对一串行通信

file - 使用 PowerShell 复制没有文件的文件夹、没有文件夹的文件或所有内容