首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CHAR comm端口命令

CHAR comm端口命令
EN

Stack Overflow用户
提问于 2011-08-11 04:49:01
回答 3查看 332关注 0票数 0

我正在尝试使用以下命令发送连接RS232的投影仪以打开它:

代码语言:javascript
复制
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端口做到了这一点,它工作得很好:

代码语言:javascript
复制
 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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-11 05:45:31

好了,手册帮了大忙了。尝试将CurrentTransmissionType更改为TransmissionType.Hex并发送字符串21890100000a

代码语言:javascript
复制
commProj.CurrentTransmissionType = TransmissionType.Hex;
commProj.WriteData("21890100000a");

编辑

对不起,那是“连接检查”。对on使用2189015057310a,对off使用2189015057300a

票数 2
EN

Stack Overflow用户

发布于 2011-08-11 05:11:52

char的加号(+)运算符并不连接这些值,而是将它们相加。因此,您最终传递"387\n“来写入数据。

您需要创建一个char数组,然后将其转换为字符串:

代码语言:javascript
复制
commProj.WriteData(new string(new char[] { (char)33, (char)37, (char)1, (char)80, (char)87, (char)49, '\n' }));
票数 1
EN

Stack Overflow用户

发布于 2011-08-11 04:58:24

我不知道commProj是什么类型的对象(具体地说),但我猜问题来自于将每个数值转换为一个字符。字符的大小为2个字节。我建议您尝试编写一个包含数据的Byte数组,或者将字符串与这些字符连接起来,然后将字符串转换为ascii文本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7017592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档