2

我有一台使用 RS232 串行连接到 ASK Proxima C520 投影仪的 Windows 8 计算机。

我似乎无法通过我尝试过或在网上找到的任何命令关闭投影仪。

ASK Proxmia 手册说要使用以下内容:

Method: Asynchronous communication
Bits Per second: 19200
Data bits: 8
Parity: none
Stop bits: 1
flow control: none

我要用于关闭电源的命令如下:

Command: "A01" [CR] (Hex:0x41 0x30 0x31 0x0d)
Details: Power OFF immediately
Return: OK : [ACK][CR]   | NG : "?" [CR]

我一直在尝试使用的命令是:

powershell
[System.IO.Ports.SerialPort]::getportnames()

我只是用它来验证我确定使用 COM4。

$port = new-Object System.IO.Ports.SerialPort COM4,19200,None,8,one
$port.open()
$port.WriteLine("A01")
$port.ReadLine()
$port.close()

会发生什么:命令提示符只是下划线闪烁,并且在输入 $port.ReadLine() 后不允许任何类型的交互

我尝试将 WriteLine 切换为:“A01 \r\n”。

我还尝试过使用以下各种版本:

MODE COM4: 19200,N,8,1,p
COPY "A01" COM4

我的问题:我不确定为什么投影仪没有关闭,只是挂在命令提示符下或只是坐在那里。

我的问题:如何使用命令提示符或 powershell 关闭投影仪?我必须遗漏一些东西或对串行命令的工作感到困惑。

4

1 回答 1

1

根据下面列出的关于 System.IO.Ports.SerialPort 类的 MSDN 文章,ReadLine 方法读取输入缓冲区中的 NewLine 值。但是,前面的命令 WriteLine 将值“A01”写入输出缓冲区。此 ReadLine 指令需要一些您永远不会传递的输入值。我相信您正在发送正确的关机命令,但没有发送返回命令或确认,正如投影机所期望的那样。绝对 ReadLine 不是正确的命令。我相信 `r 相当于返回键。

尝试这个:

$port = new-Object System.IO.Ports.SerialPort COM4,19200,None,8,one
$port.open()
$port.WriteLine("A01 `r");
$port.WriteLine("ACK `r");
$port.close()

RETURN 命令可能是不必要的......

$port = new-Object System.IO.Ports.SerialPort COM4,19200,None,8,one
$port.open()
$port.WriteLine("A01");
$port.WriteLine("ACK");
$port.close()

https://msdn.microsoft.com/en-us/library/system.io.ports.serialport(v=vs.110).aspx

http://www.askproximausa.com/files/pdf/ASK-PROXIMA-C5-Series-Users-Manual-English.pdf

于 2015-04-06T00:36:44.403 回答