Closed michaelachrisco closed 9 years ago
The problem is: for some boards, Serial is not defined as HardwareSerial, but instead as Serial_.
HardwareSerial.h, line 97:
#if defined(UBRRH) || defined(UBRR0H)
extern HardwareSerial Serial;
#elif defined(USBCON)
#include "USBAPI.h"
// extern HardwareSerial Serial_;
#endif
USBAPI.h, line 25:
//================================================================================
//================================================================================
// Serial over CDC (Serial1 is the physical port)
class Serial_ : public Stream
{
private:
ring_buffer *_cdc_rx_buffer;
public:
void begin(uint16_t baud_count);
void end(void);
virtual int available(void);
virtual void accept(void);
virtual int peek(void);
virtual int read(void);
virtual void flush(void);
virtual size_t write(uint8_t);
using Print::write; // pull in write(str) and write(buf, size) from Print
operator bool();
};
extern Serial_ Serial;
A quick solution would be to declare your own cout using basic_oserialstream.
#include <StandardCplusplus.h>
#include <serstream>
#include <avr/pgmspace.h>
std::basic_oserialstream<char, std::char_traits<char>, Serial_> cout(Serial);
void setup(void)
{
Serial.begin(57600);
}
void loop()
{
cout << "Hello, world." << std::endl;
delay(1000);
}
I get an error compiling the example program serstream:
serstream.ino:11:29: error: no matching function for call to ‘std::basic_oserialstream::basicoserialstream(Serial&)’
serstream.ino:11:29: note: candidates are:
In file included from serstream.ino:2:0:
/home/mike/arduino/libraries/StandardCplusplus/serstream:230:12: note: std::basic_oserialstream<charT, traits, Tserial>::basic_oserialstream(Tserial&) [with charT = char; traits = std::chartraits; Tserial = HardwareSerial]
/home/mike/arduino/libraries/StandardCplusplus/serstream:230:12: note: no known conversion for argument 1 from ‘Serial ’ to ‘HardwareSerial&’
/home/mike/arduino/libraries/StandardCplusplus/serstream:213:60: note: std::basic_oserialstream::basic_oserialstream(const std::basicoserialstream&)
/home/mike/arduino/libraries/StandardCplusplus/serstream:213:60: note: no known conversion for argument 1 from ‘Serial ’ to ‘const std::basic_oserialstream&’