sasaki-t / USBtoGPIO_SerialCommunication-RTCs

A USB to GPIO, SPI, I2C component for OpenRTM-aist using an Adafruit FT232H breakout board
0 stars 0 forks source link

データ型について #1

Closed Nobu19800 closed 1 year ago

Nobu19800 commented 1 year ago

C7_0outやC7_0inのデータポートが入出力するデータについて、マニュアルに「8ビットの値」と書いてありますが、データ型がTimedOctet型ではなくTimedLong型が設定されています。 また、DoutやDinのデータポートは1か0の値を入出力しますがTimedLong型を使用しているため、TimedBoolean型を使う場合と比較して送受信するデータサイズが大きくなっていると思うのですが、あえてTimedLong型を使用した意図を教えていただけないでしょうか。

sasaki-t commented 1 year ago

はい、おっしゃる通りで各ポートの値はBooleanにする、Booleanの配列にする、Octetにするなども考えました。 過去にワンボードマイコンをRTコンポーネント化した「RTno」で利用可能な型はTimedLong(Seq), TimedDouble(Seq), TimedFloat(Seq)であったことからディジタルIOの値を直接やり取りする際にはTimedLong型を使っていたこと、ConsoleIn, ConsoleOutなどのすぐ使える入出力のサンプルコンポーネントがTimedLong型であることからTimedLong型としました。 もう1点はAdafruit_MCP2221A_Breakoutとの関係です。 こちらのGPIOはアナログ入出力可能なため、[0, 655535]の値をやり取りする可能性があります。 こちらのコンポーネントとの統一のためにTimedLongを使用しています。 ([0,65535]ならUShortでも良いのですが、前述のとおり他のコンポーネントを考えるとLongで良いという判断です。) 結局、既存のコンポーネントとの連携を考えたときにTimedLongが使いやすかったというだけなのですが、ご要望があるなら変更します。

Nobu19800 commented 1 year ago

詳細なご説明ありがとうございます。TimedLong型に設定した意図については納得いたしましたので、このissueは閉じさせていただきます。