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