Отправка COM-порт ASCII команд

500
31 марта 2017, 22:00

Задача в опросе весов CAS AP через RS 232 или СОМ порт.

  1. Формат данных ASCII;
  2. отправляем на весы запрос = "ENQ" -> 05H
  3. получаем ответ = "ACK" -> 06H
  4. отправляем на весы запрос = "DC1" -> 11H или "DC2" -> 12H
  5. получаем ответ

Как отправить команду, поскольку что ENQ, что DC1 или DC2 не имеют символьного аналога? Может у кого есть соображения как отправлять ASCII команды, используя коды символов. Теоретически это должно быть так:

int value = ??? ENQ
char c = Convert.ToChar(value);
byte[] mes = System.Text.Encoding.ASCII.GetByte(new byte[] { c });

Или как вариант можно было бы и так:

string comand = "???";
byte[] mes = Encoding.ASCII.GetBytes(comand);

Ну и:

_serialPort.Write(mes, 0, mes.Length);
Answer 1

Отправлять следует байты, найдете в таблице ASCII:

someSerialPort.Write(bytesToSend, 0, bytesToSend.Length);

Описание функции смотрите на MSDN: ссылка

Для какой-то обработки принятых данных надо присоединить Ваш метод к событию DataReceived
Например:

_port.DataReceived += new SerialDataReceivedEventHandler(SomeMethod);
...
public void SomeMethod(object sender, SerialDataReceivedEventArgs e)
{
    ...
    var receivedBytes = _someSerialPort.Read();
}

Примерная реализация метода Read():

public byte[] Read()
{
    var buffer = new byte[_someSerialPort.BytesToRead];
    _someSerialPort.Read(buffer, 0, buffer.Length);
    return buffer;
}

На MSDN хорошо описаны методы, рекомендую к ознакомлению: ссылка

P.S. я в своем рабочем проекте реализовывал классы для работы с COM-портом, некоторая информация может быть Вам будет полезна: ссылка на github

READ ALSO
сохранение jpg в наилучшем качестве C#

сохранение jpg в наилучшем качестве C#

Добрый деньИмеется код, объединяющий два изображения в одно:

286
WindowState = FormWindowState.Maximized;

WindowState = FormWindowState.Maximized;

Приложение написано с использованием WinFormsПри установке свойства:

343
PictureBox не отображает изображение visual c#

PictureBox не отображает изображение visual c#

Я новичок в c#, пишу небольшую игруЕё цель ставить звездочки так, чтобы их задело рандомно перемещающееся НЛО

351
Реализация универсальных методов

Реализация универсальных методов

C# WindowsForms Что-то запутался в универсальных методах и пр

261