Pinnacle Plus + блок питания RS232 для связи в C # - PullRequest
0 голосов
/ 20 июня 2011

Я пытаюсь связаться с источником питания Pinnacle Plus + через канал RS232, но получаю нет ответа от подразделения. Устройство настроено на адрес 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 Байты данных: они опущены, так как они не нужны для этой команды Команда (1 байт): это номер команды. В моем случае это 10000000 = 128 Контрольная сумма (1 байт): это XOR в моем случае заголовка и байтов команды, который равен 10001000 = 136

На основании этой информации я создал и отправил следующий массив байтов []:

byte[] b = {8, 128, 136}

Ответ должен состоять из 4 символов ASCII: «PLUS»;

Однако я вообще не получаю ответа.

Я пробовал другие команды, но также не получил ответа.

Если у кого-то есть опыт работы с этим устройством, пожалуйста, посоветуйте, что я делаю не так.

Действительно ценю.

Alex

Ответы [ 2 ]

0 голосов
/ 30 июня 2011

Проблема не в коде. Код хороший. Было неисправное соединение - кабель RS232. Так как он был заменен, все работает отлично. Спасибо всем за помощь.

0 голосов
/ 20 июня 2011

Возможно, вам потребуется настроить управление потоком.Никогда не понимал, почему параметры последовательного порта определяют скорость передачи и четность, а не управление потоком, поскольку, во всяком случае, это важнее других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...