PlugNPLay: autoconnect with disconnectOnReadtimeout working #1

Merged
soederqvist_a merged 2 commits from fixup-dynamic into main 2026-04-23 08:20:02 +02:00
3 changed files with 33 additions and 8 deletions
+21 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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")