EPICS -- asyn模块 -- 诊断帮助

iocsh命令

    asynReport(level,portName)
    asynInterposeFlushConfig(portName,addr,timeout)
    asynInterposeEosConfig(portName,addr,processIn,processOut)
    asynSetTraceMask(portName,addr,mask)
    asynSetTraceIOMask(portName,addr,mask)
    asynSetTraceInfoMask(portName,addr,mask)
    asynSetTraceFile(portName,addr,filename)
    asynSetTraceIOTruncateSize(portName,addr,size)
    asynSetOption(portName,addr,key,val)
    asynShowOption(portName,addr,key)
    asynAutoConnect(portName,addr,yesNo)
    asynSetAutoConnectTimeout(timeout)
    asynWaitConnect(portName, timeout)
    asynEnable(portName,addr,yesNo)
    asynOctetConnect(entry,portName,addr,timeout,buffer_len,drvInfo)
    asynOctetRead(entry,nread)
    asynOctetWrite(entry,output)
    asynOctetWriteRead(entry,output,nread)
    asynOctetFlush(entry)
    asynOctetSetInputEos(portName,addr,eos,drvInfo)
    asynOctetGetInputEos(portName,addr,drvInfo)
    asynOctetSetOutputEos(portName,addr,eos,drvInfo)
    asynOctetGetOutputEos(portName,addr,drvInfo)
    asynRegisterTimeStampSource(portName,functionName);
    asynUnregisterTimeStampSource(portName)    

1) 如果指定portName, asynReport调用一个特定端口的asynCommon:report,或者如果没有指定portName,调用所有注册的驱动程序和interposeInterface的asynCommon:report。

2) asynInterposeFlushConfig是一个通用的InterposeInterface,它为没有实现flush的底层驱动程序实现了flush。它仅发出读请求直到没有剩下要读的字节。timeout被用于这个读取请求。

3) asynInterposeEosConfig是一个通用的interposeInterface,它为没有实现EOS的底层驱动程序实现了字符串末尾处理。

4)asynSetTraceMask调用指定端口和地址的asynTrace:setTraceMask。如果portName是0长度,则设置全局跟踪掩码。在traceMask定义中记载了掩码位定义。

/*asynTrace是被asynManager实现的。*/
/*所有asynTrace方法能够被从任何线程调用*/
/* traceMask定义*/
#define ASYN_TRACE_ERROR     0x0001
#define ASYN_TRACEIO_DEVICE  0x0002
#define ASYN_TRACEIO_FILTER  0x0004
#define ASYN_TRACEIO_DRIVER  0x0008
#define ASYN_TRACE_FLOW      0x0010
#define ASYN_TRACE_WARNING   0x0020

5)asynSetTraceIOMask调用指定端口和地址的asynTrace:setTraceMask。如果portName是0长度,则设置全局traceIO掩码。在traceIO掩码定义掩码位定义。

/* traceIO位掩码 */
#define ASYN_TRACEIO_NODATA 0x0000
#define ASYN_TRACEIO_ASCII  0x0001
#define ASYN_TRACEIO_ESCAPE 0x0002
#define ASYN_TRACEIO_HEX    0x0004

6)asynSetTraceInfoMask调用指定端口和地址的asynTrace:setTraceInfoMask。如果portName是0长度,则设置全局traceInfo掩码。在traceIO掩码定义掩码位定义。

/* traceInfo掩码定义 */
#define ASYN_TRACEINFO_TIME 0x0001
#define ASYN_TRACEINFO_PORT 0x0002
#define ASYN_TRACEINFO_SOURCE 0x0004
#define ASYN_TRACEINFO_THREAD 0x0008

从R4-35开始,能够以一个整数(先前行为)或者用+或|连接的符号名称指定asynSetTraceMask, asynSetTraceIOMask和asynSetTraceInfoMask的掩码参数。运行空格,但需要引号。符号名称像在asyn.h中宏名称,但不是大小写敏感的并且前缀ASYN_, TRACE_, TRACEIO_和TRACEINFO_是可选的。示例如:

asynSetTraceMask port,0,ASYN_TRACE_ERROR
asynSetTraceIOMask port,0,ascii+escape
asynSetTraceInfoMask port,0,1+port+TRACEINFO_SOURCE|ASYN_TRACEINFO_THREAD

7) asynSetTraceFile调用asynTrace:setTraceFile。按照以下处理文件名:

  • 不指定。一个NULL指针被传递到setTraceFile。后续消息被发送给errlog。
  • 一个空串("")或者"stderr",stderr被传递给setTraceFile。
  • "stdout" -- stdout被传递给setTraceFile。
  • 任何其它字符串--用一个选项"w"打开指定文件,并且这个文件指针被传递给setTraceFile。

8)asynSetTraceIOTruncateSize调用asynTrace:setTraceIOTruncateSize。

9) asynSetOption调用asynCommon:setOptio。asynShowOption调用asynCommon:getOption。

10)asynOctetXXX命令提供对asynOctetSyncIO方法的shell访问。条目是标识port, addr的字符串。

此处:

  • filename:命名一个文件的ascii串。如果null或者一个null串,则输出被发送到stdout。
  • level:报告级别。
  • portName:指定这个驱动程序的portName的ascii串。
  • addr:指定设备地址的整数。对于mltiDevice端口,一个-1值标识端口自身。对于支持单个设备的端口,忽略addr。
  • mask:要设置的掩码值。见在asynDriver.h中的位掩码定义。
  • key:对应所需选项的键。
  • val:对应这个选项的值。
  • yesNo:值(0,1)标识(no, yes)。
  • entry:一个标识这个asynOctetConnect请求的字符串。
  • timeout:毫秒为单位的整数值,超时。默认是1。
  • buffer_len:用于I/O的缓存长度。默认=160。主要:传递给asynOctetWrite的输出字符串可以有转义字符。buffer_len必须足够大来处理转义字符。例如,如果在一个输出字符串中出现\x02,它算成4个字符。
  • drvInfo:通过asynDrvUser接口传递给驱动程序的字符串。
  • nread:要读取的最大字节数。默认=buffer_len。
  • flush:(0,1)表示在读取前(否,是)清缓存。默认=0。
  • output:输出字符串。

命令asynOctetConnect, asynOctetDisconnect, asynOctetRead, asynOctetWrite, asynOctetWriteRead, asynOctetFlush允许从这个ioc shell对一个设备进行I/O。例如:

# asynOctetConnect(entry,portName,addr,timeout,buffer_len,drvInfo)
asynOctetConnect("myid","A",0,1,20)
asynOctetWrite("myid","testnew")
asynOctetRead("myid")
testnew\n
asynOctetWriteRead("myid","this is test")
this is test\n
asynOctetDisconnect("myid")

asynRegisterTimeStampSource为指定端口调用pasynManager->registerTimeStampSource。时间戳源函数必须以一个"function"被定义在这个程序的dbd文件中。

asynUnregisterTimeStampSource为指定端口调用pasynManager->unregisterTimeStampSource。这恢复成在asynManager中默认的时间戳源函数。

猜你喜欢

转载自blog.csdn.net/yuyuyuliang00/article/details/128155170