mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-07-21 09:12:25 +08:00
Handle loop and multiple publishers
old-commit-hash: e2493c2221ca6dc5a2eceb4d9fb1a46fa62c7e9c
This commit is contained in:
@@ -19,11 +19,11 @@ def input_ready():
|
||||
return select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], [])
|
||||
|
||||
|
||||
def replay(route, segment):
|
||||
def replay(route, loop):
|
||||
route = route.replace('|', '/')
|
||||
|
||||
lr = LogReader(f"cd:/{route}/{segment}/rlog.bz2")
|
||||
fr = FrameReader(f"cd:/{route}/{segment}/fcamera.hevc", readahead=True)
|
||||
lr = LogReader(f"cd:/{route}/rlog.bz2")
|
||||
fr = FrameReader(f"cd:/{route}/fcamera.hevc", readahead=True)
|
||||
|
||||
# Build mapping from frameId to segmentId from encodeIdx, type == fullHEVC
|
||||
msgs = [m for m in lr if m.which() not in IGNORE]
|
||||
@@ -53,7 +53,12 @@ def replay(route, segment):
|
||||
|
||||
if w not in socks:
|
||||
socks[w] = messaging.pub_sock(w)
|
||||
socks[w].send(msg.to_bytes())
|
||||
|
||||
try:
|
||||
if socks[w]:
|
||||
socks[w].send(msg.to_bytes())
|
||||
except messaging.messaging_pyx.MultiplePublishersError:
|
||||
socks[w] = None
|
||||
|
||||
lag += (next_msg.logMonoTime - msg.logMonoTime) / 1e9
|
||||
lag -= time.time() - start_time
|
||||
@@ -80,20 +85,20 @@ def replay(route, segment):
|
||||
new_time = msgs[i].logMonoTime + dt * 1e9
|
||||
i = bisect.bisect_left(times, new_time)
|
||||
|
||||
i = min(i + 1, max_i)
|
||||
i = (i + 1) % max_i if loop else min(i + 1, max_i)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("route")
|
||||
parser.add_argument("segment", type=int)
|
||||
parser.add_argument("--loop", action='store_true')
|
||||
parser.add_argument("segment")
|
||||
args = parser.parse_args()
|
||||
|
||||
orig_settings = termios.tcgetattr(sys.stdin)
|
||||
tty.setcbreak(sys.stdin)
|
||||
|
||||
try:
|
||||
replay(args.route, args.segment)
|
||||
replay(args.segment, args.loop)
|
||||
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, orig_settings)
|
||||
except:
|
||||
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, orig_settings)
|
||||
|
||||
Reference in New Issue
Block a user