UdonLibrary 1.0.0
機械システム研究部 C++ ライブラリ
読み取り中…
検索中…
一致する文字列を見つけられません
E220Writer.hpp
[詳解]
1//
2// E220 無線モジュール送信クラス
3//
4// Copyright (c) 2022-2024 udonrobo
5//
6
7#pragma once
8
10#include "E220Base.hpp"
11
12namespace Udon
13{
14
17 template <typename T>
19 : public Impl::E220Base
20 {
21 public:
23 static constexpr size_t Size = Udon::SerializedSize<T>();
24
26 using MessageType = T;
27
32 {
33 }
34
38 bool isTransmitting(uint32_t timeoutMs = 200) const
39 {
40 return (micros() - lastTransmitUs) / 1000. < timeoutMs;
41 }
42
44 void begin()
45 {
46 E220Base::begin();
47 }
48
51 void begin(uint8_t channel) noexcept
52 {
53 config.channel = channel;
54 begin();
55 }
56
59 void setMessage(const MessageType& message)
60 {
61 if (micros() - lastTransmitUs > 100 and digitalRead(config.aux) == HIGH)
62 {
63 uint8_t buffer[Size];
64 Udon::Serialize(message, buffer);
65 config.serial.write(uint8_t(config.address >> 8));
66 config.serial.write(uint8_t(config.address >> 0));
67 config.serial.write(uint8_t(config.channel));
68 config.serial.write(buffer, sizeof buffer);
69 lastTransmitUs = micros();
70 }
71 }
72
73 private:
74 uint32_t lastTransmitUs = 0;
75 };
76
77} // namespace Udon
E220 送信クラス
Definition E220Writer.hpp:20
E220Writer(const Config &config)
コンストラクタ
Definition E220Writer.hpp:30
void begin(uint8_t channel) noexcept
受信開始
Definition E220Writer.hpp:51
T MessageType
メッセージ型
Definition E220Writer.hpp:26
void begin()
送信開始
Definition E220Writer.hpp:44
void setMessage(const MessageType &message)
メッセージを送信
Definition E220Writer.hpp:59
static constexpr size_t Size
メッセージサイズ
Definition E220Writer.hpp:23
bool isTransmitting(uint32_t timeoutMs=200) const
送信中かどうか
Definition E220Writer.hpp:38
E220 ベースクラス
Definition E220Base.hpp:12
Config config
Definition E220Base.hpp:58
E220Base(const Config &config)
コンストラクタ
Definition E220Base.hpp:62
Definition Bit.hpp:12
bool Serialize(const T &object, ArrayView< uint8_t > buffer)
バッファにシリアル化する
Definition Serializer.hpp:35
constexpr size_t SerializedSize() noexcept
Tをシリアライズした際のバイト列の要素数を取得する
Definition Serializer.hpp:22
設定
Definition E220Base.hpp:16
HardwareSerial & serial
Definition E220Base.hpp:17
uint16_t address
アドレス
Definition E220Base.hpp:31
uint8_t aux
Definition E220Base.hpp:21
uint8_t channel
チャンネル
Definition E220Base.hpp:26