CHAR通信端口命令

时间:2011-08-10 20:49:01

标签: c# vb6

我正在尝试使用以下内容通过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

enter image description here enter image description here enter image description here

3 个答案:

答案 0 :(得分:2)

好的,手册有很多帮助。尝试将CurrentTransmissionType更改为TransmissionType.Hex并发送字符串21890100000a

commProj.CurrentTransmissionType = TransmissionType.Hex;
commProj.WriteData("21890100000a");

修改

抱歉,这是“连接检查”。对2189015057310a使用on2189015057300a使用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文本。