1
0
mirror of https://github.com/thooge/esp32-nmea2000-obp60.git synced 2026-02-11 15:13:06 +01:00

correct timestamp for pass format

This commit is contained in:
wellenvogel
2025-09-26 19:56:44 +02:00
parent 24502e423e
commit 9633abc481

View File

@@ -470,14 +470,16 @@ class CanFrame:
def printOut(self,format:Format): def printOut(self,format:Format):
if format.key == Format.F_PASS: if format.key == Format.F_PASS:
return f"({self.ts}) {self.dev} {self.hdr}#{self.data}" return f"({self.ts:.6f}) {self.dev} {self.hdr}#{self.data}"
else: else:
return str(self) return str(self)
@classmethod @classmethod
def fromDump(cls,line): def fromDump(cls,line:str):
'''(1658058069.867835) can0 09F80103#ACAF6C20B79AAC06''' '''(1658058069.867835) can0 09F80103#ACAF6C20B79AAC06'''
if line is None or line == '':
return None
match=cls.DUMP_PAT.search(line) match=cls.DUMP_PAT.search(line)
if match is None: if match is None:
logError("no dump pattern in line %s",line,keep=True) logError("no dump pattern in line %s",line,keep=True)
@@ -588,8 +590,12 @@ class SeasmartBuffer:
self.clear() self.clear()
def clear(self): def clear(self):
self.idx=0 self.idx=0
def addB(self,bv): def addB(self,bv,mlen=None):
l=len(bv) l=len(bv)
if mlen is not None and mlen < l:
l=mlen
self.buf[self.idx:self.idx+l]=memoryview(bv)[0:l]
else:
self.buf[self.idx:self.idx+l]=bv self.buf[self.idx:self.idx+l]=bv
self.idx+=l self.idx+=l
def addVal(self,val,blen=2): def addVal(self,val,blen=2):
@@ -659,7 +665,7 @@ def send_seasmart(frame_like:CanFrame,quiet,stream):
seasmartBuffer.addB(BK) seasmartBuffer.addB(BK)
seasmartBuffer.addVal(frame_like.src) seasmartBuffer.addVal(frame_like.src)
seasmartBuffer.addB(BK) seasmartBuffer.addB(BK)
seasmartBuffer.addB(frame_like.data.encode()) seasmartBuffer.addB(frame_like.data.encode(),mlen=frame_like.len*2)
seasmartBuffer.finalize() seasmartBuffer.finalize()
written=stream.write(memoryview(seasmartBuffer.buf)[0:seasmartBuffer.idx]) written=stream.write(memoryview(seasmartBuffer.buf)[0:seasmartBuffer.idx])
if (written != seasmartBuffer.idx): if (written != seasmartBuffer.idx):
@@ -752,6 +758,8 @@ if __name__ == '__main__':
for line in fh: for line in fh:
lnr+=1 lnr+=1
frame=CanFrame.fromDump(line) frame=CanFrame.fromDump(line)
if frame is None:
continue
if hasFilter and not frame.pgn in pgnlist: if hasFilter and not frame.pgn in pgnlist:
continue continue
counters.add(Counters.C_FRAME) counters.add(Counters.C_FRAME)