= transferArrayレコードについて = == transferArrayとは? == subArrayを改良したレコードで、「あるwaveformの任意の範囲を、異なるwaveformの任意の位置にコピーする」機能をもつレコードです。[[BR]] 自身へは、コピーする内容が格納されます。[[BR]] また、オプションで転送先waveformのコピーされた領域以降を0クリアすることも可能です。 == transferArrayレコードの使用方法について == waveformに対して追加されるパラメータフィールドは下表の通りです。 ||'''Field'''||'''Summary'''||'''Type'''||'''DCT'''||'''Initial'''||'''Access'''||'''Modify'''||'''Rec Proc Monitor'''||'''PP'''|| ||OUT||出力先のレコード||OUTLINK||Yes||0||No||No||N/A||No|| ||TASI||転送元の要素番号||ULONG||Yes||0||Yes||No||No||No|| ||TADI||転送先の要素番号||ULONG||Yes||0||Yes||No||No||No|| ||TATC||転送する要素数||ULONG||Yes||0||Yes||No||No||No|| ||TAZF||Zero-fillフラグ||ULONG||Yes||0||Yes||No||No||No|| * ''OUT''フィールドで、転送先のレコードを指定します。 * ''TASI''フィールドで、転送元レコードのどこから転送を開始するかを、要素番号で指定します。指定は0オリジンですので、先頭の要素であれば、0を指定します。転送元レコードの要素数を超える値を指定することはできません。指定するとエラーとなり転送は行われません。 * ''TADI''フィールドで、転送先レコードのどこに転送するかを、要素番号で指定します。TASIフィールドと同様に0オリジンでの指定になります。転送先レコードの要素数を超える値を指定することはできません。指定するとエラーとなり転送は行われません。 * ''TATC''フィールドで、転送する要素数を指定します。転送元レコードや転送先レコードの領域を超えるような転送数を指定した場合、超えた分を無視して可能な分だけ転送を行います。この場合、レコードにLINK_ALARM/ALARM_MINORがセットされます。 * ''TAZF''フィールドで、転送領域以降のZeroクリアをするかどうかを指定します。0を指定するとZeroクリアをせずに、0以外を指定するとZeroクリアを実施するようになります。 サンプル.dbファイル {{{ record(waveform, "hig-iitk:src") { field(NELM, "10") field(FTVL, "LONG") } record(waveform, "hig-iitk:dst") { field(NELM, "10") field(FTVL, "LONG") } record(transferArray, "hig-iitk:ta") { field(NELM, "10") field(FTVL, "LONG") field(INP, "hig-iitk:src") field(OUT, "hig-iitk:dst") field(TASI, "0") field(TADI, "0") field(TATC, "5") field(TAZF, "0") } }}} 上記.dbファイルでhig-iitk:taをプロセスした場合の動作イメージ [[BR]] [[Image(ta-image01.png)]] == make方法 == * makeBaseApp.plで作成された/''yourIocApp''/src/Makefileを編集します。 {{{ #---------------------------------------- # ADD MACRO DEFINITIONS AFTER THIS LINE #============================= DBDINC += transferArrayRecord ←追加 <中略> # yourIoc.dbd will be made up from these files: yourIoc_DBD += base.dbd yourIoc_DBD += transferArrayRecord.dbd ←追加 yourIoc_DBD += devTransferArrayRecord.dbd ←追加 <中略> # yourIoc_registerRecordDeviceDriver.cpp derives from yourIoc.dbd yourIoc_SRCS += transferArrayRecord.c ←追加 yourIoc_SRCS += devTransferArrayRecord.c ←追加 yourIoc_SRCS += yourIoc_registerRecordDeviceDriver.cpp }}} * ディレクトリでmakeを実行します。 == 入手方法 == [http://www-linac2.kek.jp/cont/epics/transferarray/ ここ]からダウンロードできます。