No. | : 690 |
Title | : Re^3: SAD Ver.1.0.10.9a1 のCaMonitor/CaGet |
Date | : 2017/12/25(Mon) 18:40:11 |
Name | : Akio Morita |
URL | : |
> > > お世話になっております.
> > > Ver.1.0.10.9a1 において,CaMonitor/CaGetで STRING typeのPVを指定すると,三文字までしかデータが取れません.
> > >
> > > e.g.)
> > > PVnameの内容が,
> > > SP_AT_0
> > > である場合,
> > >
> > > data=CaMonitor["PVname"];
> > > Print[data@Value[]]
> > > をsadで実行すると,最初の三文字である,
> > > SP_
> > > が取得される.
> > >
> > コード的には、ca_element_countが 1なPVと転送要素数 1でのアクセスは等価なので、
> > DBF_STRINGなwaveformに対する読み出しで再現を試みましたが、afsad*cでは再現できませんでした
> >
> > ca = CaMonitor["LIiBM:BPM_SYNC:NAMELIST", DefaultCount->1];
> > ca@WaitValue[];
> > Print[ca@Value[]];
> > SP_AT_0
> >
> > In[1]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->2]
> > Out[1]:= {{"SP_AT_0","SP_AT_1"},17,3,0}
> > In[2]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->1]
> > Out[2]:= {"SP_AT_0",17,3,0}
>
>
> ありがとうございます.取り急ぎ,CaReadでは正常に表示されるようです.他も,ためしてみます.
>
> In[2]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->5]
> Out[2]:= {{"SP_AT_0","SP_AT_1","SP_AT_2","SP_A1_G","SP_A1_0"},17,3,0}
>
DBF_STRINGなPV読み出しで、CaReadが正常、CaMonitor@Value[]でデータが腐るという症状のバグが、
V1.0.10.9aからV1.0.10.9a1の途中に存在しています
当該バグは、Revisionev.6304で修正され patch levelが a1へバンプされています
r6304の修正対象は、要素数 2以上のDBF_STRING PVからのValue callback時にて受信データからSAD上のString Listオブジェクトを構築する際に設定するStringオブジェクトの寿命スコープに誤りがあり、GCによりList内のStringオブジェクトの領域が破棄されるといバグです
BFA[5148]: Fix CaMonitor crash by DBF_STRING waveform
-Fix character pointer handling for Fix DBR_TIME_STRING ValueCB
-Fix String object scope for DBR_TIME_STRING waveform(n > 1)
- WebForum -