UdonLibrary
1.0.0
機械システム研究部 C++ ライブラリ
Toggle main menu visibility
読み取り中…
検索中…
一致する文字列を見つけられません
Ros2SerialReader.hpp
[詳解]
1
#pragma once
2
3
#include <serial/serial.h>
4
#include <
Udon/Serializer/Serializer.hpp
>
5
#include <
Udon/Utility/Show.hpp
>
6
7
namespace
Udon
8
{
9
11
template
<
typename
Message>
12
class
Ros2SerialReader
13
{
14
static
constexpr
size_t
Size =
Udon::SerializedSize<Message>
();
15
16
serial::Serial& serial;
17
18
std::vector<uint8_t> buffer;
19
20
public
:
23
Ros2SerialReader
(serial::Serial& bus)
24
: serial(bus)
25
, buffer(Size)
26
{
27
}
28
30
void
update
()
31
{
32
if
(not serial.isOpen())
33
{
34
serial.open();
35
}
36
if
(serial.available() >=
static_cast<
int
>
(Size))
37
{
38
std::vector<uint8_t> buf;
39
serial.read(buf, Size);
40
buffer = std::move(buf);
41
serial.flushInput();
42
}
43
}
44
46
Udon::Optional<Message>
getMessage
()
const
47
{
48
return
Udon::Deserialize<Message>
(buffer);
49
}
50
52
void
show
()
const
53
{
54
if
(
const
auto
message =
getMessage
())
55
{
56
Udon::Show
(*message);
57
}
58
else
59
{
60
Udon::Show
(
"receive failed!"
);
61
}
62
}
63
65
void
showRaw
()
const
66
{
67
for
(
int
i = 0; i < buffer.size(); i++)
68
{
69
std::cout << static_cast<int>(buffer[i]) <<
" "
;
70
}
71
std::cout << std::endl;
72
}
73
};
74
}
// namespace Udon
Serializer.hpp
Show.hpp
Udon::Optional
オプショナル型
Definition
Optional.hpp:62
Udon::Ros2SerialReader::getMessage
Udon::Optional< Message > getMessage() const
メッセージの取得
Definition
Ros2SerialReader.hpp:46
Udon::Ros2SerialReader::show
void show() const
メッセージの表示
Definition
Ros2SerialReader.hpp:52
Udon::Ros2SerialReader::Ros2SerialReader
Ros2SerialReader(serial::Serial &bus)
コンストラクタ
Definition
Ros2SerialReader.hpp:23
Udon::Ros2SerialReader::update
void update()
更新
Definition
Ros2SerialReader.hpp:30
Udon::Ros2SerialReader::showRaw
void showRaw() const
受信バッファを表示
Definition
Ros2SerialReader.hpp:65
Udon
Definition
Bit.hpp:12
Udon::Deserialize
Udon::Optional< T > Deserialize(ArrayView< const uint8_t > buffer)
バイト列からオブジェクトに逆シリアル化します
Definition
Serializer.hpp:87
Udon::Show
void Show(Args &&... args)
区切り文字ありで出力する
Definition
Show.hpp:339
Udon::SerializedSize
constexpr size_t SerializedSize() noexcept
Tをシリアライズした際のバイト列の要素数を取得する
Definition
Serializer.hpp:22