Changes between Version 2 and Version 3 of epics/streamdevice/tips_and_tricks


Ignore:
Timestamp:
09/04/14 11:25:12 (5 years ago)
Author:
michkawa
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • epics/streamdevice/tips_and_tricks

    v2 v3  
    5858 
    5959 この例では、引数 '''{{{0x84}}}''' が '''{{{$1}}}''' に設定されるので、 
    60  
    6160 {{{ 
    6261readpressure { 
     
    118117 }}} 
    119118 
    120 == 一つのメッセージで複数のデータを扱う必要がある == 
     119== 一つのメッセージで複数のデータを出力する必要がある == 
    121120 
    122121 この問題には色々なアプローチで、複数の解決策がある。 
     
    147146 }}} 
    148147 
    149  
    150  
     148=== 最大12個のデータを出力 === 
     149 
     150 calcout のINPA,INPB,...に直接設定。[[br]] 
     151 CALC fieldには計算をしなくても何かしらの設定は必須。 
     152 
     153 * db file 
     154 {{{ 
     155record (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 {{{ 
     167write_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 {{{ 
     178record (stringout, "$(DEVICE):getimage") { 
     179  field (DTYP, "stream") 
     180  field (OUT, "@$(DEVICETYPE).proto acquire($(DEVICE)) $(BUS)") 
     181} 
     182 }}} 
     183 
     184 * protocol file 
     185 {{{ 
     186acquire { 
     187    out 'ACQUIRE "%(\$1:directory)s/%s",%(\$1:time).3f;'; 
     188} 
     189 }}} 
     190 
     191 この例では、$(DEVICE)が引数として設定されているが、$(DEVICE)が"TEST"とすると、プロトコルファイル内では次のように展開される。 
     192 {{{ 
     193acquire { 
     194    out 'ACQUIRE "%(TEST:directory)s/%s",%(TEST:time).3f;'; 
     195} 
     196 }}} 
     197 
     198  
     199 '''{{{%()}}}'''にはそのレコードのVALが展開され、出力文字列が生成される。'''{{{TEST:directory}}}'''が"'''{{{./TEST}}}'''"、'''{{{TEST:time}}}'''が'''{{{123.456}}}'''とすると 
     200 {{{ 
     201acquire { 
     202    out 'ACQUIRE "./TEST/%s",123.456;'; 
     203} 
     204 }}} 
     205 
     206 ということになる。 
     207 
     208