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

Rcb4BaseClassから派生してArduinoのSerial(HardwareSerial)経由でRCB4と通信を行います。 More...

#include <Rcb4HardSerialClass.h>

Inheritance diagram for Rcb4HardSerialClass:
Rcb4BaseClass

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との送受信
 
- Public Member Functions inherited from Rcb4BaseClass
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
 通信速度の設定

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

Additional Inherited Members

- Public Types inherited from Rcb4BaseClass
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 Public Member Functions inherited from Rcb4BaseClass
static int adRamAddr (int adPort)
 指定したADポート番号のアドレスを返す
 
static int userParmeterAddr (int userParamNum)
 ユーザ変数のRAMアドレスを取得する
 
static int userCounterAddr (int counterNum)
 カウンターのRAMのアドレスを取得する
 
- Public Attributes inherited from Rcb4BaseClass
ConfigData configData
 コンフィグデータの格納場所
 
- Static Public Attributes inherited from Rcb4BaseClass
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 inherited from Rcb4BaseClass
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が返ってくるか確認
 

Detailed Description

Rcb4BaseClassから派生してArduinoのSerial(HardwareSerial)経由でRCB4と通信を行います。

Constructor & Destructor Documentation

◆ Rcb4HardSerialClass() [1/2]

Rcb4HardSerialClass::Rcb4HardSerialClass ( HardwareSerial * rcb4Serial)

コンストラクタ

Parameters
[in]*rcb4SerialRCB4に設定するUART(HardwareSerial型のポインタ)

◆ Rcb4HardSerialClass() [2/2]

Rcb4HardSerialClass::Rcb4HardSerialClass ( HardwareSerial * rcb4Serial,
long baudrate,
int timeout )

コンストラクタ

Parameters
[in]*rcb4SerialRCB4に設定するUART(HardwareSerial型のポインタ)
[in]baudrateサーボの通信速度
[in]timeout受信タイムアウト(ms)

◆ ~Rcb4HardSerialClass()

Rcb4HardSerialClass::~Rcb4HardSerialClass ( )

デストラクタ

Postcondition
使用していたのrcbHardSerialを開放します

Member Function Documentation

◆ open() [1/3]

bool Rcb4HardSerialClass::open ( )
virtual

通信の初期設定

Return values
true通信設定完了
false通信設定失敗

通信の初期設定を行います 同時に、RCB4の通信チェックおよびconfigデータを取得します

Attention
Serialの設定、通信速度、タイムアウトは事前に設定してある事

◆ open() [2/3]

bool Rcb4HardSerialClass::open ( HardwareSerial * rcb4Serial,
long baudrate,
int timeout )

通信の初期設定

Parameters
[in]*rcb4SerialRCB4に設定するUART(HardwareSerial型のポインタ)
[in]baudrateサーボの通信速度
[in]timeout受信タイムアウト(ms)
Return values
true通信設定完了
false通信設定失敗

通信の初期設定を行います 同時に、RCB4の通信チェックおよびconfigデータを取得します

Attention
Serialの設定、通信速度、タイムアウトは事前に設定してある事

◆ open() [3/3]

bool Rcb4HardSerialClass::open ( long baudrate,
int timeout )
virtual

通信の初期設定

Parameters
[in]baudrateサーボの通信速度
[in]timeout受信タイムアウト(ms)
Return values
true通信設定完了
false通信設定失敗

通信の初期設定を行います 同時に、RCB4の通信チェックおよびconfigデータを取得します

Attention
Serialの設定は事前に設定してある事

◆ synchronize()

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

RCB-4との送受信

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

Reimplemented from Rcb4BaseClass.


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