| 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 | |