Rcb4Class 2.0.0
Loading...
Searching...
No Matches
Rcb4BaseClass Class Reference

RCB4を動かすため初期設定やコマンドをまとめたクラスです。 このクラスをベースに派生させることで様々な通信形式に対応できるようになります。 More...

#include <Rcb4BaseClass.h>

Inheritance diagram for Rcb4BaseClass:
Rcb4HardSerialClass

Classes

union  ConfigData
 2byteのコンフィグデータを容易にアクセスできるよう共用体にします More...
 
union  DwordByte
 4byte(long型)のデータをアクセスできるよう共用体にします More...
 
union  QwordByte
 8byte(long long型)のデータをアクセスできるよう共用体にします More...
 
struct  ServoData
 サーボモータのIDおよびSIOとポジションの何かしらデータを格納します。 More...
 
union  WordByte
 2byte(short型)のデータをアクセスできるよう共用体にします More...
 

Public Types

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...
 

Public Member Functions

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コマンドの生成
 
virtual bool synchronize (byte txBuf[], byte txLen, byte rxBuf[], byte rxLen)
 ICS通信の送受信
 
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)
 

Static Public Member Functions

static int adRamAddr (int adPort)
 指定したADポート番号のアドレスを返す
 
static int userParmeterAddr (int userParamNum)
 ユーザ変数のRAMアドレスを取得する
 
static int userCounterAddr (int counterNum)
 カウンターのRAMのアドレスを取得する
 

Public Attributes

ConfigData configData
 コンフィグデータの格納場所
 

Static Public Attributes

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
  ユーザ変数のカス
 

Protected Member Functions

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が返ってくるか確認
 

Protected Attributes

byte txBuf [128]
 送信用バッファ
 
byte rxBuf [128]
 受信用バッファ
 
bool _isSynchronize = false
 現在送受信中(synchronize)か判断します true:実行中 false:待機中
 

Detailed Description

RCB4を動かすため初期設定やコマンドをまとめたクラスです。 このクラスをベースに派生させることで様々な通信形式に対応できるようになります。

Member Enumeration Documentation

◆ AckType

ACKの値

Enumerator
Ack 

ACKの値 (0x06)

Nack 

NACKの値 (0x15)

◆ CommandTypes

RCB4のコマンドの定義

Enumerator
Move 

Move命令のコマンド値

Jump 

Jump命令のコマンド値

Call 

Call命令のコマンド値

SingleServo 

サーボモータ1つに対して命令のコマンド値

ConstFrameServo 

サーボモータ複数に対してのコマンド値

ServoParam 

ストレッチやスピードを変更するためのコマンド値

AckCheck 

ACKチェック用のコマンド値

None 

何もなし

◆ DeviceAddrOffset

(ICS)デバイスの設定値が格納されている各先頭のアドレスからの順番

Enumerator
CategoryAddressOffset 

システム設定RAMアドレス(RAM)(0x00固定)

IDAddressOffset 

RAM、ROM上のIDデータの位置

TrimAddressOffset 

RAM、ROM上のトリムデータの位置

MotorPositionAddressOffset 

RAM、ROM上の実測値データの位置

PositionAddressOffset 

RAM、ROM上のポジションデータの位置

frameAddressOffset 

RAM、ROM上のフレーム数データ(補間速度・スピード)の位置

Mixing1AddressOffset 

(14)RAM、ROM上のミキシング1データの位置

Mixing1RatioAddressOffset 

(16)RAM、ROM上のミキシング1倍率データの位置

Mixing2AddressOffset 

(17)RAM、ROM上のミキシング2データの位置

Mixing2RatioAddressOffset 

(19)RAM、ROM上のミキシング2データの位置

◆ KRR_BUTTON

enum Rcb4BaseClass::KRR_BUTTON : unsigned short

KRRが受信するボタンデータの定義

同時押しの場合は各データの論理和をとります

Enumerator
KRR_BUTTON_NONE 

何も押されていない

KRR_BUTTON_UP 

KRR_BUTTON_DOWN 

KRR_BUTTON_RIGHT 

KRR_BUTTON_LEFT 

KRR_BUTTON_TRIANGLE 

KRR_BUTTON_CROSS 

×

KRR_BUTTON_CIRCLE 

KRR_BUTTON_SQUARE 

KRR_BUTTON_S1 

シフト1 左手前

KRR_BUTTON_S2 

シフト2 左奥

KRR_BUTTON_S3 

シフト3 右手前

KRR_BUTTON_S4 

シフト4 右奥

KRR_BUTTON_FALSE 

エラー値(受信失敗等)

◆ RamAddr

enum Rcb4BaseClass::RamAddr : unsigned short

RAMに保存されているアドレスの一覧

Enumerator
ConfigRamAddress 

システム設定RAMアドレス(RAM)(0x00固定)

ProgramCounterRamAddress 

プログラムカウンター設定アドレス(RAM)(0x02固定)

AdcRamAddress 

AD変換器0の値のアドレス(0x22固定)

PioModeAddres 

PIOの入出力設定

PioAddress 

PIOポート値

KrrButtonDataAddress 

KRRのボタンデータが記録されているアドレス

KrrPa1Address 

PA1データ(この後2byteずつデータが続く)

CounterRamAddress 

Counter1のアドレス(この後1byteずつデータが続く)

UserParmeterRamAddress 

ユーザ変数1のアドレス(この後2byteずつデータが続く)

◆ RomAddr

ROMに保存されているアドレスの一覧

Enumerator
StartupCmdRomAddress 

スタートアップモーションを再生するコマンドのアドレス

MainLoopCmd 

メインループが回る最初のアドレス

◆ SioNum

enum Rcb4BaseClass::SioNum : byte

Sioコネクタの番号の定義

Enumerator
SIO1_4 

SIO1-4を示す値

SIO5_8 

SIO5-8を示す値

◆ SubMoveCmd

moveコマンドのサブコマンドの定義

Enumerator
RamToCom 

RAMの値をCOMへ

ComToRam 

COMからの数値をRAMへ

DeviceToCom 

Device(ICS)の値をCOMへ

ComToDevice 

COMからの数値をDevice(ICS)へ

Member Function Documentation

◆ acknowledgeCmd() [1/2]

int Rcb4BaseClass::acknowledgeCmd ( )

ackコマンドの生成

Returns
送信データ数

ACKのコマンドを生成する

Attention
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ acknowledgeCmd() [2/2]

int Rcb4BaseClass::acknowledgeCmd ( byte * txData)

ackコマンドの生成

Parameters
[out]*txData現在入れようと思っている送信バッファ
Returns
送信データ数

ACKのコマンドを生成する

◆ adRamAddr()

int Rcb4BaseClass::adRamAddr ( int adPort)
static

指定したADポート番号のアドレスを返す

Parameters
adPortADポート番号
Returns
アドレス

◆ callCmd() [1/2]

int Rcb4BaseClass::callCmd ( byte * txData,
long romAddr )

指定したアドレスにジャンプ(CALL)するコマンドを生成します

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]romAddrジャンプするアドレス
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

ROMの指定アドレスにジャンプする命令を生成します。

Call命令なので、終わったら元の場所に戻ります。

◆ callCmd() [2/2]

int Rcb4BaseClass::callCmd ( long romAddr)

指定したアドレスにジャンプ(CALL)するコマンドを生成します

Parameters
[in]romAddrジャンプするアドレス
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

ROMの指定アドレスにジャンプする命令を生成します。

Call命令なので、終わったら元の場所に戻ります。

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ checkAcknowledge()

bool Rcb4BaseClass::checkAcknowledge ( )

ackコマンドを送信

Returns
ACKコマンド後合否判定
Return values
Falseコマンドが返ってこなかった時およびNCKが返ってきたとき

ACKのコマンドを送信する

Attention
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ checkCheckSum()

bool Rcb4BaseClass::checkCheckSum ( byte dataBytes[])

送られてきたコマンドのチェックサムがあっているか確認します

Parameters
[in]dataBytes[]コマンドが入ったデータ
Returns
チェックサムの判定
Return values
Falseチェックサムが間違っていたとき、データ数が0だった時

送られてきたコマンドのチェックサムがあっているか確認します

Attention
コマンドの先頭にはデータ数が入っています

◆ checkReverceCmd()

bool Rcb4BaseClass::checkReverceCmd ( byte dataBytes[],
byte cmd )

返信データが簡易的チェックをします

Parameters
[in]dataBytes[]返信データが入った配列
[in]cmd送信したコマンド
Returns
返信データの判定
Return values
Falseチェックサムが間違っていたとき、2byte目が送信コマンドと違っていたとき

返信データの簡易チェックをします 返信データのチェックサムおよびコマンド部分のチェック

Attention
コマンドの先頭にはデータ数が入っています

◆ CheckSum()

byte Rcb4BaseClass::CheckSum ( byte dataBytes[])
protected

コマンドのチェックサムを計算します

Parameters
[in]dataBytes[]コマンドが入ったデータ
Returns
コマンドのチェックサム

コマンドのチェックサムを計算します

Attention
コマンドの先頭にはコマンドのデータ数が入っています

◆ checkuning()

bool Rcb4BaseClass::checkuning ( byte * txData)
protected

データ通信中で、送信バッファに値を入れようとしているかチェックする

Parameters
[in]*txData現在入れようと思っている送信バッファ
Returns
成功かどうか判定のフラグ
Return values
true現在入れようとしているバッファは何も使っていない
false現在入れようとしているバッファは使っている最中である
Attention
Rcb4BaseClassで使っている送信バッファは共通で使っているので、送信中に変えないか確認を行っている データ通信中で、送信バッファに値を入れようとしているかチェック

◆ getAdData()

unsigned short Rcb4BaseClass::getAdData ( int adPort)

現在指定したADの値を取得します

Parameters
[in]adPortADポートの指定(0~10)
Returns
指定したADの値(分解能10bit)
Return values
-1(0xFFFF)通信失敗

Move命令を使って指定した現在のAD値を取得します

Note
AD0を取得すると現在の電源電圧値を分圧した値が読めます

◆ getConfig() [1/2]

bool Rcb4BaseClass::getConfig ( )

RCB4のコンフィグデータを読み取る

Returns
成功かどうか判定のフラグ
Return values
true通信成功、データ取得
false通信失敗
Attention
class内のconfigDataに値が代入されます

◆ getConfig() [2/2]

bool Rcb4BaseClass::getConfig ( unsigned short * confData)

RCB4のコンフィグデータを読み取る

Parameters
[out]confDataRCB4のコンフィグデータ
Returns
成功かどうか判定のフラグ
Return values
true通信成功、データ取得
false通信失敗
Attention
返す値はclass内のconfigDataの値がコピーされます。(configDataの中に一度入ります)
Date
2019/01/15 confDataのアドレスにデータを入れていたので修正

◆ getMotionPlayNum()

int Rcb4BaseClass::getMotionPlayNum ( void )

現在動いているモーションの番号を取得します

Return values
0どのモーションも再生されていない(待機中のLOOPを回っている)
-1通信失敗
-2再生されている場所が異常である
Note
現在再生されているモーション番号を現在のプログラムカウンタとフラグから算出する
モーション内で違うモーションにジャンプをしていたらジャンプしたモーション番号が得られます
アドレスに関してはRCB-4プログラミングマニュアルをご覧ください。
Attention
モーションアドレスは、HTH4のV2.2以降のアドレスになります。
V2.0以前のアドレスでは誤動作をしますので注意が必要です
Date
2025/01/31 追加

◆ getPio()

unsigned short Rcb4BaseClass::getPio ( )

現在のPIOの状態を取得します

Returns
現在のPIOの状態(2byteを含めすべて)
Return values
-1(0xFFFF)通信失敗

Move命令を使って現在のPIOのHかLの状態を取得します

Attention
1bitずつ判定できないので注意

◆ getPioMode()

unsigned short Rcb4BaseClass::getPioMode ( )

現在のPIOの入出力状態を取得します

Returns
現在のPIOの状態(2byteを含めすべて)
Return values
-1(0xFFFF)通信失敗

Move命令を使って現在のPIOの入力か出力かを取得します

Note
対応したbitの 1:出力 0:入力
Attention
1bitずつ判定できないので注意

◆ getSinglePos()

int Rcb4BaseClass::getSinglePos ( byte id,
byte sio )

指定したサーボモータのポジションデータを取得します

Parameters
[in]idサーボモータのID
[in]sioSIOの値(SioNum)
Returns
指定したサーボモータのポジションデータ
Return values
-1通信失敗

ID,SIOで指定したサーボモータのポジションデータを取得します

◆ getUserParmeter()

short Rcb4BaseClass::getUserParmeter ( int userParamNum)

指定したユーザ変数の値を取得する

Parameters
userParamNumユーザ変数の番号
Return values
ユーザ変数の値
0x7FFFFalse (0xFFFFは-1になり、来る可能性が高いのでわざと0x7FFFにする)
Warning
失敗した時に0x7FFFで返ってくるので注意してください
Date
2025/01/31 追加

◆ icsNum2id()

byte Rcb4BaseClass::icsNum2id ( byte id,
byte sio )

IDとSIOの番号からICS番号に変更します

Parameters
[in]idサーボモータのID
[in]sioSIOの値(SioNum)
Returns
ICS番号

IDとSIOの番号からRCB4内部で扱うICS番号に変更します

◆ isSynchronize()

bool Rcb4BaseClass::isSynchronize ( )
inline

通信中かどうか返す関数

Return values
true送信中
false待機中

◆ motionAddr2motionNum()

long Rcb4BaseClass::motionAddr2motionNum ( byte motionNum)

モーション番号からモーションの先頭アドレスを求めます

Returns
モーション番号の先頭のアドレス

モーション番号からモーションの先頭アドレスを求めます

Note
アドレスに関してはRCB-4プログラミングマニュアルをご覧ください。
Attention
モーションアドレスは、HTH4のV2.2以降のアドレスになります。
V2.0以前のアドレスでは誤動作をしますので注意が必要です

◆ motionPlay()

bool Rcb4BaseClass::motionPlay ( int motionNum)

指定したモーションを再生させます

Parameters
[in]motionNum再生させるモーション番号
Returns
通信が成功かどうか
Return values
False通信失敗

指定したモーションを再生させます

Note
suspend() => resetProgramCounter() => setMotionNum() => resume()
一時中断 => プログラムカウンタをリセット => 動かすモーションアドレスにジャンプ => モーションの再開 の手順でモーションを再生させます
Attention
現在、他のモーションを再生中でも強制的に止めてから再生させます

◆ moveComToDeviceCmd() [1/8]

int Rcb4BaseClass::moveComToDeviceCmd ( byte * txData,
byte icsNum,
byte offset,
byte dataArray[],
int dataArraySize )

COMからのデータをICSに展開するコマンドを生成する(複数byteバージョン)

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]icsNumICS番号
[in]offset何バイト離れたところをアクセスするか
[in]dataArray書き込むデータ配列
[in]dataArraySize書き込むデータ数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

COMからRCB4の内のICSエリアに割り当てられたデータに反映させます

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

◆ moveComToDeviceCmd() [2/8]

int Rcb4BaseClass::moveComToDeviceCmd ( byte * txData,
byte icsNum,
byte offset,
int data )

COMからのデータをICSに展開するコマンドを生成する(short 2byteバージョン)

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]icsNumICS番号
[in]offset何バイト離れたところをアクセスするか
[in]data2byte分のデータ
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

COMからRCB4の内のICSエリアに割り当てられたデータに反映させます

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

◆ moveComToDeviceCmd() [3/8]

int Rcb4BaseClass::moveComToDeviceCmd ( byte * txData,
byte idNum,
byte sioNum,
byte offset,
byte dataArray[],
int dataArraySize )

COMからのデータをICSに展開するコマンドを生成する(複数byteバージョン)

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]idNumサーボのID番号
[in]sioNumSIO(SioNum)の番号
[in]offset何バイト離れたところをアクセスするか
[in]dataArray書き込むデータ
[in]dataArraySize書き込むデータ数
Return values
int送信データ数
-1バッファに何か使われているかサイズが249byte以上

COMからRCB4の内のICSエリアに割り当てられたデータに反映させます

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

◆ moveComToDeviceCmd() [4/8]

int Rcb4BaseClass::moveComToDeviceCmd ( byte * txData,
byte idNum,
byte sioNum,
byte offset,
int data )

COMからのデータをICSに展開するコマンドを生成する(short 2byteバージョン)

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]idNumサーボのID番号
[in]sioNumSIO(SioNum)の番号
[in]offset何バイト離れたところをアクセスするか
[in]data2byte分のデータ
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

COMからRCB4の内のICSエリアに割り当てられたデータに反映させます

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

◆ moveComToDeviceCmd() [5/8]

int Rcb4BaseClass::moveComToDeviceCmd ( byte icsNum,
byte offset,
byte dataArray[],
int dataArraySize )

COMからのデータをICSに展開するコマンドを生成し、送信バッファに入れる(複数byteバージョン)

Parameters
[in]icsNumics番号
[in]offset何バイト離れたところをアクセスするか
[in]dataArray書き込むデータ
[in]dataArraySize書き込むデータ数
Return values
int送信データ数
-1バッファに何か使われているかサイズが249byte以上

COMからRCB4の内のICSエリアに割り当てられたデータに反映させます

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

◆ moveComToDeviceCmd() [6/8]

int Rcb4BaseClass::moveComToDeviceCmd ( byte icsNum,
byte offset,
int data )

COMからのデータをICSに展開するコマンドを生成し、送信バッファに入れる(short 2byteバージョン)

Parameters
[in]icsNumICS番号
[in]offset何バイト離れたところをアクセスするか
[in]data2byte分のデータ
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

COMからRCB4の内のICSエリアに割り当てられたデータに反映させます

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ moveComToDeviceCmd() [7/8]

int Rcb4BaseClass::moveComToDeviceCmd ( byte idNum,
byte sioNum,
byte offset,
byte dataArray[],
int dataArraySize )

COMからのデータをICSに展開するコマンドを生成し、送信バッファに入れる(複数byteバージョン)

Parameters
[in]idNumサーボのID番号
[in]sioNumSIO(SioNum)の番号
[in]offset何バイト離れたところをアクセスするか
[in]dataArray書き込むデータ
[in]dataArraySize書き込むデータ数
Return values
int送信データ数
-1バッファに何か使われているかサイズが249byte以上

COMからRCB4の内のICSエリアに割り当てられたデータに反映させます

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

◆ moveComToDeviceCmd() [8/8]

int Rcb4BaseClass::moveComToDeviceCmd ( byte idNum,
byte sioNum,
byte offset,
int data )

COMからのデータをICSに展開するコマンドを生成し、送信バッファに入れる(short 2byteバージョン)

Parameters
[in]idNumサーボのID番号
[in]sioNumSIO(SioNum)の番号
[in]offset何バイト離れたところをアクセスするか
[in]data2byte分のデータ
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

COMからRCB4の内のICSエリアに割り当てられたデータに反映させます

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ moveComToRamCmd() [1/2]

int Rcb4BaseClass::moveComToRamCmd ( byte * txData,
int destAddr,
byte destData[],
int destDataSize )

COMからRAMにデータを転送するコマンドを生成する

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]destAddrRCB4に書き込む先頭アドレス
[in]destData[]書き込みデータ
[in]destDataSize書込みデータ数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

COMからRCB4内部RAMのデータを書き換えるコマンドを生成します

◆ moveComToRamCmd() [2/2]

int Rcb4BaseClass::moveComToRamCmd ( int destAddr,
byte destData[],
int destDataSize )

COMからRAMにデータを転送するコマンドを生成する

Parameters
[in]destAddrRCB4に書き込む先頭アドレス
[in]destData[]書き込みデータ
[in]destDataSize書込みデータ数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

COMからRCB4内部RAMのデータを書き換えるコマンドを生成します

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ moveComToRamCmdSynchronize()

bool Rcb4BaseClass::moveComToRamCmdSynchronize ( int scrAddr,
byte destData[],
int destDataSize )
protected

MoveコマンドでRAM上のデータをCOMに転送します

Parameters
[in]scrAddr取得するRAMデータの先頭アドレス
[in]destData[]送信データ配列(単純にデータのみ)
[out]destDataSize送信データサイズ(単純にデータのみ)
Returns
通信判定等
Return values
False送信失敗等

COMからRAM上の指定したアドレスにデータを書きこみます

◆ moveDeviceToComCmd() [1/4]

int Rcb4BaseClass::moveDeviceToComCmd ( byte * txData,
byte icsNum,
byte offset,
byte dataSize )

ICSのデータをCOMに転送するコマンドを生成する

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]icsNumICS番号
[in]offset何バイト離れたところをアクセスするか
[in]dataSize取得するデータ数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

RCB4のICSエリアに割り当てられたデータをCOMに転送するコマンドを生成します

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

◆ moveDeviceToComCmd() [2/4]

int Rcb4BaseClass::moveDeviceToComCmd ( byte * txData,
byte idNum,
byte sioNum,
byte offset,
byte dataSize )

ICSのデータをCOMに転送するコマンドを生成する

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]idNumサーボのID番号
[in]sioNumSIO(SioNum)の番号
[in]offset何バイト離れたところをアクセスするか
[in]dataSize取得するデータ数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

RCB4のICSエリアに割り当てられたデータをCOMに転送するコマンドを生成します

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

◆ moveDeviceToComCmd() [3/4]

int Rcb4BaseClass::moveDeviceToComCmd ( byte icsNum,
byte offset,
byte dataSize )

ICSのデータをCOMに転送するコマンドを生成する

Parameters
[in]icsNumICS番号
[in]offset何バイト離れたところをアクセスするか
[in]dataSize取得するデータ数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

RCB4のICSエリアに割り当てられたデータをCOMに転送するコマンドを生成します

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ moveDeviceToComCmd() [4/4]

int Rcb4BaseClass::moveDeviceToComCmd ( byte idNum,
byte sioNum,
byte offset,
byte dataSize )

ICSのデータをCOMに転送するコマンドを生成し、送信バッファに入れる

Parameters
[in]idNumサーボのID番号
[in]sioNumSIO(SioNum)の番号
[in]offset何バイト離れたところをアクセスするか
[in]dataSize取得するデータ数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

RCB4のICSエリアに割り当てられたデータをCOMに転送するコマンドを生成します

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ moveRamToComCmd() [1/2]

int Rcb4BaseClass::moveRamToComCmd ( byte * txData,
int scrAddr,
int scrDataSize )

RAMのデータをCOMに送るコマンドを生成する

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]scrAddrRCB4に書き込む先頭アドレス
[in]scrDataSize書込みデータ数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

RCB4の内のRAMのデータをCOMに送るコマンドを生成します

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

◆ moveRamToComCmd() [2/2]

int Rcb4BaseClass::moveRamToComCmd ( int scrAddr,
int scrDataSize )

RAMのデータをCOMに送るコマンドを生成する

Parameters
[in]scrAddrRCB4に書き込む先頭アドレス
[in]scrDataSize書込みデータ数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

RCB4の内のRAMのデータをCOMに送るコマンドを生成します

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ moveRamToComCmdSynchronize()

unsigned short Rcb4BaseClass::moveRamToComCmdSynchronize ( int scrAddr,
byte scrDataSize,
byte rxDara[] )
protected

MoveコマンドでRAM上のデータをCOMに転送します

Parameters
[in]scrAddr取得するRAMデータの先頭アドレス
[in]scrDataSize取得するRAMのデータ数
[out]rxDara[]受信データ(純粋にRAMのデータのみ)
Returns
返信データのデータ数
Return values
-1(0xFFFF) 送信失敗等

RAM上指定した先頭アドレスから指定したデータ数分のデータをCOMに転送します

Note
返り値はコマンドを含まないデータになります。
Date
2019/01/16 rxBufの先頭アドレスをもとにmemcopyを行うと予期せぬデータで誤動作するのでfor文でデータを挿入するように変更

◆ resetProgramCounter()

bool Rcb4BaseClass::resetProgramCounter ( )

プロフラムカウンタをリセットします

Returns
通信が成功かどうか
Return values
False通信失敗

プログラムカウンタをリセットします。

Note
プログラムカウンタをRCB4初期設定後のアドレスに移動させます。 また、同時にEEPROM更新フラグも0にしておきます
Attention
現在、他のモーションを再生中でも強制的に変わりますので、注意が必要です

◆ resetServoMixing()

bool Rcb4BaseClass::resetServoMixing ( byte id,
byte sio,
byte mixNum )

指定したサーボモータのミキシングをOFFにします

Parameters
idサーボモータのID
sioサーボモータが接続されているSIO番号(SIO1-4:0x01,SIO5-8:0x02)
mixNumミキシングの番号(1or2)
Return values
True通信成功
False失敗成功
Note
指定したサーボモータのミキシングをOFFにします。
アドレスには0xFFFFが書き込まれます
Date
2025/01/31 追加

◆ resume() [1/2]

bool Rcb4BaseClass::resume ( )

モーションを再開させます

Returns
通信が成功かどうか
Return values
False通信失敗

モーションを一時停止させます

Note
正確には、システムレジスタのEnableRunEeprom値を変更します ベクタジャンプを有効化して無線機などのボタンデータでジャンプできるようにします
Attention
現在、他のモーションを再生中でも強制的に止めます
configData値を直接変えますので、注意が必要です

◆ resume() [2/2]

bool Rcb4BaseClass::resume ( unsigned short * config)

モーションを再開させます

Parameters
[in,out]config外部で覚えているconfigデータ
Returns
通信が成功かどうか
Return values
False通信失敗

モーションを一時停止させます

Note
正確には、システムレジスタのEnableRunEeprom値を変更します ベクタジャンプを有効化して無線機などのボタンデータでジャンプできるようにします
Attention
config内を直接変えますので、注意が必要です

◆ runConstFrameServoCmd() [1/2]

int Rcb4BaseClass::runConstFrameServoCmd ( byte * txData,
ServoData servoDatas[],
byte servoCount,
byte frame )

指定したサーボモータを複数個動かすコマンドの生成

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]servoDatas[]アクセスするサーボのデータの配列
[in]servoCountアクセスするサーボのデータの配列数(サーボの数)
[in]frameフレーム数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

複数個サーボモータを動かすコマンドを生成します。

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
ServoDataのdataにはポジションデータを入れます

◆ runConstFrameServoCmd() [2/2]

int Rcb4BaseClass::runConstFrameServoCmd ( ServoData servoDatas[],
byte servoCount,
byte frame )

指定したサーボモータを複数個動かすコマンドの生成

Parameters
[in]servoDatas[]アクセスするサーボのデータの配列
[in]servoCountアクセスするサーボのデータの配列数(サーボの数)
[in]frameフレーム数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

複数個サーボモータを動かすコマンドを生成します。

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
ServoDataのdataにはポジションデータを入れます
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ runSingleServoCmd() [1/4]

int Rcb4BaseClass::runSingleServoCmd ( byte * txData,
byte idNum,
byte sioNum,
int pos,
byte frame )

指定したサーボモータを1個だけ動かすコマンドを作成します

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]idNumサーボモータのID番号
[in]sioNum接続しているSIO(SioNum)の番号
[in]posサーボモータのポジションデータ(目標値)
[in]frameフレーム数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

1つだけサーボを動かします。

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

◆ runSingleServoCmd() [2/4]

int Rcb4BaseClass::runSingleServoCmd ( byte * txData,
ServoData servoData,
byte frame )

指定したサーボモータを1個だけ動かすコマンドを作成します

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]servoData動かそうとしているサーボを1まとまりにした型
[in]frameフレーム数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

1つだけサーボを動かします。

ServoData型には、サーボモータのID以外にもSIOと動かすポジションのデータが入ります

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

◆ runSingleServoCmd() [3/4]

int Rcb4BaseClass::runSingleServoCmd ( byte idNum,
byte sioNum,
int pos,
byte frame )

指定したサーボモータを1個だけ動かすコマンドを作成します

Parameters
[in]idNumサーボモータのID番号
[in]sioNum接続しているSIO(SioNum)の番号
[in]posサーボモータのポジションデータ(目標値)
[in]frameフレーム数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

1つだけサーボを動かします。

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ runSingleServoCmd() [4/4]

int Rcb4BaseClass::runSingleServoCmd ( ServoData servoData,
byte frame )

指定したサーボモータを1個だけ動かすコマンドを作成します

Parameters
[in]servoData動かそうとしているサーボを1まとまりにした型
[in]frameフレーム数
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

1つだけサーボを動かします。

ServoData型には、サーボモータのID以外にもSIOと動かすポジションのデータが入ります

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ setCheckSum()

bool Rcb4BaseClass::setCheckSum ( byte dataBytes[])

コマンドのチェックサムを計算し、最後尾にいれます

Parameters
[in,out]dataBytes[]コマンドが入ったデータ
Returns
入れれたかどうかの判定
Return values
Falseコマンドの先頭が0だった時

コマンドのチェックサムを計算し、最後尾に代入します

Attention
コマンドの先頭にはコマンドのデータ数が入っています

◆ setFreePos()

bool Rcb4BaseClass::setFreePos ( ServoData servoDatas[],
byte servoCount )

指定したサーボモータ単体をフリーにします

Parameters
[in]servoDatas[]サーボモータのデータをひとかたまりにしたものを複数個
[in]servoCountservoDatasのサーボの数
Returns
通信が成功かどうか
Return values
False通信失敗

servoDatas[]で指定したサーボモータをフリーにします

Attention
Freeを指定するとHoldのコマンドが発行されるまでFree状態を保ち続けます
servoDatasのDataが0x8000に書き換わります

◆ setFreeSingleServo()

bool Rcb4BaseClass::setFreeSingleServo ( byte id,
byte sio )

指定したサーボモータ単体をフリーにします

Parameters
[in]idサーボモータのID
[in]sioSIOの値(SioNum)
Returns
通信が成功かどうか
Return values
False通信失敗

ID,SIOで指定したサーボモータをフリーにします

Attention
Freeを指定するとHoldのコマンドが発行されるまでFree状態を保ち続けます

◆ setHoldPos()

bool Rcb4BaseClass::setHoldPos ( ServoData servoDatas[],
byte servoCount )

指定した複数のサーボモータにトルクをかけます

Parameters
[in]servoDatas[]サーボモータのデータをひとかたまりにしたものを複数個
[in]servoCountservoDatasのサーボの数
Returns
通信が成功かどうか
Return values
False通信失敗

servoDatas[]で指定したサーボモータをフリーにします Free状態からトルクをかける状態に復帰します

Note
Freeを指定するとHoldのコマンドが発行されるまでFree状態を保ち続けます
Attention
servoDatasのDataが0x7FFFに書き換わります

◆ setHoldSingleServo()

bool Rcb4BaseClass::setHoldSingleServo ( byte id,
byte sio )

指定したサーボモータ単体にトルクをかけます

Parameters
[in]idサーボモータのID
[in]sioSIOの値(SioNum)
Returns
通信が成功かどうか
Return values
False通信失敗

ID,SIOで指定したサーボモータにトルクをかけます Free状態からトルクをかける状態に復帰します

Note
Freeを指定するとHoldのコマンドが発行されるまでFree状態を保ち続けます

◆ setKrrAdData()

bool Rcb4BaseClass::setKrrAdData ( byte paPort,
byte adData )

KRRの領域にボタンデータを送信する(疑似的にボタンデータを送る)

Parameters
[in]paPort指定するADポート(PA1(0x01)~PA4(0x04))
[in]adDataADデータ(7bit)
Returns
通信が成功かどうか
Return values
False通信失敗

Move命令を使ってKRRのADデータを送信します

Note
KRRに受信されているADの領域にデータにおくります。
KRRのAD値を使ってモーションを変更している場合に外部から変更できます
Attention
RCB4にKRRを接続しないでください

◆ setKrrButtonData()

bool Rcb4BaseClass::setKrrButtonData ( unsigned short buttonData)

KRRの領域にボタンデータを送信する(疑似的にボタンデータを送る)

Parameters
[in]buttonDataボタンデータ
Returns
通信が成功かどうか
Return values
False通信失敗

Move命令を使ってKRRの領域にボタンデータを送信します

Note
ボタンデータをRCB4におくります。
サンプルモーション等ボタンをトリガにしているモーションを動かす時に使用します
ボタンを押してない状態をおくるまで押しっぱなしになります
Attention
RCB4にKRRを接続しないでください

◆ setKrrData()

bool Rcb4BaseClass::setKrrData ( unsigned short buttonData,
byte adData[4] )

KRRの領域にデータをすべて送信する(疑似的にボタンデータを送る)

Parameters
[in]buttonDataボタンデータ
[in]adData4byte分のアナログデータを指定
Returns
通信が成功かどうか
Return values
False通信失敗

Move命令を使ってKRRの領域にデータをすべて送信します

Note
ボタンデータをRCB4におくります。
サンプルモーション等ボタンをトリガにしているモーションを動かす時に使用します
ボタンを押してない状態をおくるまで押しっぱなしになります
Attention
RCB4にKRRを接続しないでください

◆ setMotionNum()

bool Rcb4BaseClass::setMotionNum ( byte motionNum)

指定したモーションにジャンプします

Parameters
[in]motionNumジャンプするモーション番号
Returns
通信が成功かどうか
Return values
False通信失敗

プログラムカウンタをリセットします。

Note
CALL命令で指示したモーションの先頭アドレスにジャンプします
Attention
現在、他のモーションを再生中でも強制的にジャンプするので注意が必要です

◆ setParametersBaseCmd() [1/2]

int Rcb4BaseClass::setParametersBaseCmd ( byte * txData,
byte servoParameter,
ServoData servoDatas[],
byte servoCount )

指定したサーボモータを複数個パラメータを変えるコマンドの生成

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]servoParameter(Stretch:1 Speed:2)
[in]servoDatas[]アクセスするサーボのデータの配列
[in]servoCountアクセスするサーボのデータの配列数(サーボの数)
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

複数個サーボモータを動かすコマンドを生成します。

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
ServoDataのdataにはストレッチやスピードデータを入れます(Max 127)

◆ setParametersBaseCmd() [2/2]

int Rcb4BaseClass::setParametersBaseCmd ( byte servoParameter,
ServoData servoDatas[],
byte servoCount )

指定したサーボモータを複数個パラメータを変えるコマンドの生成

Parameters
[in]servoParameter(Stretch:1 Speed:2)
[in]servoDatas[]アクセスするサーボのデータの配列
[in]servoCountアクセスするサーボのデータの配列数(サーボの数)
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

複数個サーボモータを動かすコマンドを生成します。

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
ServoDataのdataにはストレッチやスピードデータを入れます(Max 127)
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ setPio()

bool Rcb4BaseClass::setPio ( unsigned short pioData)

現在のPIOの状態を変更します

Parameters
[in]pioDataPIO全体のデータ
Returns
通信が成功したかどうか
Return values
False通信失敗

Move命令を使って現在のPIOのHかLの状態にします

Attention
1bitずつ変更できないので注意

◆ setPioMode()

bool Rcb4BaseClass::setPioMode ( unsigned short pioModeData)

現在のPIOの入出力状態を変更します

Parameters
[in]pioModeDataPIO全体の入出力データ
Returns
通信が成功したかどうか
Return values
False通信失敗

Move命令を使って現在のPIO入力と出力を変更します

Note
対応したbitの 1:出力 0:入力
Attention
1bitずつ変更できないので注意

◆ setServoAdMixing()

bool Rcb4BaseClass::setServoAdMixing ( byte id,
byte sio,
byte mixNum,
int adPort,
char gain )

指定したサーボモータのミキシングを設定する(ユーザ変数ミキシング)

Parameters
idサーボモータのID
sioサーボモータが接続されているSIO番号(SIO1-4:0x01,SIO5-8:0x02)
mixNumミキシングの番号(1or2)
adPort ADポートの番号
gainramAddrのデータをgain分、かけ合わせる
Return values
True通信成功
False失敗成功
Note
指定したサーボモータにミキシングを指定したアドレスに設定します
サーボの出力データ = サーボモータの指令値 + サーボモータのトリム値 + ミキシング値1 + ミキシング値2
ミキシング値 = ramAddrに保存されているデータ * gain
Date
2025/01/31 追加

◆ setServoDefaultMixing()

bool Rcb4BaseClass::setServoDefaultMixing ( byte id,
byte sio,
byte mixNum,
int addr,
char gain )

指定したサーボモータのミキシングを設定する(ユーザ変数ミキシング)

Parameters
idサーボモータのID
sioサーボモータが接続されているSIO番号(SIO1-4:0x01,SIO5-8:0x02)
mixNumミキシングの番号(1or2)
addrミキシングをかける指定したRAMアドレス(上位で1or2byte 処理済み)
gainramAddrのデータをgain分、かけ合わせる
Return values
True通信成功
False失敗成功
Note
指定したサーボモータにミキシングを指定したアドレスに設定します
サーボの出力データ = サーボモータの指令値 + サーボモータのトリム値 + ミキシング値1 + ミキシング値2
ミキシング値 = ramAddrに保存されているデータ * gain
Warning
ミキシングは1byteもできますが、ユーザ変数は2byteとして処理を行っています
Date
2025/01/31 追加

◆ setServoMixGain()

bool Rcb4BaseClass::setServoMixGain ( byte id,
byte sio,
byte mixNum,
char gain )

指定したサーボモータのミキシングゲインのみを変更します

Parameters
idサーボモータのID
sioサーボモータが接続されているSIO番号(SIO1-4:0x01,SIO5-8:0x02)
mixNumミキシングの番号(1or2)
gainramAddrのデータをgain分、かけ合わせる
Return values
True通信成功
False失敗成功
Note
サーボの出力データ = サーボモータの指令値 + サーボモータのトリム値 + ミキシング値1 + ミキシング値2
ミキシング値 = ramAddrに保存されているデータ * gain
Date
2025/01/31 追加

◆ setServoNo()

int64_t Rcb4BaseClass::setServoNo ( ServoData servoDatas[],
byte servoCount )
protected

複数サーボモータにアクセスするときにコマンドで「動作させるサーボの指定」部分を作成

Parameters
[in]servoDatas[]アクセスするサーボのデータの配列
[in]servoCountアクセスするサーボのデータの配列数(サーボの数)
Returns
「動作させるサーボの指定」のデータ

「動作させるサーボの指定」には1bitずつ順番に動かす部分(フラグ)を立てていきます

◆ setServoPos()

bool Rcb4BaseClass::setServoPos ( ServoData servoDatas[],
byte servoCount,
byte frame )

指定したサーボモータ複数を動作させます

Parameters
[in]servoDatas[]サーボモータのデータをひとかたまりにしたものを複数個
[in]servoCountservoDatasのサーボの数
[in]frameフレーム数(多いほどゆっくり動く)
Returns
通信が成功かどうか
Return values
False通信失敗

servoDataに入っている複数のサーボモータの情報をもとにFrame数を使用して動かします

Note
モーション再生中に指定した場合はモーションの角度データが優先されます

◆ setServoSpeed()

bool Rcb4BaseClass::setServoSpeed ( ServoData servoDatas[],
byte servoCount )

指定したサーボモータのスピードを変更します

Parameters
[in]servoDatas[]サーボモータのデータをひとかたまりにしたものを複数個
[in]servoCountservoDatasのサーボの数
Returns
通信が成功かどうか
Return values
False通信失敗

servoDatas[]で指定したサーボモータのスピード(出力の上限値)を変更します

Note
servoDatasのDataにはスピード値を入れます

◆ setServoStretch()

bool Rcb4BaseClass::setServoStretch ( ServoData servoDatas[],
byte servoCount )

指定したサーボモータのストレッチを変更します

Parameters
[in]servoDatas[]サーボモータのデータをひとかたまりにしたものを複数個
[in]servoCountservoDatasのサーボの数
Returns
通信が成功かどうか
Return values
False通信失敗

servoDatas[]で指定したサーボモータのストレッチ(柔らかさ)を変更します

Note
servoDatasのDataにはストレッチ値を入れます

◆ setServoUserParmeterMixing()

bool Rcb4BaseClass::setServoUserParmeterMixing ( byte id,
byte sio,
byte mixNum,
int userParamNum,
char gain )

指定したサーボモータのミキシングを設定する(ユーザ変数ミキシング)

Parameters
idサーボモータのID
sioサーボモータが接続されているSIO番号(SIO1-4:0x01,SIO5-8:0x02)
mixNumミキシングの番号(1or2)
userParamNum ユーザ変数の番号
gainramAddrのデータをgain分、かけ合わせる
Return values
True通信成功
False失敗成功
Note
指定したサーボモータにミキシングを指定したアドレスに設定します
サーボの出力データ = サーボモータの指令値 + サーボモータのトリム値 + ミキシング値1 + ミキシング値2
ミキシング値 = ramAddrに保存されているデータ * gain
Date
2025/01/31 追加

◆ setSingleServo() [1/2]

bool Rcb4BaseClass::setSingleServo ( byte id,
byte sio,
int pos,
byte frame )

指定したサーボモータ単体を動作させます

Parameters
[in]idサーボモータのID番号
[in]sioSIOの値(SioNum)
[in]posサーボモータの目標ポジション値
[in]frameフレーム数(多いほどゆっくり動く)
Returns
通信が成功かどうか
Return values
False通信失敗

指定したサーボモータをID,SIO,POS,Frame数を使用して動かします

Note
モーション再生中に指定した場合はモーションの角度データが優先されます

◆ setSingleServo() [2/2]

bool Rcb4BaseClass::setSingleServo ( ServoData servoData,
byte frame )

指定したサーボモータ単体を動作させます

Parameters
[in]servoDataサーボモータのデータをひとかたまりにしたもの
[in]frameフレーム数(多いほどゆっくり動く)
Returns
通信が成功かどうか
Return values
False通信失敗

servoDataに入っているサーボモータの情報をもとに,Frame数を使用して動かします

Note
モーション再生中に指定した場合はモーションの角度データが優先されます

◆ setSpeedCmd() [1/2]

int Rcb4BaseClass::setSpeedCmd ( byte * txData,
ServoData servoDatas[],
byte servoCount )

指定したサーボモータを複数個スピードを変えるコマンドの生成

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]servoDatas[]アクセスするサーボのデータの配列
[in]servoCountアクセスするサーボのデータの配列数(サーボの数)
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

複数個サーボモータを動かすコマンドを生成します。

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
ServoDataのdataにはスピードデータを入れます(Max 127)

◆ setSpeedCmd() [2/2]

int Rcb4BaseClass::setSpeedCmd ( ServoData servoDatas[],
byte servoCount )

指定したサーボモータを複数個スピードを変えるコマンドの生成

Parameters
[in]servoDatas[]アクセスするサーボのデータの配列
[in]servoCountアクセスするサーボのデータの配列数(サーボの数)
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

複数個サーボモータを動かすコマンドを生成します。

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
ServoDataのdataにはスピードデータを入れます(Max 127)
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ setStretchCmd() [1/2]

int Rcb4BaseClass::setStretchCmd ( byte * txData,
ServoData servoDatas[],
byte servoCount )

指定したサーボモータを複数個ストレッチを変えるコマンドの生成

Parameters
[out]*txData現在入れようと思っている送信バッファ
[in]servoDatas[]アクセスするサーボのデータの配列
[in]servoCountアクセスするサーボのデータの配列数(サーボの数)
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

複数個サーボモータを動かすコマンドを生成します。

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
ServoDataのdataにはストレッチデータを入れます(Max 127)

◆ setStretchCmd() [2/2]

int Rcb4BaseClass::setStretchCmd ( ServoData servoDatas[],
byte servoCount )

指定したサーボモータを複数個ストレッチを変えるコマンドの生成

Parameters
[in]servoDatas[]アクセスするサーボのデータの配列
[in]servoCountアクセスするサーボのデータの配列数(サーボの数)
Returns
送信データ数
Return values
-1バッファに何か使われているかサイズが249byte以上

複数個サーボモータを動かすコマンドを生成します。

返値はtxDataのデータbyte数を返しますので、送信するのに使用します

Attention
ServoDataのdataにはストレッチデータを入れます(Max 127)
コマンドデータはRcb4BaseClassのtxBuf内に入ります

◆ setUserCounter()

bool Rcb4BaseClass::setUserCounter ( int counterNum,
byte data )

ユーザカウンタを設定する

Parameters
counterNumユーザカウンタの番号
dataユーザカウンタのデータ
Returns
true
false
Date
2025/01/31 追加

◆ setUserParmeter()

bool Rcb4BaseClass::setUserParmeter ( int userParamNum,
short data )

ユーザ変数の値を設定する

Parameters
userParamNumユーザ変数の番号
dataユーザ変数の設定値
Return values
True通信成功
False失敗成功
Note
指定したユーザ変数に値を書き込みます(2byte(signed short))
COM => RAMで、指定したユーザ変数に2byte書き込みます
Warning
データはsigned short型で行ってください
Date
2025/01/31 追加

◆ sortServoDatas()

bool Rcb4BaseClass::sortServoDatas ( ServoData servoDatas[],
byte servoCount )
protected

複数サーボモータにアクセスするときにサーボの順番の指定があるのでソートする

サーボのデータをソートするのとしていサーボデータの返却

Parameters
[in,out]servoDatas[]アクセスするサーボのデータの配列
[in]servoCountアクセスするサーボのデータの配列数(サーボの数)
Returns
「動作させるサーボの指定」のデータ
Return values
trueソート成功
falseデータ数が多すぎたり不正なICS番号が割り当てられようとしたとき

サーボモータを複数動かす時、順番に並んでいる必要があるのでそのデータをソートします

Attention
servoDatasそのものをソートするので、中身が書き換わります。
データを保持しておきたい場合は、コピーさせておいてから使用してください

◆ suspend() [1/2]

bool Rcb4BaseClass::suspend ( )

モーションを一時停止させます

Returns
通信が成功かどうか
Return values
False通信失敗

モーションを一時停止させます

Note
正確には、システムレジスタのEnableRunEeprom値を変更します ベクタジャンプを無効化して無線機などのボタンデータでジャンプするのをやめます
Attention
現在、他のモーションを再生中でも強制的に止めます
configData値を直接変えますので、注意が必要です

◆ suspend() [2/2]

bool Rcb4BaseClass::suspend ( unsigned short * config)

モーションを一時停止させます

Parameters
[in,out]config外部で覚えているconfigデータ
Returns
通信が成功かどうか
Return values
False通信失敗

モーションを一時停止させます

Note
正確には、システムレジスタのEnableRunEeprom値を変更します ベクタジャンプを無効化して無線機などのボタンデータでジャンプするのをやめます
Attention
現在、他のモーションを再生中でも強制的に止めます
config内を直接変えますので、注意が必要です

◆ synchronize()

virtual bool Rcb4BaseClass::synchronize ( byte txBuf[],
byte txLen,
byte rxBuf[],
byte rxLen )
virtual

ICS通信の送受信

Parameters
[in,out]*txBuf
[in]txLen
[out]*rxBuf受信格納バッファ
[in]rxLen受信データ数
Return values
true通信成功
false通信失敗
Attention
インターフェイス、子クラスで定義すること
送信データ数、受信データ数はコマンドによって違うので注意する

Reimplemented in Rcb4HardSerialClass.

◆ SynchronizeAck()

bool Rcb4BaseClass::SynchronizeAck ( byte * txData)
protected

何かしらコマンドを送って、ACKが返ってくるか確認

Parameters
[in]*txData送信データ
Returns
通信判定等
Return values
False送信失敗等

何かしらコマンドを送って、ACKが返ってくるか確認

Note
txDataの先頭データには送信データのデータ数が入っています

◆ userCounterAddr()

int Rcb4BaseClass::userCounterAddr ( int counterNum)
static

カウンターのRAMのアドレスを取得する

Parameters
counterNumカウンターの番号
Return values
カウンターのRAMアドレス
-1RAMアドレス変換失敗
Date
2025/01/31 追加

◆ userParmeterAddr()

int Rcb4BaseClass::userParmeterAddr ( int userParamNum)
static

ユーザ変数のRAMアドレスを取得する

Parameters
userParamNumユーザ変数の番号
Return values
ユーザ変数のRAMアドレス
-1RAMアドレス変換失敗
Date
2025/01/31 追加

The documentation for this class was generated from the following files: