Changes between Version 1 and Version 2 of epics/streamdevice/tips_and_tricks
- Timestamp:
- 09/04/14 10:22:24 (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
epics/streamdevice/tips_and_tricks
v1 v2 16 16 * db file 17 17 {{{ 18 field (OUT, "@motor.proto moveaxis(X) motor1") 18 reocrd(ao, "$(RECORD):ex01") { 19 field (OUT, "@motor.proto moveaxis(X) motor1") 20 field (DTYP, "stream") 21 } 19 22 }}} 20 23 … … 40 43 * db file 41 44 {{{ 42 field (INP, "@vacuumgauge.proto readpressure(0x84) gauge3") 45 reocrd(ao, "$(RECORD):ex02") { 46 field (INP, "@vacuumgauge.proto readpressure(0x84) gauge3") 47 field (DTYP, "stream") 48 } 43 49 }}} 44 50 … … 68 74 * db file 69 75 {{{ 70 record (ai, "$(RECORD) ") {76 record (ai, "$(RECORD):ex03") { 71 77 field (DTYP, "stream") 72 78 field (INP, "@$(DEVICETYPE).proto read $(BUS)") … … 82 88 }}} 83 89 84 この場合、空白も含めてまったく同じ文字列じゃないと処理 しないので注意。90 この場合、空白も含めてまったく同じ文字列じゃないと処理されないので注意。 85 91 86 92 … … 88 94 89 95 例として、こんな文字列を送ってくるデバイスだとする。 90 91 96 {{{ 92 97 Here is the value: … … 95 100 96 101 その場合、'''{{{in}}}'''を複数記述すればいい。 102 103 * db file 104 {{{ 105 record (ai, "$(RECORD):ex04") { 106 field (DTYP, "stream") 107 field (INP, "@$(DEVICETYPE).proto read_value $(BUS)") 108 field (SCAN, "I/O Intr") 109 } 110 }}} 97 111 98 112 * protocol file … … 103 117 } 104 118 }}} 119 120 == 一つのメッセージで複数のデータを扱う必要がある == 121 122 この問題には色々なアプローチで、複数の解決策がある。 123 124 === 全部同じ型で、同じ文字で区切られているデータを出力 === 125 126 waveform,aaoレコードを使って処理が可能。 127 128 * db file 129 {{{ 130 record(waveform, "$(RECORD):ex05") { 131 field(OUT, "@$(DEVICETYPE).proto array_out $(BUS)") 132 field(DTYP, "stream") 133 } 134 }}} 135 136 * protocol file 137 {{{ 138 array_out { 139 separator=", "; 140 out "an array: (%.2f)"; 141 } 142 }}} 143 144 '''{{{%.2f}}}'''のフォーマット文字列が配列数分、'''{{{", "}}}'''で連結されて、こんな文字列が作成される。 145 {{{ 146 an array: (1.23, 2.34, 3.45, 4.56) 147 }}} 148 149 150