Hi!
Usually, the println prints to the stdout but microcontrollers don't have it.
How can i set a handler for the println/rprintln/hprintln to print, for example, to some USART?
You can print to other things using the write!
and writeln!
macros.
writeln!(io_resource, "format string {}", my_var);
You can't redirect the existing print macros, but you might be able to define your own using write!
?
Currently i use it but i would like to use something like println
Note that in case of a microcontroller you generally use #![no_std]
(as there is no OS for libstd to use) in which case println!()
is entirely unavailable as it is part of libstd.
i know, but there are rprintln/hprintln
Just DIY via macro_rules!
and write
macro, as @alice said
Also you can implement your own _print and then print macro will look like this:
macro_rules! print {
($($args:tt)*) => {
$crate::io::_print(format_args!($($args)*));
}
}
If you can already use write
, you can just define your own print
macro.
You might find some inspiration in A println Macro from the excellent Writing an OS in Rust.
This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.