Using two different readStringUntil "characters"

Hello @GoToLoop,

Your Arduino code compiles with errors:

Errors

Arduino: 1.8.15 (Windows 10), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560

D:\Users\GLV\Documents\Arduino\Serial_send_floats_1_0_0\Serial_send_floats_1_0_0.ino: In function ‘void loop()’:

Serial_send_floats_1_0_0:20:18: error: no matching function for call to ‘write(signed char [2])’

Serial.write(xy);

              ^

In file included from D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/Arduino.h:233:0,

             from sketch\Serial_send_floats_1_0_0.ino.cpp:1:

D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/HardwareSerial.h:129:20: note: candidate: virtual size_t HardwareSerial::write(uint8_t)

 virtual size_t write(uint8_t);

                ^~~~~

D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/HardwareSerial.h:129:20: note: conversion of argument 1 would be ill-formed:

D:\Users\GLV\Documents\Arduino\Serial_send_floats_1_0_0\Serial_send_floats_1_0_0.ino:20:18: warning: invalid conversion from ‘signed char*’ to ‘uint8_t {aka unsigned char}’ [-fpermissive]

Serial.write(xy);

              ^

In file included from D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/Arduino.h:233:0,

             from sketch\Serial_send_floats_1_0_0.ino.cpp:1:

D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/HardwareSerial.h:130:19: note: candidate: size_t HardwareSerial::write(long unsigned int)

 inline size_t write(unsigned long n) { return write((uint8_t)n); }

               ^~~~~

D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/HardwareSerial.h:130:19: note: conversion of argument 1 would be ill-formed:

D:\Users\GLV\Documents\Arduino\Serial_send_floats_1_0_0\Serial_send_floats_1_0_0.ino:20:18: warning: invalid conversion from ‘signed char*’ to ‘long unsigned int’ [-fpermissive]

Serial.write(xy);

              ^

In file included from D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/Arduino.h:233:0,

             from sketch\Serial_send_floats_1_0_0.ino.cpp:1:

D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/HardwareSerial.h:131:19: note: candidate: size_t HardwareSerial::write(long int)

 inline size_t write(long n) { return write((uint8_t)n); }

               ^~~~~

D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/HardwareSerial.h:131:19: note: conversion of argument 1 would be ill-formed:

D:\Users\GLV\Documents\Arduino\Serial_send_floats_1_0_0\Serial_send_floats_1_0_0.ino:20:18: warning: invalid conversion from ‘signed char*’ to ‘long int’ [-fpermissive]

Serial.write(xy);

              ^

In file included from D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/Arduino.h:233:0,

             from sketch\Serial_send_floats_1_0_0.ino.cpp:1:

D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/HardwareSerial.h:132:19: note: candidate: size_t HardwareSerial::write(unsigned int)

 inline size_t write(unsigned int n) { return write((uint8_t)n); }

               ^~~~~

D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/HardwareSerial.h:132:19: note: conversion of argument 1 would be ill-formed:

D:\Users\GLV\Documents\Arduino\Serial_send_floats_1_0_0\Serial_send_floats_1_0_0.ino:20:18: warning: invalid conversion from ‘signed char*’ to ‘unsigned int’ [-fpermissive]

Serial.write(xy);

              ^

In file included from D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/Arduino.h:233:0,

             from sketch\Serial_send_floats_1_0_0.ino.cpp:1:

D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/HardwareSerial.h:133:19: note: candidate: size_t HardwareSerial::write(int)

 inline size_t write(int n) { return write((uint8_t)n); }

               ^~~~~

D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/HardwareSerial.h:133:19: note: conversion of argument 1 would be ill-formed:

D:\Users\GLV\Documents\Arduino\Serial_send_floats_1_0_0\Serial_send_floats_1_0_0.ino:20:18: warning: invalid conversion from ‘signed char*’ to ‘int’ [-fpermissive]

Serial.write(xy);

              ^

In file included from D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/Stream.h:26:0,

             from D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/HardwareSerial.h:29,

             from D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/Arduino.h:233,

             from sketch\Serial_send_floats_1_0_0.ino.cpp:1:

D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/Print.h:52:12: note: candidate: size_t Print::write(const char*)

 size_t write(const char *str) {

        ^~~~~

D:\Program Portable\arduino-1.8.15\hardware\arduino\avr\cores\arduino/Print.h:52:12: note: conversion of argument 1 would be ill-formed:

D:\Users\GLV\Documents\Arduino\Serial_send_floats_1_0_0\Serial_send_floats_1_0_0.ino:20:18: warning: invalid conversion from ‘signed char*’ to ‘const char*’ [-fpermissive]

Serial.write(xy);

              ^

exit status 1

no matching function for call to ‘write(signed char [2])’

This report would have more information with
“Show verbose output during compilation”
option enabled in File → Preferences.

It will compile error free with these changes:

//signed char xy[BYTES];
unsigned char xy[BYTES];

//Serial.write(xy);
Serial.write(xy, 2);

Serial.write(buf, len) works with buf as a:

  • unsigned char xy[2];
  • byte xy[2];
  • uint8_t xy[2];

:)