149 | | |
150 | | |
| 148 | === 最大12個のデータを出力 === |
| 149 | |
| 150 | calcout のINPA,INPB,...に直接設定。[[br]] |
| 151 | CALC fieldには計算をしなくても何かしらの設定は必須。 |
| 152 | |
| 153 | * db file |
| 154 | {{{ |
| 155 | record (calcout, "$(RECORD):ex06") { |
| 156 | field (INPA, "$(A_RECORD)") |
| 157 | field (INPB, "$(B_RECORD)") |
| 158 | field (INPC, "$(C_RECORD)") |
| 159 | field (CALC, "0") |
| 160 | field (DTYP, "stream") |
| 161 | field (OUT, "@$(DEVICETYPE).proto write_ABC $(BUS)") |
| 162 | } |
| 163 | }}} |
| 164 | |
| 165 | * protocol file |
| 166 | {{{ |
| 167 | write_ABC { |
| 168 | out "A=%(A).2f B=%(B).6f C=%(C).0f"; |
| 169 | } |
| 170 | }}} |
| 171 | |
| 172 | === 同じIOCの違うレコードの値を出力 === |
| 173 | |
| 174 | プロトコルファイルの引数'''{{{$1}}}'''には文字列が設定されるので、レコード名(その一部)も設定可能 |
| 175 | |
| 176 | * db file |
| 177 | {{{ |
| 178 | record (stringout, "$(DEVICE):getimage") { |
| 179 | field (DTYP, "stream") |
| 180 | field (OUT, "@$(DEVICETYPE).proto acquire($(DEVICE)) $(BUS)") |
| 181 | } |
| 182 | }}} |
| 183 | |
| 184 | * protocol file |
| 185 | {{{ |
| 186 | acquire { |
| 187 | out 'ACQUIRE "%(\$1:directory)s/%s",%(\$1:time).3f;'; |
| 188 | } |
| 189 | }}} |
| 190 | |
| 191 | この例では、$(DEVICE)が引数として設定されているが、$(DEVICE)が"TEST"とすると、プロトコルファイル内では次のように展開される。 |
| 192 | {{{ |
| 193 | acquire { |
| 194 | out 'ACQUIRE "%(TEST:directory)s/%s",%(TEST:time).3f;'; |
| 195 | } |
| 196 | }}} |
| 197 | |
| 198 | |
| 199 | '''{{{%()}}}'''にはそのレコードのVALが展開され、出力文字列が生成される。'''{{{TEST:directory}}}'''が"'''{{{./TEST}}}'''"、'''{{{TEST:time}}}'''が'''{{{123.456}}}'''とすると |
| 200 | {{{ |
| 201 | acquire { |
| 202 | out 'ACQUIRE "./TEST/%s",123.456;'; |
| 203 | } |
| 204 | }}} |
| 205 | |
| 206 | ということになる。 |
| 207 | |
| 208 | |