如何使用命令提示符或Powershell关闭投影仪?

时间:2015-03-25 15:10:34

标签: powershell serial-port projector

我有一台Windows 8电脑连接到使用RS232串口的ASK Proxima C520投影机。

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

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关闭投影机?我必须对序列命令的工作缺失或混淆。

1 个答案:

答案 0 :(得分: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