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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: epics-Keithley_648x, drvAsynKeithley648x |
From: | "Arms, Dohn A. via Tech-talk" <[email protected]> |
To: | Heinz Junkes <[email protected]> |
Cc: | "[email protected]" <[email protected]> |
Date: | Wed, 6 Mar 2019 17:54:16 +0000 |
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, HeinzOn 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, HeinzOn 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, HeinzOn 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, HeinzOn 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 |