我正试图通过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();
根据文件包包括: 标头,命令,数据字节(如果存在),校验和。
标头(1字节):前3位是数据字节数。在我的情况下,它是0 = 000 最后5位是发往的单元号包。在我的情况下,它是1 = 00001 完整标题为00001 000或十进制8 数据字节:这些被省略,因为此命令不需要它们 命令(1byte):是命令编号。在我的情况下,它是10000000 = 128 校验和(1byte):在我的案例标题和命令字节中是XOR,即10001000 = 136
基于此信息构建并发送以下byte []数组:
byte[] b = {8, 128, 136}
回复应该是4个ASCII字符:“PLUS”;
但我根本没有回复。
我尝试了不同的其他命令,但也没有回复。
如果有人有这个单位的经验,请告诉我我做错了什么。
真的很感激。
亚历
答案 0 :(得分:0)
您可能需要配置流量控制。从来没有理解为什么串口参数指定波特率和奇偶校验而不是流量控制,因为如果有的话,它比其他参数更重要。
答案 1 :(得分:0)
问题不在于代码。代码很好。这是错误的连接 - RS232电缆。由于它被替换,一切都很好。谢谢大家的帮助。