Dohn,
this does the trick
asynOctetSetInputEos("MOXA_4",0,"\n")
asynOctetSetOutputEos("MOXA_4",0,"\n”)
\n instead of \r as the terminator.
Thank you very much for your driver. I just made myself too stupid to use it correctly ;-)
Danke, Heinz
> On 6. Mar 2019, at 18:54, Arms, Dohn A. <[email protected]> wrote:
>
> I don't see where you are setting the end of string terminators and, assuming "\r", I would add:
>
> asynOctetSetOutputEos("MOXA_4",0,"\r")
> asynOctetSetInputEos("MOXA_4",0,"\r")
>
> The driver does not set those behind the scenes, as the hardware lets you change them.
>
>
>
>
> Just as a comparison, the setup I have for a device while using a Moxa is:
>
> drvAsynIPPortConfigure("ip_ca1","164.54.118.20:4001", 0, 0, 0)
> asynOctetSetInputEos("ip_ca1",0,"\r")
> asynOctetSetOutputEos("ip_ca1",0,"\r")
>
> drvAsynKeithley648x( "6485", "CA1","ip_ca1",-1);
> dbLoadRecords("$(TOP)/29idbApp/Db/Keithley6485.db","P=29idb:,CA=ca1:,PORT=CA1")
>
>
>
> Dohn
>
>
>
> On 3/6/19 11:38 AM, Heinz Junkes wrote:
>> I'm unsure about creating the different ports. Am I doing something wrong in the startup?
>>
>> Danke, Heinz
>>
>>
>>> On 6. Mar 2019, at 16:59, Arms, Dohn A. via Tech-talk <[email protected]>
>>> wrote:
>>>
>>> Hi Heinz,
>>>
>>> Sorry that my driver didn't communicate for you.
>>>
>>> I just added to my github repo the boot directory I use for testing the
>>> 6485
>>> and 6487 devices we have, which I forgot to add before.
>>>
>>> Dohn
>>>
>>>
>>>
>>> On 3/6/19 9:41 AM, Heinz Junkes via Tech-talk wrote:
>>>
>>>> Unfortunately, I had to give up here due to lack of time. I couldn't communicate
>>>> with this Keithley IP-asyn-driver.
>>>>
>>>> I am now on Streamdevice
>>>>
>>>> (Danke Christoph)
>>>>
>>>> “
>>>> not sure what driver you are trying to use, but you can also use the
>>>> Streamdevice support from LBNL:
>>>>
>>>> https://epics.anl.gov/download/modules/index.php
>>>> https://epics.anl.gov/download/modules/Keithley6487-1.1.tar.gz
>>>>
>>>>
>>>> the Keithley 6485 is basically a Keithley 6487 with fewer functionality
>>>> (no limit Tests and Voltage source). Most commands are supported by the
>>>> 6485 as well.
>>>> It's used like any other Streamdevice support.
>>>>
>>>> Best regards,
>>>> Christoph
>>>> “
>>>>
>>>> Gruss,
>>>> Heinz
>>>>
>>>>
>>>>
>>>>
>>>>> On 6. Mar 2019, at 14:51, Heinz Junkes via Tech-talk <[email protected]>
>>>>> wrote:
>>>>>
>>>>> Looks much better.
>>>>>
>>>>> Now I get it. The function drvAsynKeithley648x returns a port for communicating. I hadn't understood that.
>>>>>
>>>>> ...
>>>>> drvAsynIPPortConfigure("MOXA_4", "172.24.192.29:4004", 0, 0, 0)
>>>>> drvAsynKeithley648x("6485", "Keithley6485", "MOXA_4",0)
>>>>> 2019/03/06 14:47:24.055 Keithley6485 writeRead: error 1 wrote "*IDN?"
>>>>> drvAsynKeithley648x::drvAsynKeithley6485 port Keithley6485 failed to acquire identification
>>>>> asynSetTraceIOMask("MOXA_4", 0, 0x2)
>>>>> asynSetTraceMask("MOXA_4", 0, 0x9)
>>>>> dbLoadRecords("db/Keithley6485.db", "P=trARPES:, CA=Sample:, PORT=Keithley6485”)
>>>>> …
>>>>>
>>>>> 2019/03/06 14:48:46.391 trARPES:Sample:read devAsynFloat64::processCallbackInput process read error
>>>>> 2019/03/06 14:48:46.391 trARPES:Sample:readStatusOverflow devAsynInt32::processCallbackInput process read error
>>>>> 2019/03/06 14:48:46.391 trARPES:Sample:readStatusFilter devAsynInt32::processCallbackInput process read error
>>>>> 2019/03/06 14:48:46.392 trARPES:Sample:readStatusMath devAsynInt32::processCallbackInput process read error
>>>>> 2019/03/06 14:48:46.392 trARPES:Sample:readStatusNull devAsynInt32::processCallbackInput process read error
>>>>> 2019/03/06 14:48:46.392 trARPES:Sample:readStatusLimits devAsynInt32::processCallbackInput process read error
>>>>> 2019/03/06 14:48:46.392 trARPES:Sample:readStatusOvervoltage devAsynInt32::processCallbackInput process read error
>>>>> …
>>>>>
>>>>> Now I have to check if the device is connected ;-)
>>>>>
>>>>> Danke,
>>>>> Heinz
>>>>>
>>>>>
>>>>>> On 6. Mar 2019, at 14:28, Mark Rivers <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>> OK, so the actual code to create the port is this, it does take 4 arguments:
>>>>>>
>>>>>> int drvAsynKeithley648x(const char *type, const char *myport,
>>>>>> const char *ioport, int ioaddr)
>>>>>>
>>>>>>
>>>>>> So your code should call
>>>>>>
>>>>>>
>>>>>> drvAsynIPPortConfigure("MOXA_4", "172.24.192.29:4004", 0, 0, 0)
>>>>>> drvAsynKeithley648x("6485", "Keithley6485", "MOXA_4",0)
>>>>>>
>>>>>> asynSetTraceIOMask("MOXA_4", 0, 0x2)
>>>>>> asynSetTraceMask("MOXA_4", 0, 0x9)
>>>>>> dbLoadRecords("db/Keithley6485.db", "P=trARPES:, CA=Sample:, PORT=Kiethley6485")
>>>>>>
>>>>>> What do you see if you try that?
>>>>>>
>>>>>>
>>>>>> ________________________________
>>>>>> From: Heinz Junkes
>>>>>> <[email protected]>
>>>>>>
>>>>>> Sent: Wednesday, March 6, 2019 7:09 AM
>>>>>> To: Mark Rivers
>>>>>> Cc:
>>>>>> [email protected]
>>>>>>
>>>>>> Subject: Re: epics-Keithley_648x, drvAsynKeithley648x
>>>>>>
>>>>>> Hello, Mark,
>>>>>>
>>>>>> thank you for your answers. Unfortunately it doesn't work that way either:
>>>>>>
>>>>>> startup
>>>>>> ...
>>>>>> drvAsynIPPortConfigure("MOXA_4", "172.24.192.29:4004", 0, 0, 0)
>>>>>> drvAsynKeithley648x("6485", "MOXA_4",0)
>>>>>> drvAsynKeithley648x::drvAsynKeithley6485 port MOXA_4 can't connect to asynCommon on Octet server 0 address 0.
>>>>>> asynSetTraceIOMask("MOXA_4", 0, 0x2)
>>>>>> asynSetTraceMask("MOXA_4", 0, 0x9)
>>>>>> dbLoadRecords("db/Keithley6485.db", "P=trARPES:, CA=Sample:, PORT=6485")
>>>>>> ...
>>>>>>
>>>>>> The driver is from
>>>>>> https://github.com/dohnarms/epics-Keithley_648x
>>>>>>
>>>>>>
>>>>>> In the driver there seems to be a mismatch
>>>>>>
>>>>>> ...
>>>>>>
>>>>>> /* Public interface forward references */
>>>>>> int drvAsynKeithley648x(const char* myport,const char* ioport, int ioaddr);
>>>>>> ...
>>>>>>
>>>>>>
>>>>>> /****************************************************************************
>>>>>> * Define public interface methods
>>>>>> ****************************************************************************/
>>>>>> int drvAsynKeithley648x(const char *type, const char *myport,
>>>>>> const char *ioport, int ioaddr)
>>>>>> {
>>>>>> int status = asynSuccess;
>>>>>> Port* pport;
>>>>>> // int i;
>>>>>> asynStandardInterfaces *pInterfaces;
>>>>>>
>>>>>> char inpBuf[BUFFER_SIZE];
>>>>>> int eomReason;
>>>>>>
>>>>>> pport = (Port*)callocMustSucceed(1,sizeof(Port),"drvAsynKeithley6485");
>>>>>>
>>>>>> ...
>>>>>>
>>>>>> /****************************************************************************
>>>>>> * Register public methods
>>>>>> ****************************************************************************/
>>>>>>
>>>>>> /* Initialization method definitions */
>>>>>> static const iocshArg arg0 = {"type",iocshArgString};
>>>>>> static const iocshArg arg1 = {"myport",iocshArgString};
>>>>>> static const iocshArg arg2 = {"ioport",iocshArgString};
>>>>>> static const iocshArg arg3 = {"ioaddr",iocshArgInt};
>>>>>> static const iocshArg* args[]= {&arg0,&arg1,&arg2,&arg3};
>>>>>> static const iocshFuncDef drvAsynKeithley648xFuncDef =
>>>>>> {"drvAsynKeithley648x",4,args};
>>>>>> static void drvAsynKeithley648xCallFunc(const iocshArgBuf* args)
>>>>>> {
>>>>>> drvAsynKeithley648x(args[0].sval,args[1].sval,args[2].sval,args[3].ival);
>>>>>> }
>>>>>>
>>>>>> /* Registration method */
>>>>>> static void drvAsynKeithley648xRegister(void)
>>>>>> {
>>>>>> static int firstTime = 1;
>>>>>>
>>>>>> if( firstTime )
>>>>>> {
>>>>>> firstTime = 0;
>>>>>> iocshRegister( &drvAsynKeithley648xFuncDef,drvAsynKeithley648xCallFunc );
>>>>>> }
>>>>>> }
>>>>>> epicsExportRegistrar( drvAsynKeithley648xRegister );
>>>>>>
>>>>>>
>>>>>> That is why I have given four arguments in the st.cmd.
>>>>>>
>>>>>> Danke,
>>>>>> Heinz
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> On 6. Mar 2019, at 13:51, Mark Rivers <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>> My comments are:
>>>>>>> Your original message says that drvAsynKeithley6845 take 3 arguments. Your actual commands call drvAsynKeithey648x with 4 arguments. Why the difference? Does 648x take an initial argument with the exact model number, or is that the name of the new port?
>>>>>>>
>>>>>>> I don't see the need for the asynOctetConnect line.
>>>>>>>
>>>>>>> Maybe this will work:
>>>>>>>
>>>>>>> drvAsynIPPortConfigure("MOXA_4", "172.24.192.29:4004", 0, 0, 0)
>>>>>>> drvAsynKeithley648x("6485", "MOXA_4",0)
>>>>>>> asynSetTraceIOMask("MOXA_4", 0, 0x2)
>>>>>>> asynSetTraceMask("MOXA_4", 0, 0x9)
>>>>>>> dbLoadRecords("db/Keithley6485.db", "P=trARPES:, CA=Sample:, "6845")
>>>>>>>
>>>>>>> I deleted the asynOctetConnect, deleted the 3 argument to drvKeithley648x, and changed the port passed in dbLoadRecords.
>>>>>>>
>>>>>>> Is this driver code on Github or somewhere else we can look at it?
>>>>>>>
>>>>>>> Mark
>>>>>>>
>
Attachment:
smime.p7s
Description: S/MIME cryptographic signature
- References:
- epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes via Tech-talk
- Re: epics-Keithley_648x, drvAsynKeithley648x Mark Rivers via Tech-talk
- Re: epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes via Tech-talk
- Re: epics-Keithley_648x, drvAsynKeithley648x Mark Rivers via Tech-talk
- Re: epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes via Tech-talk
- Re: epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes via Tech-talk
- Re: epics-Keithley_648x, drvAsynKeithley648x Arms, Dohn A. via Tech-talk
- Re: epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes via Tech-talk
- Re: epics-Keithley_648x, drvAsynKeithley648x Arms, Dohn A. via Tech-talk
- Navigate by Date:
- Prev:
Re: Questions about channel access C API programming Johnson, Andrew N. via Tech-talk
- Next:
Multi-axis sequenced move using asynMotor pseudo axis David Vine via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
<2019>
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: epics-Keithley_648x, drvAsynKeithley648x Arms, Dohn A. via Tech-talk
- Next:
RE: epics-Keithley_648x, drvAsynKeithley648x Mark Rivers via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
<2019>
2020
2021
2022
2023
2024
|