With a line that contains the line terminator in 3 places, the part of the message before the first line terminator is dropped. I've tried some variations of line terminator in the protocol file and via asynRecord, with no effect or losing data entirely.
It's a very simple protocol that passes pieces of a longer message along as a string/waveform to an asub record for reassembly and decoding. The protocol file is:
But only the part between the first and seconds \r\n's makes it to the waveform record:
Here's the output when streamDebug=1, filtered for the PV prefix which is also the asyn port name, PBLM:LTU0:739. The IOC has dozens of different devices, so full output is very cluttered.
2022/10/17 14:31:51.955033 PBLM:LTU0:73 AsynDriverInterface.cc:1176: AsynDriverInterface::asynReadHandler(PBLM:LTU0:739:STREAM_READER, buffer="MSG 1,#3117000b0C01f42cb9690009463C0002A3500000051B000001180000000000000027420400003F4CCCCD41A0F5C34108B80042153B204480000040400<0d><0a>MSG
1,#31090000000000041A000004040000043BE1FE0447F95B0447FBCC04194ED004194ED004194ED0044674F05C19D3C11C19AB2F0C19AC879<0d><0a><0d><0a>", received=252 eomReason=NONE) ioAction=AsyncRead
2022/10/17 14:31:51.955096 PBLM:LTU0:73 StreamCore.cc:944: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER, StreamIoSuccess input="MSG 1,#3117000b0C01f42cb9690009463C0002A3500000051B000001180000000000000027420400003F4CCCCD41A0F5C34108B80042153B204480000040400<0d><0a>MSG
1,#31090000000000041A000004040000043BE1FE0447F95B0447FBCC04194ED004194ED004194ED0044674F05C19D3C11C19AB2F0C19AC879<0d><0a><0d><0a>", size=252)
2022/10/17 14:31:51.955110 PBLM:LTU0:73 2022/10/17 14:31:51.955110 LBLM:LTUH:43 StreamCore.cc:994: StreamCore.cc:544: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER) inputBuffer="MSG 1,#3117000b0C01f42cb9690009463C0002A3500000051B000001180000000000000027420400003F4CCCCD41A0F5C34108B80042153B204480000040400<0d><0a>MSG
1,#31090000000000041A000004040000043BE1FE0447F95B0447FBCC04194ED004194ED004194ED0044674F05C19D3C11C19AB2F0C19AC879<0d><0a><0d><0a>", size 252
2022/10/17 14:31:51.955121 PBLM:LTU0:73 StreamCore.cc:1036: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER) inTerminator <0d><0a> at position 128
2022/10/17 14:31:51.955135 PBLM:LTU0:73 StreamCore.cc:1104: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER) input line: "MSG 1,#3117000b0C01f42cb9690009463C0002A3500000051B000001180000000000000027420400003F4CCCCD41A0F5C34108B80042153B204480000040400"
2022/10/17 14:31:51.955143 PBLM:LTU0:73 StreamCore.cc:1193: StreamCore::matchInput(PBLM:LTU0:739:STREAM_READER): format = "%s"
2022/10/17 14:31:51.955163 PBLM:LTU0:73 StreamCore.cc:1535: StreamCore::scanValue(PBLM:LTU0:739:STREAM_READER, format=%s, char*, size=123) input="#3117000b0C01f42cb9690009463C0002A3500000051B000001180000000000000027420400003F4CCCCD41A0F5C34108B80042153B204480000040400"
value="#3117000b0C01f42cb9690009463C0002A3500000051B000001180000000000000027420400003F4CCCCD41A0F5C34108B80042153B204480000040400<00>"
2022/10/17 14:31:51.955188 PBLM:LTU0:73 StreamEpics.cc:1543: Stream::matchValue(PBLM:LTU0:739:STREAM_READER): success, 122 bytes consumed
2022/10/17 14:31:51.955190 cbLow 2022/10/17 14:31:51.955204 PBLM:LTU0:73 StreamCore.cc:1110: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER) unpared input left: "MSG 1,#31090000000000041A000004040000043BE1FE0447F95B0447FBCC04194ED004194ED004194ED0044674F05C19D3C11C19AB2F0C19AC879<0d><0a><0d><0a>"
StreamEpics.cc:1079: 2022/10/17 14:31:51.955215 PBLM:LTU0:73 StreamCore.cc:544: StreamCore::evalCommand(PBLM:LTU0:739:STREAM_READER): activeCommand = end
2022/10/17 14:31:51.955225 PBLM:LTU0:73 StreamCore.cc:447: StreamCore::finishProtocol(PBLM:LTU0:739:STREAM_READER, Success) not bus owner
2022/10/17 14:31:51.955229 PBLM:LTU0:73 AsynDriverInterface.cc:1473: 2022/10/17 14:31:51.955229 cbLow AsynDriverInterface::finish(PBLM:LTU0:739:STREAM_READER) start
AsynDriverInterface::finish(PBLM:LTU0:739:STREAM_READER) done
2022/10/17 14:31:51.955288 cbLow StreamEpics.cc:1088: 2022/10/17 14:31:51.955301 LBLM:LTUH:43 2022/10/17 14:31:51.955303 PBLM:LTU0:73 StreamEpics.cc:1001: Stream::protocolFinishHook(PBLM:LTU0:739:STREAM_READER, Success)
2022/10/17 14:31:51.955315 PBLM:LTU0:73 AsynDriverInterface.cc:1257: AsynDriverInterface::asynReadHandler(PBLM:LTU0:739:STREAM_READER) readMore=0, ioAction=None
2022/10/17 14:31:51.955431 cbLow StreamEpics.cc:1079: recordProcessCallback(PBLM:LTU0:739:STREAM_READER) processing record
Stream::process(PBLM:LTU0:739:STREAM_READER)
2022/10/17 14:31:51.955460 cbLow StreamEpics.cc:889: Stream::process(PBLM:LTU0:739:STREAM_READER) ready. don't convert
2022/10/17 14:31:51.955470 cbLow StreamEpics.cc:1083: recordProcessCallback(PBLM:LTU0:739:STREAM_READER) processing record done
2022/10/17 14:31:51.955493 cbLow StreamEpics.cc:1088: recordProcessCallback(PBLM:LTU0:739:STREAM_READER) restart async protocol
2022/10/17 14:31:51.955498 cbLow StreamCore.cc:411: StreamCore::startProtocol(PBLM:LTU0:739:STREAM_READER, startMode=StartAsync)
2022/10/17 14:31:51.955519 cbLow StreamCore.cc:544: StreamCore::evalCommand(PBLM:LTU0:739:STREAM_READER): activeCommand = in
2022/10/17 14:31:51.955558 cbLow StreamCore.cc:901: StreamCore::evalIn(PBLM:LTU0:739:STREAM_READER): early input: MSG 1,#31090000000000041A000004040000043BE1FE0447F95B0447FBCC04194ED004194ED004194ED0044674F05C19D3C11C19AB2F0C19AC879<0d><0a><0d><0a>
2022/10/17 14:31:51.955570 cbLow StreamCore.cc:944: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER, StreamIoSuccess input="", size=0)
2022/10/17 14:31:51.955590 cbLow 2022/10/17 14:31:51.955592 LBLM:LTUH:43 2022/10/17 14:31:51.955589 PBLM:LTU0:73 StreamCore.cc:994: StreamCore.cc:1110: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER) inputBuffer="MSG 1,#31090000000000041A000004040000043BE1FE0447F95B0447FBCC04194ED004194ED004194ED0044674F05C19D3C11C19AB2F0C19AC879<0d><0a><0d><0a>",
size 122
2022/10/17 14:31:51.955614 cbLow StreamCore.cc:1036: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER) inTerminator <0d><0a> at position 118
StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER) input line: "MSG 1,#31090000000000041A000004040000043BE1FE0447F95B0447FBCC04194ED004194ED004194ED0044674F05C19D3C11C19AB2F0C19AC879"
StreamCore.cc:1193: StreamCore::matchInput(PBLM:LTU0:739:STREAM_READER): format = "%s"
StreamCore::scanValue(PBLM:LTU0:739:STREAM_READER, format=%s, char*, size=113) input="#31090000000000041A000004040000043BE1FE0447F95B0447FBCC04194ED004194ED004194ED0044674F05C19D3C11C19AB2F0C19AC879" value="#31090000000000041A000004040000043BE1FE0447F95B0447FBCC04194ED004194ED004194ED0044674F05C19D3C11C19AB2F0C19AC879<00>"
2022/10/17 14:31:51.955809 cbLow StreamEpics.cc:1543: Stream::matchValue(PBLM:LTU0:739:STREAM_READER): success, 112 bytes consumed
2022/10/17 14:31:51.955816 cbLow StreamCore.cc:1110: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER) unpared input left: "<0d><0a>"
AsynDriverInterface.cc:830: 2022/10/17 14:31:51.955861 cbLow StreamCore.cc:544: StreamCore::evalCommand(PBLM:LTU0:739:STREAM_READER): activeCommand = end
2022/10/17 14:31:51.955870 cbLow StreamCore.cc:447: StreamCore::finishProtocol(PBLM:LTU0:739:STREAM_READER, Success) not bus owner
AsynDriverInterface.cc:1257: 2022/10/17 14:31:51.955908 cbLow AsynDriverInterface.cc:1473: AsynDriverInterface::finish(PBLM:LTU0:739:STREAM_READER) start
AsynDriverInterface.cc:1483: 2022/10/17 14:31:51.955943 PBLM:LTU0:73 AsynDriverInterface::finish(PBLM:LTU0:739:STREAM_READER) done
2022/10/17 14:31:51.955954 cbLow StreamEpics.cc:1001: Stream::protocolFinishHook(PBLM:LTU0:739:STREAM_READER, Success)
2022/10/17 14:31:51.956129 cbLow StreamEpics.cc:1079: recordProcessCallback(PBLM:LTU0:739:STREAM_READER) processing record
2022/10/17 14:31:51.956143 cbLow StreamEpics.cc:875: Stream::process(PBLM:LTU0:739:STREAM_READER)
2022/10/17 14:31:51.956157 cbLow StreamEpics.cc:889: Stream::process(PBLM:LTU0:739:STREAM_READER) ready. don't convert
2022/10/17 14:31:51.956185 cbLow StreamEpics.cc:1083: recordProcessCallback(PBLM:LTU0:739:STREAM_READER) processing record done
recordProcessCallback(PBLM:LTU0:739:STREAM_READER) restart async protocol
2022/10/17 14:31:51.956226 cbLow 2022/10/17 14:31:51.956236 PBLM:LTU0:73 StreamCore.cc:411: StreamCore.cc:1128: StreamCore::startProtocol(PBLM:LTU0:739:STREAM_READER, startMode=StartAsync)
2022/10/17 14:31:51.956254 cbLow StreamCore.cc:544: StreamCore::evalCommand(PBLM:LTU0:739:STREAM_READER): activeCommand = in
2022/10/17 14:31:51.956263 cbLow StreamCore.cc:901: StreamCore::evalIn(PBLM:LTU0:739:STREAM_READER): early input: <0d><0a>
2022/10/17 14:31:51.956271 cbLow StreamCore.cc:944: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER, StreamIoSuccess input="", size=0)
2022/10/17 14:31:51.956280 cbLow StreamCore.cc:994: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER) inputBuffer="<0d><0a>", size 2
2022/10/17 14:31:51.956288 cbLow StreamCore.cc:1036: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER) inTerminator <0d><0a> at position 0
2022/10/17 14:31:51.956296 cbLow StreamCore.cc:1104: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER) input line: ""
2022/10/17 14:31:51.956304 cbLow StreamCore.cc:1128: StreamCore::readCallback(PBLM:LTU0:739:STREAM_READER) async match failure: just restart
2022/10/17 14:31:51.956312 cbLow AsynDriverInterface.cc:805: AsynDriverInterface::readRequest(PBLM:LTU0:739:STREAM_READER, 2000 msec reply, 10000 msec read, expect 0 bytes, async=yes)
2022/10/17 14:31:51.956321 cbLow AsynDriverInterface.cc:830: AsynDriverInterface::readRequest PBLM:LTU0:739:STREAM_READER: queueRequest(..., priority=0, queueTimeout=-1 sec) = asynError [async=true] asynManager::queueRequest is already
queued
2022/10/17 14:31:51.956581 PBLM:LTU0:73 AsynDriverInterface.cc:956: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): read returned asynSuccess: ioAction=AsyncRead received=63, eomReason=CNT, buffer="MSG 1,#3117000b0C01f42cb9690009463C0002A3500000051B000001180000"
2022/10/17 14:31:51.956587 PBLM:LTU0:73 AsynDriverInterface.cc:981: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): AsyncRead poll: received 63 of 63 bytes "MSG 1,#3117000b0C01f42cb9690009463C0002A3500000051B000001180000"
eomReason=CNT [data ignored]
2022/10/17 14:31:51.956591 PBLM:LTU0:73 AsynDriverInterface.cc:1127: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER) readMore=-1 bytesToRead=63
2022/10/17 14:31:51.956608 PBLM:LTU0:73 AsynDriverInterface.cc:948: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): ioAction=AsyncRead read(..., bytesToRead=63, ...) [timeout=10 sec]
2022/10/17 14:31:51.956617 PBLM:LTU0:73 AsynDriverInterface.cc:956: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): read returned asynSuccess: ioAction=AsyncRead received=63, eomReason=CNT, buffer="000000000027420400003F4CCCCD41A0F5C34108B80042153B2044800000404"
2022/10/17 14:31:51.956623 PBLM:LTU0:73 AsynDriverInterface.cc:981: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): AsyncRead poll: received 63 of 63 bytes "000000000027420400003F4CCCCD41A0F5C34108B80042153B2044800000404"
eomReason=CNT [data ignored]
2022/10/17 14:31:51.956627 PBLM:LTU0:73 AsynDriverInterface.cc:1127: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER) readMore=-1 bytesToRead=63
2022/10/17 14:31:51.956631 PBLM:LTU0:73 AsynDriverInterface.cc:948: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): ioAction=AsyncRead read(..., bytesToRead=63, ...) [timeout=10 sec]
2022/10/17 14:31:51.956636 PBLM:LTU0:73 AsynDriverInterface.cc:956: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): read returned asynSuccess: ioAction=AsyncRead received=2, eomReason=EOS, buffer="00"
2022/10/17 14:31:51.956640 PBLM:LTU0:73 AsynDriverInterface.cc:981: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): AsyncRead poll: received 2 of 63 bytes "00" eomReason=EOS [data ignored]
2022/10/17 14:31:51.956650 PBLM:LTU0:73 AsynDriverInterface.cc:1127: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER) readMore=-1 bytesToRead=63
2022/10/17 14:31:51.956654 PBLM:LTU0:73 AsynDriverInterface.cc:948: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): ioAction=AsyncRead read(..., bytesToRead=63, ...) [timeout=10 sec]
2022/10/17 14:31:51.956661 PBLM:LTU0:73 AsynDriverInterface.cc:956: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): read returned asynSuccess: ioAction=AsyncRead received=63, eomReason=CNT, buffer="MSG 1,#31090000000000041A000004040000043BE1FE0447F95B0447FBCC04"
2022/10/17 14:31:51.956666 PBLM:LTU0:73 AsynDriverInterface.cc:981: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): AsyncRead poll: received 63 of 63 bytes "MSG 1,#31090000000000041A000004040000043BE1FE0447F95B0447FBCC04"
eomReason=CNT [data ignored]
2022/10/17 14:31:51.956670 PBLM:LTU0:73 AsynDriverInterface.cc:1127: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER) readMore=-1 bytesToRead=63
2022/10/17 14:31:51.956674 PBLM:LTU0:73 AsynDriverInterface.cc:948: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): ioAction=AsyncRead read(..., bytesToRead=63, ...) [timeout=10 sec]
2022/10/17 14:31:51.956681 PBLM:LTU0:73 AsynDriverInterface.cc:956: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): read returned asynSuccess: ioAction=AsyncRead received=55, eomReason=EOS, buffer="194ED004194ED004194ED0044674F05C19D3C11C19AB2F0C19AC879"
2022/10/17 14:31:51.956689 PBLM:LTU0:73 AsynDriverInterface.cc:981: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): AsyncRead poll: received 55 of 63 bytes "194ED004194ED004194ED0044674F05C19D3C11C19AB2F0C19AC879"
eomReason=EOS [data ignored]
2022/10/17 14:31:51.956701 PBLM:LTU0:73 AsynDriverInterface.cc:1127: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER) readMore=-1 bytesToRead=63
2022/10/17 14:31:51.956708 PBLM:LTU0:73 AsynDriverInterface.cc:948: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): ioAction=AsyncRead read(..., bytesToRead=63, ...) [timeout=10 sec]
2022/10/17 14:31:51.956714 PBLM:LTU0:73 AsynDriverInterface.cc:956: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): read returned asynSuccess: ioAction=AsyncRead received=0, eomReason=EOS, buffer=""
2022/10/17 14:31:51.956718 PBLM:LTU0:73 AsynDriverInterface.cc:981: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): AsyncRead poll: received 0 of 63 bytes "" eomReason=EOS [data ignored]
2022/10/17 14:31:51.956722 PBLM:LTU0:73 AsynDriverInterface.cc:1127: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER) readMore=-1 bytesToRead=63
2022/10/17 14:31:51.956726 PBLM:LTU0:73 AsynDriverInterface.cc:948: AsynDriverInterface::readHandler(PBLM:LTU0:739:STREAM_READER): ioAction=AsyncRead read(..., bytesToRead=63, ...) [timeout=10 sec]