Hi Jimmy,
> Has anyone used the asynDriver framework outside of an EPICS IOC and if so would you be willing to share your experience?
In R4-25 of the asyn module there are some additions to make it easier to accomplish this. This is from the R4-25 release notes:
****************************************************************************
Building asyn with only using libCom from EPICS base
It has always been asserted that except for devEpics asyn only really depends on libCom from EPICS base. People
who are interested in using asyn drivers from other control systems, want to minimize the dependencies of libraries from EPICS base. The following lines have been added to asyn/configure/CONFIG_SITE:
-------------------------------------------------------------------------------
# If you want to build asyn so the only dependency on EPICS base is libCom then set the following flag
#EPICS_LIBCOM_ONLY=YES
-------------------------------------------------------------------------------
If EPICS_LIBCOM_ONLY is YES then the build is done so that only libCom is needed. This does the following:
-
Omits building all of the device support for EPICS records
-
Omits building the test applications that create IOC applications
-
Sets asyn_LIBS to Com rather than $(EPICS_BASE_IOCS_LIBS) when creating the library
-
Changes the logic in asynPortDriver which uses interruptAccept. If EPICS_LIBCOM_ONLY is set then dbDefs.h is not included and interruptAccept is defined as a static variable set to 1.
A new C++ class was added, asyn/asynPortClient/asynPortClient.cpp. This class makes it easy to write a C++ application
that starts existing asyn port drivers and communicates with them over standard asyn interfaces without running an IOC.
A new test application directory was added testAsynPortClient. This tests running C++ applications that communicate
with asyn port drivers without running an IOC. This currently contains a single test application, testAsynIPPortClient.cpp. This program creates an asynIPPort driver, and uses the command line arguments to set the hostInfo string, a single command string to
send to the server, and optionally the input and output EOS. It then prints out the response from the server. There are 3 example shell scipts that show how to use testAsynIPPortClient to communicate with a Web server, XPS motor controller, and a telnet host
respectively.
****************************************************************************
In addition the master branch of areaDetector/ADCore (https://github.com/areaDetector/ADCore) contains an example of instantiating
a simDetector and a number of areaDetector plugins in a standalone C++ program, without running an EPICS IOC.
Let me know if you have more questions.
Mark
Has anyone used the asynDriver framework outside of an EPICS IOC and if so would you be willing to share your experience?
Thanks
Jimmy Johnson