Конвертировать массив буферов в пригодную для использования строку, используя Arduino? (Для обработки соединения)

для предыдущего кода последовательный монитор получит сообщение в шестнадцатеричном виде, как «08000AE23BDB», но при обработке эти данные просто отображаются как «NaN». Я думаю, что для обработки может быть получена только строка? но «String buffer (buffer [count])», кажется, не может работать, как я могу преобразовать его?

Ниже приведен код Arduino:

   #include <SoftwareSerial.h>

SoftwareSerial SoftSerial(2, 3);
unsigned char buffer[64]; // buffer array for data recieve over serial port
int count=0;     // counter for buffer array

void setup()
{
SoftSerial.begin(9600);               // the SoftSerial baud rate
Serial.begin(9600);             // the Serial port of Arduino baud rate.

}

void loop()
{

if (SoftSerial.available())              // if date is comming from softwareserial port ==> data is comming from SoftSerial shield
{
while(SoftSerial.available())          // reading data into char array
{
buffer[count++]=SoftSerial.read();     // writing data into array
if(count == 64)break;
}

Serial.write(buffer,count);         // if no data transmission ends, write buffer to hardware serial port
clearBufferArray();              // call clearBufferArray function to clear the storaged data from the array
count = 0;                       // set counter of while loop to zero
}
if (Serial.available())            // if data is available on hardwareserial port ==> data is comming from PC or notebook
{
SoftSerial.write(Serial.read());       // write it to the SoftSerial shield
}

}
void clearBufferArray()              // function to clear buffer array
{
for (int i=0; i<count;i++){
{
buffer[i]=NULL;
}
}                  // clear all index of array with command NULL
}

и это массажная часть обработки:

void serialEvent(Serial myPort) {

String inString = myPort.readStringUntil('\n');

if (inString != null) {
inString = trim(inString);

float[] data = float(split(inString, ","));

if (data.length >=1)
{
direction1 = data[0];
}
println("data");
println(data[0]);
}
}

0

Решение

Может быть, это?

 String inString = "08000AE23BDB ";

if (inString != null) {
inString = trim(inString);

String[] data = split(inString, ",");

if (data.length >=1)
{
//direction1 = data[0];
}
println(unhex(data[0]));
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]