我正在尝试使用以下内容通过RS232连接的投影仪发送以打开它:
commProj.Parity = "None";
commProj.StopBits = "One";
commProj.DataBits = "8";
commProj.BaudRate = "19200";
commProj.PortName = "COM6";
commProj.CurrentTransmissionType = PCComm.CommunicationManager.TransmissionType.Text; //.Hex
commProj.OpenPort();
commProj.WriteData((char)33 + (char)137 + (char)1 + (char)80 + (char)87 + (char)49 + "\n"); //turn on proj
问题在于它不起作用。
我用VB6端口做了这个,它运行得很好:
public static PCComm.CommunicationManager commProj = new PCComm.CommunicationManager();
MSCommProj.CommPort = 6
MSCommProj.Settings = "19200,N,8,1"
MSCommProj.PortOpen = True
MSCommProj.Output = Chr(33) & Chr(137) & Chr(1) & Chr(80) & Chr(87) & Chr(49) & Chr(10)
我缺少什么?
大卫
CommunicationManager.cs:http://snipt.org/xmklh
答案 0 :(得分:2)
好的,手册有很多帮助。尝试将CurrentTransmissionType
更改为TransmissionType.Hex
并发送字符串21890100000a
commProj.CurrentTransmissionType = TransmissionType.Hex;
commProj.WriteData("21890100000a");
修改强>
抱歉,这是“连接检查”。对2189015057310a
使用on
,2189015057300a
使用off
。
答案 1 :(得分:1)
char的plus(+)运算符不会连接它们添加的值。所以你最终传递“387 \ n”来写数据。
您需要创建一个char数组,然后将其转换为字符串:
commProj.WriteData(new string(new char[] { (char)33, (char)37, (char)1, (char)80, (char)87, (char)49, '\n' }));
答案 2 :(得分:0)
我不知道commProj是什么类型的对象(具体而言),但我的猜测是问题来自于将每个数值转换为char。 char的大小为2个字节。我建议尝试写入包含数据的字节数组,或者将字符串与这些字符串联,然后将字符串转换为ascii文本。