Как мне написать структуру через последовательный порт? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть следующая структура

unsafe public struct usb_board
{
        UInt16 scr_id;
        UInt16 cmd_id;
        uint type;
        UInt16 size;
        UInt16 crc;
        uint [] buffer;
}

мне нужно записать всю эту структуру в последовательный порт.

Последовательный порт подключения следующим образом:

System.IO.Ports.SerialPort Port = new System.IO.Ports.SerialPort("COM1");
Port.BaudRate = 9600;
Port.Open();
Port.WriteTimeout = 4000;
Port.Write("Some String Data");

Метод port.Write позволяет мне записывать строковые данные. Как передать содержимое этой структуры через порт?Нужно ли конвертировать данные в строковый формат?Если да, то как мне этого добиться?Есть ли другой путь ?

1 Ответ

0 голосов
/ 03 октября 2018

Вы можете просто сериализовать его, использовать Json или создать свою собственную сериализацию:

string json = Newtonsoft.Json.JsonConvert.SerializeObject(your_object);
System.IO.Ports.SerialPort Port = new System.IO.Ports.SerialPort("COM1");
Port.BaudRate = 9600;
Port.Open();
Port.WriteTimeout = 4000;
Port.Write(json);

Если анализировать json на вашем устройстве (или на любом другом приемнике) сложно, вы можете создатьсериализация самостоятельно:

unsafe public struct usb_board
{
   UInt16 scr_id;
   UInt16 cmd_id;
   uint type;
   UInt16 size;
   UInt16 crc;
   uint[] buffer;
   public override string ToString()
   {
       return $"{scr_id},{cmd_id},{type},{size},{crc},{string.Join(",", buffer)}";
   }
}

затем вы можете использовать your_object.ToString(), чтобы получить строку с разделителями-запятыми со всеми вашими значениями структуры, и вы можете отделить ее на своем устройстве.

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