【发布时间】:2011-06-20 12:03:49
【问题描述】:
我正在尝试通过 RS232 链接与 Pinnacle Plus+ 电源进行通信,但得到 单位没有回复。 单元配置为地址 1 和波特率 9600。
代码在 C# 中
这是我所做的:
SerialPort PinnacleSerialPort = new SerialPort("COM3", 9600, Parity.Odd, 8, StopBits.One);
PinnacleSerialPort.ReadTimeout = 3000;
PinnacleSerialPort.Open();
byte[] b = { 8, 128, 136 };
PinnacleSerialPort.Write(b, 0, b.Length);
Thread.Sleep(1000);
try
{
int bytes = PinnacleSerialPort.BytesToRead;//RETURNS 0 (ZERO)
Console.WriteLine(string.Format("Bytes to read: {0}", bytes));
byte[] comBuffer = new byte[bytes];
PinnacleSerialPort.Read(comBuffer, 0, bytes);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
根据文件包包括: 标头、命令、数据字节(如果存在)、校验和。
Header(1byte):前 3 位是数据字节数。就我而言,它是 0 = 000 最后 5 位是发送到的单元号数据包。就我而言,它是 1 = 00001 完整标题将为 00001 000 或十进制 8 数据字节:这些被省略,因为此命令不需要它们 Command(1byte):是命令号。就我而言,它是 10000000 = 128 校验和(1字节):在我的情况下是头和命令字节的异或,即 10001000 = 136
基于此信息,我构造并发送了以下 byte[] 数组:
byte[] b = {8, 128, 136}
回复应为 4 个 ASCII 字符:“加号”;
但是我根本没有收到任何回复。
我尝试了不同的其他命令,但也没有得到回复。
如果有人对这个单元有经验,请告诉我我做错了什么。
真的很感激。
亚历克斯
【问题讨论】:
标签: c# serial-port