Я хочу отправить случайно сгенерированные данные с моего ПК на микроконтроллер (ATmega328p), а затем отразить их обратно.Для этого я написал программу на C # (я впервые работал с ней).
Каждый байт, который получает ПК, возвращается, а> 0xF7 отображается как 0x3F.
Микроконтроллер получает и отправляетданные возвращаются правильно (я отображаю все данные, которые микроконтроллер получает и отправляет на ЖК-дисплее).Я также использовал два последовательных терминальных инструмента (HTerm, Pololu Serial Transmitter), чтобы убедиться, что µC работает нормально.Должно быть что-то не так, когда ПК получает / отображает данные в конце.
Отображать полученные данные в виде .hex в textBox1
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e){
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
string outp = string.Empty;
char[] value = indata.ToCharArray();
foreach(char L in value){
int V = Convert.ToInt32(L);
outp+= string.Format("{0:x}",V);
}
if (outp != String.Empty)
Invoke(new Action(() => textBox1.AppendText(outp)));
}
Edit2 //
Я исправил проблему.Спасибо kunif и gunnerone за подсказки!Кажется, есть проблема с кодировкой port.ReadExisting ().Вместо этого я знаю, использовать порт.Read ().
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e){
int bytesToRead = port.BytesToRead;
byte[] value = new byte[bytesToRead];
port.Read(value,0,bytesToRead);
string indata = BitConverter.ToString(value);
if (indata != String.Empty)
Invoke(new Action(() => textBox1.AppendText(indata)));
}