fix encoder bug

This commit is contained in:
remilia 2025-04-19 21:59:25 +08:00
parent 339194200c
commit 0c83418c19
4 changed files with 49 additions and 2 deletions

View File

@ -25,6 +25,7 @@ class DeviceCmd(Enum):
GetData = auto()
GetConnection = auto()
GetEnable = auto()
GetEncoder = auto()
SetNameAndFileOnly = auto()
SetConnectionOn = auto()

View File

@ -73,7 +73,7 @@ class Muxer(Node):
# todo fixit driver no empty
self.rep_socket.send(BeamformerMsg(b'nop').encode_msg())
return
_, _, sequence_id, encoder = struct.unpack_from('=iiii', self.driver_data_raw)
_, sequence_id, encoder = struct.unpack_from('=IQi', self.driver_data_raw)
driver_data_body = self.driver_data_raw[4 + 8 + 4:]
data_msg = RfFrameMsg(0, RfFrameMemory(
RfFrameMeta(

View File

@ -9,7 +9,7 @@ from flandre.config import C
from flandre.nodes.Device import Device, DeviceCmd
from flandre.nodes.Mi import Mi
if __name__ == '__main__':
def t1():
context = zmq.Context()
req_driver_socket = context.socket(zmq.REQ)
req_driver_socket.connect(C.live_rep_socket)
@ -27,3 +27,13 @@ if __name__ == '__main__':
cv2.imshow('test', arr)
cv2.waitKey(1)
# print(b.__len__())
if __name__ == '__main__':
context = zmq.Context()
req_driver_socket = context.socket(zmq.REQ)
req_driver_socket.connect(C.live_rep_socket)
magic = 7355608
cmd = DeviceCmd.GetEncoder
while True:
req_driver_socket.send(struct.pack('i', magic) + struct.pack('i', cmd.value))
print(req_driver_socket.recv())
time.sleep(0.2)

36
test/testdevicerecv.py Normal file
View File

@ -0,0 +1,36 @@
import struct
import time
import cv2
import numpy as np
import zmq
from flandre.config import C
from flandre.nodes.Device import Device, DeviceCmd
from flandre.nodes.Mi import Mi
def t1():
context = zmq.Context()
req_driver_socket = context.socket(zmq.REQ)
req_driver_socket.connect(C.live_rep_socket)
while True:
req_driver_socket.send(struct.pack('i', magic) + struct.pack('i', cmd.value))
b = req_driver_socket.recv()
print(b[4:12])
print(struct.unpack('<I', b[8:12]))
offset = 4 + 8 + 4
# offset = 0
arr = np.frombuffer(b, dtype=np.int16, offset=offset).reshape((256, 5002))
cv2.imshow('test', arr)
cv2.waitKey(1)
# print(b.__len__())
if __name__ == '__main__':
context = zmq.Context()
req_driver_socket = context.socket(zmq.REQ)
req_driver_socket.connect(C.live_rep_socket)
req_driver_socket.send(b'')
r = struct.unpack_from('=IQi', req_driver_socket.recv())
print(r)