PlugNPLay: autoconnect with disconnectOnReadtimeout working #1
+21
-3
@@ -1,20 +1,38 @@
|
||||
record(bo, "$(PREFIX):FETCH")
|
||||
record(calcout, "$(PREFIX):FETCH")
|
||||
{
|
||||
field(DTYP, "stream")
|
||||
field(DESC, "Initialization parameters")
|
||||
field(OUT,"@$(PROTO) fetch_rht($(PREFIX)) $(PORT) 0")
|
||||
field(SCAN,"1 second")
|
||||
field(CALC, "0")
|
||||
field(OUT, "@$(PROTO) fetch_rht($(PREFIX)) $(PORT) 0")
|
||||
field(SCAN, "1 second")
|
||||
field(FLNK, "$(PREFIX):FANOUT")
|
||||
}
|
||||
|
||||
record(fanout, "$(PREFIX):FANOUT") {
|
||||
field(LNK1, "$(PREFIX):TEMP")
|
||||
field(LNK2, "$(PREFIX):RELHUM")
|
||||
}
|
||||
|
||||
record(ai, "$(PREFIX):TEMP")
|
||||
{
|
||||
field(DESC, "Temperature")
|
||||
field(INP, "$(PREFIX):FETCH.A NPP MS")
|
||||
field(EGU, "degC")
|
||||
}
|
||||
|
||||
record(ai, "$(PREFIX):RELHUM")
|
||||
{
|
||||
field(DESC, "Relative Humidity")
|
||||
field(INP, "$(PREFIX):FETCH.B NPP MS")
|
||||
field(EGU, "%RH")
|
||||
}
|
||||
|
||||
record(asyn,"$(PREFIX):ASYN")
|
||||
{
|
||||
field(DTYP,"asynRecordDevice")
|
||||
field(PORT,"$(PORT)")
|
||||
field(ADDR,"-1")
|
||||
field(TMOD, "NoI/O")
|
||||
field(TMOT, -1.0)
|
||||
}
|
||||
|
||||
|
||||
+6
-3
@@ -3,8 +3,11 @@
|
||||
|
||||
Terminator = '';
|
||||
ReplyTimeout = 3000;
|
||||
LockTimeout = 5000;
|
||||
ReadTimeout = 2000;
|
||||
MaxInput = 15;
|
||||
# Remove if we can fix the occasional null byte being sent
|
||||
ExtraInput = Ignore
|
||||
#ExtraInput = Ignore;
|
||||
|
||||
# unsolicited weight message
|
||||
fetch_rht {
|
||||
@@ -12,7 +15,7 @@ fetch_rht {
|
||||
# 3rd byte is command, fetch rht values
|
||||
# 4th byte length of message, 2 bytes
|
||||
# 5th and 6th byte, data. For this case it is 1
|
||||
|
||||
|
||||
out 0x00 0x00 0x67 0x02 0x00 0x01 0x6a;
|
||||
# First 2 bytes is address
|
||||
# 0xca8b is the unit at neutra
|
||||
@@ -27,5 +30,5 @@ fetch_rht {
|
||||
# I try to handle this with with ?*c command, but it doesn't work
|
||||
# Possibly check with Dirk sometime how to make this work, if possible
|
||||
# For now ignore extra data
|
||||
in 0xca 0x8b 0x67 0x0A 0x06 0x00 "%(\$1:TEMP)#R%(\$1:RELHUM)#R%*c%*?1c";
|
||||
in 0xca 0x8b 0x67 0x0A 0x06 0x00 "%(A)#R%(B)#R%<sum8>";
|
||||
}
|
||||
|
||||
+6
-2
@@ -7,6 +7,10 @@ require stream
|
||||
|
||||
epicsEnvSet("PROTO", "$(epluse_DB)epluse.proto")
|
||||
|
||||
drvAsynIPPortConfigure("$(INSTR)-sps", "$(MOXA_ADDR)",0,0,0)
|
||||
### We have autoconnect and disconnectOnReadTimeout enabled, so that it can come and go
|
||||
## without generating too much noise. We detect connected state via asyn record .CNCT
|
||||
# drvAsynIPPortConfigure(portName, hostInfo, priority, noAutoConnect, noProcessEos)
|
||||
drvAsynIPPortConfigure("$(INSTR)-epluse", "$(MOXA_ADDR)",0,0,0)
|
||||
asynSetOption("$(INSTR)-epluse", -1, "disconnectOnReadTimeout", "Y")
|
||||
|
||||
dbLoadRecords("$(epluse_DB)epluse.db", "PREFIX=SQ:$(INSTR), PROTO=$(PROTO), PORT=$(INSTR)-sps")
|
||||
dbLoadRecords("$(epluse_DB)epluse.db", "PREFIX=SQ:$(INSTR), PROTO=$(PROTO), PORT=$(INSTR)-epluse")
|
||||
|
||||
Reference in New Issue
Block a user