>Then you only need 3 lines per port rather than 7.
With epics base 3.15 or later, you can reduce it to 1. The command 'iocshLoad' runs a given script with a set of temporary environment variables that only exist for the duration of running said script. This has the added benefit of not polluting your global
environment, so that if you accidentally forget to set a variable, you get an error message saying that the variable is undefined rather than the previous value bleeding through.
You could thus do
iocshLoad("./addSerialPort.cmd", "PORT=PS1, DEVICE=/dev/ttyS1")
iocshLoad("./addSerialPort.cmd", "PORT=PS2, DEVICE=/dev/ttyS2")
Keenan Lang
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Mark Rivers via Tech-talk <tech-talk at aps.anl.gov>
Sent: Tuesday, March 17, 2020 7:16 AM
To: yincx at ihep.ac.cn <yincx at ihep.ac.cn>
Cc: tech-talk <tech-talk at aps.anl.gov>
Subject: Re: How can I add multiple serial ports in a single IOC?
> if I want to add 10 serial ports, should I add them one by one and repeat the above statements 10 times? Is there any simple method?
> Can I add the serial ports as a group,which has the same configuration? I didn't find any document about this.
You could make another script called, for example addSerialPort. It would look like this:
drvAsynSerialPortConfigure ("$(PORT)","$(DEVICE)")
asynSetOption ("$(PORT)", 0, "baud", "9600")
asynSetOption ("$(PORT)", 0, "bits", "8")
asynSetOption ("$(PORT)", 0, "parity", "none")
asynSetOption ("$(PORT)", 0, "stop", "1")
asynSetOption ("$(PORT)", 0, "clocal", "Y")
asynSetOption ("$(PORT)", 0, "crtscts", "N")
Then you would set 2 environment variables and call the script:
epicsEnvSet("PORT", "PS1")
epicsEnvSet("DEVICE", " /dev/ttyS1")
< addSerialPort
epicsEnvSet("PORT", "PS2")
epicsEnvSet("DEVICE", " /dev/ttyS2")
< addSerialPort
...
Then you only need 3 lines per port rather than 7.
Mark
________________________________
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of yincx--- via Tech-talk <tech-talk at aps.anl.gov>
Sent: Monday, March 16, 2020 11:08 PM
To: tech-talk
Subject: How can I add multiple serial ports in a single IOC?
Hi everyone,
I want to add 10 or more serial ports in a single IOC. All the serial ports have the same configuration besides the serial port name.
The single port configuration is like this:
drvAsynSerialPortConfigure ("PS1","/dev/ttyS1")
asynSetOption ("PS1", 0, "baud", "9600")
asynSetOption ("PS1", 0, "bits", "8")
asynSetOption ("PS1", 0, "parity", "none")
asynSetOption ("PS1", 0, "stop", "1")
asynSetOption ("PS1", 0, "clocal", "Y")
asynSetOption ("PS1", 0, "crtscts", "N")
if I want to add 10 serial ports, should I add them one by one and repeat the above statements 10 times? Is there any simple method? Can I add the serial ports as a group,which has the same configuration? I didn't find any document about this.
Thank you very much for your help.
Best Regards
Chunxia Yin
2020-3-17
________________________________
yincx at ihep.ac.cn
|