【问题标题】:Pinnacle Plus+ power supply RS232 communication in C#Pinnacle Plus+ 电源 RS232 C# 通信
【发布时间】: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


    【解决方案1】:

    您可能需要配置流量控制。从来不明白为什么串口参数指定波特率和奇偶校验而不是流量控制,因为如果有的话,它比其他参数更重要。

    【讨论】:

    • handshake 应该是 None 这就是我设置的。我认为问题可能与设备本身有关。
    • 运行了更多测试,看起来确实是硬件相关问题。一有新东西我就会更新。
    【解决方案2】:

    问题不在于代码。代码很好。这是连接错误 - RS232 电缆。自从它被替换后,一切都很好。感谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-15
      • 2015-07-03
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      • 2016-02-10
      相关资源
      最近更新 更多