![]() |
Rcb4Class 2.0.0
|
Rcb4BaseClassから派生してArduinoのSerial(HardwareSerial)経由でRCB4と通信を行います。 More...
#include <Rcb4HardSerialClass.h>
Public Member Functions | |
Rcb4HardSerialClass () | |
コンストラクタ | |
Rcb4HardSerialClass (HardwareSerial *rcb4Serial) | |
コンストラクタ | |
Rcb4HardSerialClass (HardwareSerial *rcb4Serial, long baudrate, int timeout) | |
コンストラクタ | |
~Rcb4HardSerialClass () | |
デストラクタ | |
virtual bool | open () |
通信の初期設定 | |
virtual bool | open (long baudrate, int timeout) |
通信の初期設定 | |
bool | open (HardwareSerial *rcb4Serial, long baudrate, int timeout) |
通信の初期設定 | |
virtual bool | synchronize (byte txBuf[], byte txLen, byte rxBuf[], byte rxLen) |
RCB-4との送受信 | |
![]() | |
bool | isSynchronize () |
通信中かどうか返す関数 | |
bool | getConfig (unsigned short *confData) |
RCB4のコンフィグデータを読み取る | |
bool | getConfig () |
RCB4のコンフィグデータを読み取る | |
int | moveComToRamCmd (byte *txData, int destAddr, byte destData[], int destDataSize) |
COMからRAMにデータを転送するコマンドを生成する | |
int | moveComToRamCmd (int destAddr, byte destData[], int destDataSize) |
COMからRAMにデータを転送するコマンドを生成する | |
int | moveRamToComCmd (byte *txData, int scrAddr, int scrDataSize) |
RAMのデータをCOMに送るコマンドを生成する | |
int | moveRamToComCmd (int scrAddr, int scrDataSize) |
RAMのデータをCOMに送るコマンドを生成する | |
int | moveComToDeviceCmd (byte *txData, byte icsNum, byte offset, int data) |
COMからのデータをICSに展開するコマンドを生成する(short 2byteバージョン) | |
int | moveComToDeviceCmd (byte *txData, byte idNum, byte sioNum, byte offset, int data) |
COMからのデータをICSに展開するコマンドを生成する(short 2byteバージョン) | |
int | moveComToDeviceCmd (byte idNum, byte sioNum, byte offset, int data) |
COMからのデータをICSに展開するコマンドを生成し、送信バッファに入れる(short 2byteバージョン) | |
int | moveComToDeviceCmd (byte icsNum, byte offset, int data) |
COMからのデータをICSに展開するコマンドを生成し、送信バッファに入れる(short 2byteバージョン) | |
int | moveComToDeviceCmd (byte *txData, byte icsNum, byte offset, byte dataArray[], int dataArraySize) |
COMからのデータをICSに展開するコマンドを生成する(複数byteバージョン) | |
int | moveComToDeviceCmd (byte *txData, byte idNum, byte sioNum, byte offset, byte dataArray[], int dataArraySize) |
COMからのデータをICSに展開するコマンドを生成する(複数byteバージョン) | |
int | moveComToDeviceCmd (byte icsNum, byte offset, byte dataArray[], int dataArraySize) |
COMからのデータをICSに展開するコマンドを生成し、送信バッファに入れる(複数byteバージョン) | |
int | moveComToDeviceCmd (byte idNum, byte sioNum, byte offset, byte dataArray[], int dataArraySize) |
COMからのデータをICSに展開するコマンドを生成し、送信バッファに入れる(複数byteバージョン) | |
int | moveDeviceToComCmd (byte *txData, byte icsNum, byte offset, byte dataSize) |
ICSのデータをCOMに転送するコマンドを生成する | |
int | moveDeviceToComCmd (byte *txData, byte idNum, byte sioNum, byte offset, byte dataSize) |
ICSのデータをCOMに転送するコマンドを生成する | |
int | moveDeviceToComCmd (byte icsNum, byte offset, byte dataSize) |
ICSのデータをCOMに転送するコマンドを生成する | |
int | moveDeviceToComCmd (byte idNum, byte sioNum, byte offset, byte dataSize) |
ICSのデータをCOMに転送するコマンドを生成し、送信バッファに入れる | |
int | callCmd (byte *txData, long romAddr) |
指定したアドレスにジャンプ(CALL)するコマンドを生成します | |
int | callCmd (long romAddr) |
指定したアドレスにジャンプ(CALL)するコマンドを生成します | |
int | runSingleServoCmd (byte *txData, ServoData servoData, byte frame) |
指定したサーボモータを1個だけ動かすコマンドを作成します | |
int | runSingleServoCmd (ServoData servoData, byte frame) |
指定したサーボモータを1個だけ動かすコマンドを作成します | |
int | runSingleServoCmd (byte *txData, byte idNum, byte sioNum, int pos, byte frame) |
指定したサーボモータを1個だけ動かすコマンドを作成します | |
int | runSingleServoCmd (byte idNum, byte sioNum, int pos, byte frame) |
指定したサーボモータを1個だけ動かすコマンドを作成します | |
int | runConstFrameServoCmd (byte *txData, ServoData servoDatas[], byte servoCount, byte frame) |
指定したサーボモータを複数個動かすコマンドの生成 | |
int | runConstFrameServoCmd (ServoData servoData[], byte servoCount, byte frame) |
指定したサーボモータを複数個動かすコマンドの生成 | |
int | setParametersBaseCmd (byte *txData, byte servoParameter, ServoData servoDatas[], byte servoCount) |
指定したサーボモータを複数個パラメータを変えるコマンドの生成 | |
int | setParametersBaseCmd (byte servoParameter, ServoData servoData[], byte servoCount) |
指定したサーボモータを複数個パラメータを変えるコマンドの生成 | |
int | setSpeedCmd (byte *txData, ServoData servoDatas[], byte servoCount) |
指定したサーボモータを複数個スピードを変えるコマンドの生成 | |
int | setSpeedCmd (ServoData servoData[], byte servoCount) |
指定したサーボモータを複数個スピードを変えるコマンドの生成 | |
int | setStretchCmd (byte *txData, ServoData servoDatas[], byte servoCount) |
指定したサーボモータを複数個ストレッチを変えるコマンドの生成 | |
int | setStretchCmd (ServoData servoData[], byte servoCount) |
指定したサーボモータを複数個ストレッチを変えるコマンドの生成 | |
int | acknowledgeCmd (byte *txData) |
ackコマンドの生成 | |
int | acknowledgeCmd () |
ackコマンドの生成 | |
bool | checkAcknowledge () |
ackコマンドを送信 | |
bool | setCheckSum (byte dataBytes[]) |
コマンドのチェックサムを計算し、最後尾にいれます | |
bool | checkCheckSum (byte dataBytes[]) |
送られてきたコマンドのチェックサムがあっているか確認します | |
bool | checkReverceCmd (byte dataBytes[], byte cmd) |
返信データが簡易的チェックをします | |
unsigned short | getPio () |
現在のPIOの状態を取得します | |
bool | setPio (unsigned short pioData) |
現在のPIOの状態を変更します | |
unsigned short | getPioMode () |
現在のPIOの入出力状態を取得します | |
bool | setPioMode (unsigned short pioModeData) |
現在のPIOの入出力状態を変更します | |
unsigned short | getAdData (int adPort) |
現在指定したADの値を取得します | |
bool | setSingleServo (byte id, byte sio, int pos, byte frame) |
指定したサーボモータ単体を動作させます | |
bool | setSingleServo (ServoData servoData, byte frame) |
指定したサーボモータ単体を動作させます | |
bool | setFreeSingleServo (byte id, byte sio) |
指定したサーボモータ単体をフリーにします | |
bool | setHoldSingleServo (byte id, byte sio) |
指定したサーボモータ単体にトルクをかけます | |
int | getSinglePos (byte id, byte sio) |
指定したサーボモータのポジションデータを取得します | |
bool | setServoPos (ServoData servoDatas[], byte servoCount, byte frame) |
指定したサーボモータ複数を動作させます | |
bool | setFreePos (ServoData servoDatas[], byte servoCount) |
指定したサーボモータ単体をフリーにします | |
bool | setHoldPos (ServoData servoDatas[], byte servoCount) |
指定した複数のサーボモータにトルクをかけます | |
bool | setServoSpeed (ServoData servoDatas[], byte servoCount) |
指定したサーボモータのスピードを変更します | |
bool | setServoStretch (ServoData servoDatas[], byte servoCount) |
指定したサーボモータのストレッチを変更します | |
byte | icsNum2id (byte id, byte sio) |
IDとSIOの番号からICS番号に変更します | |
bool | motionPlay (int motionNum) |
指定したモーションを再生させます | |
bool | setMotionNum (byte motionNum) |
指定したモーションにジャンプします | |
bool | resetProgramCounter () |
プロフラムカウンタをリセットします | |
bool | suspend (unsigned short *config) |
モーションを一時停止させます | |
bool | suspend () |
モーションを一時停止させます | |
bool | resume (unsigned short *configData) |
モーションを再開させます | |
bool | resume () |
モーションを再開させます | |
long | motionAddr2motionNum (byte motionNum) |
モーション番号からモーションの先頭アドレスを求めます | |
int | getMotionPlayNum (void) |
現在動いているモーションの番号を取得します | |
bool | setKrrData (unsigned short buttonData, byte adData[4]) |
KRRの領域にデータをすべて送信する(疑似的にボタンデータを送る) | |
bool | setKrrButtonData (unsigned short buttonData) |
KRRの領域にボタンデータを送信する(疑似的にボタンデータを送る) | |
bool | setKrrAdData (byte paPort, byte adData) |
KRRの領域にボタンデータを送信する(疑似的にボタンデータを送る) | |
bool | setServoDefaultMixing (byte id, byte sio, byte mixNum, int addr, char gain) |
指定したサーボモータのミキシングを設定する(ユーザ変数ミキシング) | |
bool | setServoUserParmeterMixing (byte id, byte sio, byte mixNum, int userParamNum, char gain) |
指定したサーボモータのミキシングを設定する(ユーザ変数ミキシング) | |
bool | setServoAdMixing (byte id, byte sio, byte mixNum, int adPort, char gain) |
指定したサーボモータのミキシングを設定する(ユーザ変数ミキシング) | |
bool | setServoMixGain (byte id, byte sio, byte mixNum, char gain) |
指定したサーボモータのミキシングゲインのみを変更します | |
bool | resetServoMixing (byte id, byte sio, byte mixNum) |
指定したサーボモータのミキシングをOFFにします | |
bool | setUserParmeter (int userParamNum, short data) |
ユーザ変数の値を設定する | |
short | getUserParmeter (int userParamNum) |
指定したユーザ変数の値を取得する | |
bool | setUserCounter (int counterNum, byte data) |
ユーザカウンタを設定する | |
byte | getUserCounter (int counterNum) |
Protected Attributes | |
HardwareSerial * | rcbHardSerial |
通信使用するためのポインタ変数 | |
int | g_timeout = 1000 |
タイムアウトの設定 | |
long | g_baudrate = 115200 |
通信速度の設定 | |
![]() | |
byte | txBuf [128] |
送信用バッファ | |
byte | rxBuf [128] |
受信用バッファ | |
bool | _isSynchronize = false |
現在送受信中(synchronize)か判断します true:実行中 false:待機中 | |
Additional Inherited Members | |
![]() | |
enum | AckType : byte { Ack = 0x06 , Nack = 0x15 } |
ACKの値 More... | |
enum | CommandTypes : byte { Move = 0x00 , Jump = 0x0B , Call = 0x0C , SingleServo = 0x0F , ConstFrameServo = 0x10 , ServoParam = 0x12 , AckCheck = 0xFE , None = 0xFF } |
RCB4のコマンドの定義 More... | |
enum | SubMoveCmd : byte { RamToCom = 0x20 , ComToRam = 0x02 , DeviceToCom = 0x21 , ComToDevice = 0x12 } |
moveコマンドのサブコマンドの定義 More... | |
enum | RamAddr : unsigned short { ConfigRamAddress = 0x0000 , ProgramCounterRamAddress = 0x0002 , AdcRamAddress = 0x0022 , PioModeAddres = 0x0038 , PioAddress = 0x003A , KrrButtonDataAddress = 0x0350 , KrrPa1Address = 0x0352 , CounterRamAddress = 0x0457 , UserParmeterRamAddress = 0x0462 } |
RAMに保存されているアドレスの一覧 More... | |
enum | RomAddr : long { StartupCmdRomAddress = 0x0444 , MainLoopCmd = 0x044B , MotionRomAddress = 0x0b80 } |
ROMに保存されているアドレスの一覧 More... | |
enum | DeviceAddrOffset : byte { CategoryAddressOffset = 0x00 , IDAddressOffset = 0x01 , TrimAddressOffset = 0x02 , MotorPositionAddressOffset = 0x04 , PositionAddressOffset = 0x06 , frameAddressOffset = 0x08 , Mixing1AddressOffset = 0x0E , Mixing1RatioAddressOffset = 0x10 , Mixing2AddressOffset = 0x11 , Mixing2RatioAddressOffset = 0x13 } |
(ICS)デバイスの設定値が格納されている各先頭のアドレスからの順番 More... | |
enum | SioNum : byte { SIO1_4 = 0x01 , SIO5_8 = 0x02 } |
Sioコネクタの番号の定義 More... | |
enum | KRR_BUTTON : unsigned short { KRR_BUTTON_NONE = 0x0000 , KRR_BUTTON_UP = 0x0001 , KRR_BUTTON_DOWN = 0x0002 , KRR_BUTTON_RIGHT = 0x0004 , KRR_BUTTON_LEFT = 0x0008 , KRR_BUTTON_TRIANGLE = 0x0010 , KRR_BUTTON_CROSS = 0x0020 , KRR_BUTTON_CIRCLE = 0x0040 , KRR_BUTTON_SQUARE = 0x0100 , KRR_BUTTON_S1 = 0x0200 , KRR_BUTTON_S2 = 0x0400 , KRR_BUTTON_S3 = 0x0800 , KRR_BUTTON_S4 = 0x1000 , KRR_BUTTON_FALSE = 0xFFFF } |
KRRが受信するボタンデータの定義 More... | |
![]() | |
static int | adRamAddr (int adPort) |
指定したADポート番号のアドレスを返す | |
static int | userParmeterAddr (int userParamNum) |
ユーザ変数のRAMアドレスを取得する | |
static int | userCounterAddr (int counterNum) |
カウンターのRAMのアドレスを取得する | |
![]() | |
ConfigData | configData |
コンフィグデータの格納場所 | |
![]() | |
static constexpr int | Version = 220 |
バージョン番号 | |
static constexpr int | AdcCount = 11 |
AD変換器のチャンネル数) | |
static constexpr int | AdcSingleDataCount = 2 |
AD変換器単体のデータバイト数 | |
static constexpr int | AdcDataCount = AdcCount * AdcSingleDataCount |
AD変換器全体のデータバイト数 | |
static constexpr int | MotionSingleDataCount = 2048 |
1モーションあたりのデータバイト数 | |
static constexpr int | MaxMotionCount = 120 |
モーションの最大数) | |
static constexpr long | MotionDataCount = 2048 * 120 |
モーションデータ全体の最大バイト数 | |
static constexpr int | IcsDeviceSize = 35 |
ICSのデバイスの数定義 本当は36だが、KRRは含めない | |
static constexpr int | IcsDeviceDataSize = 20 |
ICS1つのデータサイズ | |
static constexpr int | CounterCount = 10 |
カウンターの数 | |
static constexpr int | UserParmeterCount = 20 |
ユーザ変数のカス | |
![]() | |
byte | CheckSum (byte dataBytes[]) |
コマンドのチェックサムを計算します | |
bool | checkuning (byte *txData) |
データ通信中で、送信バッファに値を入れようとしているかチェックする | |
int64_t | setServoNo (ServoData servoDatas[], byte servoCount) |
複数サーボモータにアクセスするときにコマンドで「動作させるサーボの指定」部分を作成 | |
bool | sortServoDatas (ServoData servoDatas[], byte ServoCount) |
複数サーボモータにアクセスするときにサーボの順番の指定があるのでソートする | |
unsigned short | moveRamToComCmdSynchronize (int scrAddr, byte scrDataSize, byte rxDara[]) |
MoveコマンドでRAM上のデータをCOMに転送します | |
bool | moveComToRamCmdSynchronize (int scrAddr, byte destData[], int destDataSize) |
MoveコマンドでRAM上のデータをCOMに転送します | |
bool | SynchronizeAck (byte *txData) |
何かしらコマンドを送って、ACKが返ってくるか確認 | |
Rcb4BaseClassから派生してArduinoのSerial(HardwareSerial)経由でRCB4と通信を行います。
Rcb4HardSerialClass::Rcb4HardSerialClass | ( | HardwareSerial * | rcb4Serial | ) |
コンストラクタ
[in] | *rcb4Serial | RCB4に設定するUART(HardwareSerial型のポインタ) |
Rcb4HardSerialClass::Rcb4HardSerialClass | ( | HardwareSerial * | rcb4Serial, |
long | baudrate, | ||
int | timeout ) |
コンストラクタ
[in] | *rcb4Serial | RCB4に設定するUART(HardwareSerial型のポインタ) |
[in] | baudrate | サーボの通信速度 |
[in] | timeout | 受信タイムアウト(ms) |
Rcb4HardSerialClass::~Rcb4HardSerialClass | ( | ) |
デストラクタ
|
virtual |
通信の初期設定
true | 通信設定完了 |
false | 通信設定失敗 |
通信の初期設定を行います 同時に、RCB4の通信チェックおよびconfigデータを取得します
bool Rcb4HardSerialClass::open | ( | HardwareSerial * | rcb4Serial, |
long | baudrate, | ||
int | timeout ) |
通信の初期設定
[in] | *rcb4Serial | RCB4に設定するUART(HardwareSerial型のポインタ) |
[in] | baudrate | サーボの通信速度 |
[in] | timeout | 受信タイムアウト(ms) |
true | 通信設定完了 |
false | 通信設定失敗 |
通信の初期設定を行います 同時に、RCB4の通信チェックおよびconfigデータを取得します
|
virtual |
通信の初期設定
[in] | baudrate | サーボの通信速度 |
[in] | timeout | 受信タイムアウト(ms) |
true | 通信設定完了 |
false | 通信設定失敗 |
通信の初期設定を行います 同時に、RCB4の通信チェックおよびconfigデータを取得します
|
virtual |
RCB-4との送受信
[in,out] | *txBuf | |
[in] | txLen | |
[out] | *rxBuf | 受信格納バッファ |
[in] | rxLen | 受信データ数 |
true | 通信成功 |
false | 通信失敗 |
Reimplemented from Rcb4BaseClass.