303 | | |
304 | | |
305 | | |
306 | | |
| 303 | {{{@mismatch}}}例外ハンドラとレコードのリダイレクトで、プロトコルファイルの引数に設定したレコードにエラーメッセージを設定。 |
| 304 | |
| 305 | |
| 306 | === 例 === |
| 307 | |
| 308 | {{{"CURRENT?"}}}を出力すると、正常な場合には{{{"CURRENT 3.24 A"}}}、異常な場合には{{{"device switched off"}}}と応答するデバイス |
| 309 | |
| 310 | * db file |
| 311 | {{{ |
| 312 | record (ai, "$(DEVICE):readcurrent") { |
| 313 | field (DTYP, "stream") |
| 314 | field (INP, "@$(DEVICETYPE).proto read_current($(DEVICE):message) $(BUS)") |
| 315 | } |
| 316 | record (stringin, "$(DEVICE):message") { |
| 317 | } |
| 318 | }}} |
| 319 | |
| 320 | * protocol file |
| 321 | {{{ |
| 322 | read_current { |
| 323 | out "CURRENT?"; |
| 324 | in "CURRENT %f A"; |
| 325 | @mismatch { |
| 326 | in "%(\$1)39c"; |
| 327 | } |
| 328 | } |
| 329 | }}} |
| 330 | |
| 331 | {{{in}}} に設定した文字列と違うデータが来た場合、{{{@mismatch}}}の中の処理が実行される。ただし、ここでもエラーになった場合には処理は中断されて、コンソールにエラーが出力される。[[br]] |
| 332 | エラー出力が全く必要なければ、{{{extrainput=ignore}}}を設定してもいい。 |
| 333 | |
| 334 | |
| 335 | |
| 336 | |