У меня есть Raspberry Pi, и моя среда — C#. В основном я отправляю данные GPS (GPRMC) через беспроводное устройство. Беспроводное устройство Rx считывает данные и удаляет ненужную информацию. Сторона Tx отправляет сообщение GPRMC (я использую терминал Bray)
$24GPRMC,123123.00,A,2753.13285,N,08232.29411,W,0.021,,011113,,,D*6D
Когда я использую CuteCom на RPi, я получаю следующее:
\0xaa\0x02G\0xf0y\0x7fE,\0x12 \0xc6\0x00\0xa1-\0xcfU
обычный (шестнадцатеричный вывод не отмечен)
или это в шестнадцатеричном формате (когда флажок шестнадцатеричного вывода установлен):
aa 02 47 f0 79 7f 45 2c 12 20 c6 00 a1 2d cf 55
Шестнадцатеричный код — это ожидаемое сообщение, поскольку в нем есть все необходимые мне данные (начало, идентификатор, дата, широта, длина, lrc, конец).
Я настроил свой код С# для чтения последовательных данных, но не могу заставить его отображать данные таким образом.
Это то, что у меня есть на С#:
public static void Main ()
{
SerialPort serial = new SerialPort ("/dev/ttyUSB0", 115200);
serial.Open ();
while (true)
{
string data = ReadData(serial);
if(!string.IsNullOrEmpty(data))
{
Console.WriteLine(data);
}
}
}
public static string ReadData (SerialPort serial)
{
string rxString = "";
rxString += serial.ReadExisting();
return rxString;
}
на выходе я получаю:
?G?yE, ??-?U
Я также пробовал потоковое чтение, но это не работает:
public static string ReadData2 (System.IO.Stream s)
{
StreamReader sr = new StreamReader (s);
DataString = sr.ReadLine ();
return DataString;
}
и я также пытался использовать Bit Converter, который я нашел в другом посте.
private static string ReadData3 (SerialPort serial)
{
GPSrxString += serial.ReadExisting();
string GPSrxStringhex = BitConverter.ToString(Encoding.ASCII.GetBytes(GPSrxString));
return GPSrxString;
}
Так что после всего этого я застрял. Где я ошибся. Что мне нужно сделать, чтобы получить правильный/желаемый шестнадцатеричный вывод?
РЕДАКТИРОВАТЬ: здесь я использовал строки, но в итоге обнаружил, что строки не подходят, в этом нет необходимости. Используйте массив для хранения всех значений и идите оттуда. Вы можете рассчитать необходимые числа, такие как UTC, в ответах ниже.