Changes between Initial Version and Version 1 of epics/streamdevice/example1


Ignore:
Timestamp:
06/05/12 22:23:10 (13 years ago)
Author:
Takashi Obina
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • epics/streamdevice/example1

    v1 v1  
     1== Application作成; Socket I/O ==
     2KEITHLEY 2701を例に; EPICS R3.14.9での作業ログ(R3.14.12以降では不要の部分もあり)
     3
     4
     5作業ディレクトリ作成
     6{{{
     7pfrproc2:~ % mkdir /users/obina/epics/app/Keith2701
     8pfrproc2:~ % cd /users/obina/epics/app/Keith2701
     9}}}
     10
     11テンプレートとしてiocを使用。
     12{{{
     13pfrproc2:Keith2701 % makeBaseApp.pl -t ioc keith2701
     14
     15pfrproc2:Keith2701 % makeBaseApp.pl -i -t ioc keith2701
     16The following target architectures are available in base:
     17    linux-x86
     18    linux-x86_64
     19What architecture do you want to use? linux-x86_64
     20The following applications are available:
     21    keith2701
     22What application should the IOC(s) boot?
     23The default uses the IOC's name, even if not listed above.
     24Application name?
     25}}}
     26
     27{{{
     28pfrproc2:Keith2701 % vi configure/RELEASE
     29
     30SNCSEQ=$(EPICS_BASE)/../modules/soft/seq/2.0.11
     31ASYN=$(EPICS_BASE)/../modules/soft/asyn/4-11
     32STREAM=$(EPICS_BASE)/../modules/soft/stream/2-5
     33}}}
     34
     35この段階でエラーが出ないかどうか確認
     36{{{
     37pfrproc2:Keith2701 % make
     38}}}
     39問題無ければ、いちど全て削除する
     40{{{
     41pfrproc2:Keith2701 % make distclean
     42}}}
     43
     44srcディレクトリで作業
     45{{{
     46pfrproc2:Keith2701 % cd keith2701App/src/
     47}}}
     48
     49
     50dbdファイル作成(Socket I/Oのみならば、Serial...とvxi11...の2行は不要だが、ついでに書いてしまう)
     51{{{
     52pfrproc2:src % vi K2701.dbd
     53registrar(drvAsynIPPortRegisterCommands)
     54registrar(drvAsynSerialPortRegisterCommands)
     55registrar(vxi11RegisterCommands)
     56}}}
     57
     58Makefile編集; 順序に注意。stream.dbdより前にaai,aaoを追加すること。(R3.14.12では不要になる)
     59{{{
     60pfrproc2:src % vi Makefile
     61
     62keith2701_DBD += base.dbd
     63keith2701_DBD += aaiRecord.dbd
     64keith2701_DBD += aaoRecord.dbd
     65keith2701_DBD += asyn.dbd
     66keith2701_DBD += stream.dbd
     67keith2701_DBD += K2701.dbd
     68
     69keith2701_LIBS += asyn
     70keith2701_LIBS += stream
     71
     72}}}
     73
     74プロトコルファイル作成
     75{{{
     76pfrproc2:src % cd ../Db/
     77pfrproc2:Db % vi K2701.proto
     78
     79Terminator = CR LF;
     80#
     81getIDN {
     82    out "*IDN?";   in "%39c";
     83}
     84}}}
     85
     86Dbファイル作成
     87{{{
     88pfrproc2:Db % vi test.db
     89
     90record(stringin, "obina:idn")
     91{
     92    field(DESC, "get IDN")
     93    field(DTYP, "stream")
     94    field(INP,  "@K2701.proto getidn PS1")
     95}
     96
     97同じディレクトリのMakefileに
     98DB += test.db
     99を追加
     100}}}
     101
     102application top で makeをかける
     103{{{
     104pfrproc2:Db % cd ../..
     105pfrproc2:Keith2701 % make
     106}}}
     107
     108
     109startup script編集
     110{{{
     111pfrproc2:Keith2701 % cd iocBoot/iockeith2701
     112pfrproc2:iockeith2701 % vi st.cmd
     113
     114dbLoadRecords("db/test.db")
     115epicsEnvSet("STREAM_PROTOCOL_PATH", ".:../../keith2701App/Db")
     116drvAsynIPPortConfigure ("PS1", "172.28.8.244:1394")
     117
     118pfrproc2:iockeith2701 % chmod +x st.cmd
     119pfrproc2:iockeith2701 % ./st.cmd
     120
     121
     122epics> dbpf obina:idn.PROC 1
     123DBR_UCHAR:          1         0x1
     124epics> 2012/05/09 00:58:24.682 PS1 obina:idn: 16 bytes surplus input "0912,A09  /A02  "
     1252012/05/09 00:58:24.682 PS1 obina:idn: after 40 bytes "... INC.,MODEL 2701,111"
     126
     127stringinは40文字までだが、Keithleyが返してくる文字列が長いのでエラーが出るが気にしない。
     128
     129eepics> dbpr obina:idn
     130ASG:                DESC: get IDN       DISA: 0             DISP: 0
     131DISV: 1             NAME: obina:idn     SEVR: INVALID       STAT: CALC
     132SVAL:               TPRO: 0
     133VAL: KEITHLEY INSTRUMENTS INC.,MODEL 2701,11
     134
     135}}}