поэтому я пытаюсь отправить несколько байтов с шестнадцатеричными значениями, чтобы настроить мой микроконтроллер на другой стороне последовательного порта. Дело в том, что я не совсем уверен, как правильно это сделать и в каком формате их отправлять. Например, мне нужно отправить два байта, а их шестнадцатеричные значения — 57 и B0. Когда я пытаюсь отправить его в виде массива символов и читаю его обратно, я всегда получаю шестнадцатеричные значения ASCII для этих символов, например 53, а затем 55 для значения 57. Поэтому я хотел отформатировать шестнадцатеричное значение как байт и отправить их оба одновременно из массива байтов, но при чтении ответа я ничего не получаю. После форматирования в байт MessageBox показывает десятичное значение, и я не знаю, должно ли оно быть таким. Я предоставляю свой код ниже.
Info_Byte_Dec += Protocol_Set + Protocol_Unit + Protocol_Write + Protocol_Settings; //stores decimal value
Data_Byte_Dec = Mode * Protocol_Mode_Offset + ODR * Protocol_ODR_Offset + Scale; //stores decimal value
Info_Byte_Hex = Info_Byte_Dec.ToString("X"); //convert to hex value
Data_Byte_Hex = Data_Byte_Dec.ToString("X"); //convert to hex value
string Merged = $"{Info_Byte_Hex} {Data_Byte_Hex}";
MessageBox.Show("Merged1: " + Merged);
byte[] Mergedbytes = Merged.Split(' ').Select(s => Convert.ToByte(s, 16)).ToArray();
MessageBox.Show("Merged2: " + Mergedbytes[0] + Mergedbytes[1]);
port.Write(Mergedbytes, 0, 2);
Я не уверен, должен ли я просто отправить десятичное значение 87, или я должен отформатировать его в шестнадцатеричное значение 57 или даже в 0x57.
@MarkusSafar Я пытался его найти. Но это первый раз, когда я работаю с каким-либо микроконтроллером, и я все еще теряюсь в таблицах данных. Может быть, я просто искал не то. Попробую еще раз.
@MarkusSafar извините, я не понял это правильно. В коде микроконтроллера я использую этот формат 0x57. Но проблема в том, что когда я пытаюсь отправить его таким образом, я получаю неправильные значения, и я не знаю, почему.





обычно в мире микроконтроллеров, когда вы используете шестнадцатеричный код, вы имеете в виду фактические байты, шестнадцатеричный код - это просто удобная запись для записи двоичных байтовых значений, обычно он никогда не означает отправку шестнадцатеричных значений ascii. Сказав это, правил нет, и иногда люди делают настоящие ascii hex.
В вашем случае, если вы используете 0x57 на stm32, это, вероятно, означает, что вы используете байтовый литерал, а не представление ascii. Вам придется проделать дополнительную работу, чтобы превратить 0x57 в строку.
Так что это означает, что в С# просто отправляйте байты, а не шестнадцатеричный ascii, как вы сейчас