У меня есть этот код для отправки Hex на внешнее оборудование с использованием последовательной записи (связь UART): {0xbb, 0x00, 0x22, 0x00, 0x00, 0x22, 0x7e}, а затем последовательное оборудование дает ответ Arduino, и я печатаю с помощью Serial. print: BB 02 22 00 11 D0 34 14 00 00 00 00 00 00 00 24 12 14 11 62 77 69 EA 7E Проблема, на самом деле, печатается как новая строка / аппаратное обеспечение отправляет шестнадцатеричный код один за другим, например: BB 02 22 и т. д. Он печатается без окончания строки, потому что я использую Serial.print. Как я могу получить и сохранить все данные/шестнадцатеричный код из ответа оборудования до его завершения (до 7E или 0x7e). А затем распечатать его как строку. Я пробовал какой-то код буфера или последовательное событие, но он не работает должным образом. Благодарить
#include <SoftwareSerial.h>
SoftwareSerial serial(D5,D6);
//#define DEBUG
unsigned char incomingByte;
void sendIdentifyCmd ()
{
serial.write (0xbb);
serial.write ((byte)0x00);
serial.write (0x22);
serial.write ((byte)0x00);
serial.write ((byte)0x00);
serial.write (0x22);
serial.write (0x7e);
#ifdef DEBUG
Serial.print (0xbb);
Serial.print (0x00);
Serial.print (0x22);
Serial.print (0x00);
Serial.print (0x00);
Serial.print (0x22);
Serial.print (0x7e);
Serial.println ();
#endif
}
void setup ()
{
Serial.begin (115200);
serial.begin (115200);
Serial.println ("begin initial Serial!\n");
}
void loop ()
{
sendIdentifyCmd ();
delay (2);
while(serial.available () > 0)
{
incomingByte=serial.read ();
if (incomingByte <= 0x0F) Serial.print("0");
Serial.print (incomingByte,HEX);
Serial.print (' ');
}
Serial.println ();
delay (1000);
}
Я пробовал байты последовательного чтения до тех пор, пока не появится код ниже, но он просто печатает abc: 2abc: 5
void loop ()
{
sendIdentifyCmd ();
delay (2);
while(serial.available () > 0)
{
incomingByte=serial.read ();
if (incomingByte <= 0x0F) Serial.print("0");
Serial.print (incomingByte,HEX);
Serial.print (' ');
}
Serial.println();
delay(1000);
while(serial.available()>0)
{
abc=serial.readBytesUntil(0xFF, buffer, 24);
Serial.print("abc: ");
Serial.print(abc, HEX);
}
Serial.println ();
delay (1000);
}
Sting incomingString=serial.readString();
вместоincomingByte=serial.read ();
- person mehdi   schedule 15.01.2021