From 994058a3390ceb3b3bae244db433c18b4ded99c9 Mon Sep 17 00:00:00 2001 From: CaoWangrenbo Date: Wed, 19 Feb 2025 19:57:21 +0800 Subject: [PATCH 1/2] update --- serial_module.c | 4 +- serial_module.so | Bin 37160 -> 37168 bytes test_send.jpg | Bin 6920 -> 22208 bytes test_send.py | 105 ++++++++++++++++++++++++++++++++++------------- 4 files changed, 80 insertions(+), 29 deletions(-) diff --git a/serial_module.c b/serial_module.c index eb92914..57fcf5f 100644 --- a/serial_module.c +++ b/serial_module.c @@ -11,7 +11,7 @@ #include // 引入 pthread 库 // 宏定义 -#define USE_FEC +// #define USE_FEC #ifdef USE_FEC #define FEC_SIZE 32 // 前向纠错冗余数据大小 #else @@ -202,6 +202,8 @@ static PyObject *serial_send(PyObject *self, PyObject *args) { // 拷贝该帧对应数据段 memcpy(send_buffer + HEADER_SIZE, data + offset, data_len); + printf("Received frame: seq=%d, len=%d\r\n", frame_counter, data_len); + // 计算 CRC32 校验和 uint32_t crc = calculate_crc32(send_buffer, HEADER_SIZE + DATA_SIZE + FEC_SIZE); memcpy(send_buffer + HEADER_SIZE + DATA_SIZE + FEC_SIZE, &crc, CHECKSUM_SIZE); diff --git a/serial_module.so b/serial_module.so index 6a5dec947d8ad8e1c1a05fa896b0f43db349f367..5a19e54161d17d253571bb0dc98f073b42e1908e 100755 GIT binary patch delta 2158 zcmZ8j4Nz276u$TFzGWA5VTr#*U>8ggQCCRWP8CQZBP5&{i5*P3=-BFbmHkFQT0>Q-DIR9% zT=W|3)J2;c5>zP!lu8j57v0dQi>43cZrwf&T?CE6HgiFms*|0gqCQ|!0bRj1S_P(% z=sBMTbe0d%(Zs3BtA_BK1Nvu&@Q=x*ADLl5T(WC)ICwHJoOpO>d24!V}cLfGGcj`fC!aup9bX%F90|!*EBqm{3{Ni@+NN9~Sr#33B#^!eZ&3XQ_wTEHt z15$av+u4sPqQ-g9##hkgP!+$B8sS3xmvkFcC2XaFY_yD^th*0Vt)r*4^(jX_P+vVj z%1xMp!=(B@g8aKR%Bi@s^_ZkTziFyay+9ZHV3T!bqUBj$16tKP`za5VDi`EZ{OQ(-28fSf{_&vno!9?zwXrs0Le{g;p z+kNmF=gR#&ji|+YKmG>iafovfry(v!T#Wb$;u^#+ZgJj(xbIKSTM>KiaDE-}VmIdm zXG41r=T^kqh%Y1N+~vFoQAS*kxX{P>E=FRB4;QDA@xwjNZy^T#g$dvZX2RF$$#e{K zrYD!mu$jYknp<>Oke(>hA`kiJVfZ8q{T#+m8c7==2iLcu6lpSeknV*8NUhL` zv=jP}J_b{Ug@(v!8I^kIn4ZVt66LWkJ!Ck+5*^Wo!3kCY4o7rSRT@UYZ*XP}&L|}x zNBuDl)0^t2W=!}o#1~IeHgoHPGCcJ*3OO{dU)gUPejqd7napcP&$xa=c0DmQ}-yC zeh8A=795wTM#D@_x|K`}8*PTCufAhrrr}cHe}PN#+KoXPS_{(VOl(@)<}6wUbW0X> Tg9GVqSc~*5v>~kr>Ph|&D$<(( delta 1962 zcmZ8i4NOy46u$ShueL?`6DU8Wv={`%Q4tZCPC!?EZ2m^cAV6`0xtS$83jPXUk4>n`wY@jy(GhA&hGc66*rh8~0UI zRIP10SzmYKdg%N2SBfLt7)R5fkJp9WHpr{GWFRJvkU-)~G!UTDg|CT}-EVoL)l`n& z(!(N^m7anxRJyP{F9mp$N)RQAR_Idcs7oAF9aqpf(5N+sr6kHZ8LMSfdzY+$KCPLq zfdC(!X`?si-4}AYBjn@?=+f!}F24}nE0*{i(9l@$557*X!kyr+s8ehTaVmWCQM2H* zj7qBq6FVjEYo!GS5pbO441-J)tnnam#~YkNkOnV-Ld10*(^Q6uHanEv0Hj< z+*yeMQ}R729XPr-Pfq^*A!8r6l};1v{HD3+vSV6sRj?HNRU*?qV(eR7Ooo>TTP>qf zb-&ZR5{c{D=nno#3dta?wW*Z2?_#E4x44Bg%c$Qr=QGAS_#Ui>oP3N#jcg)H6YSaJ z#X@{gOdQ5ad3Pf`i_jNeEtfO4Ba1!w0M6`u6WX*3Tar=kF>m-9%0<4flO$S6>OhdR z&LcGoV;-r4pCGfH&z08f7tZ%81=|JW$bxEpXw7W&qV&e|Lm{*?hA9Y{(P`turQBV7 zlDAAAQlU(2XH>9B+hy~VaeC<8$0QLp?9>x>x|ctYJ9o9;_cQ#RE!b|Jdw{&Stliu9 z6U->^L?Jjbls<-p$THdhha+=oDzM1I^a30F!7WaJ976_6#+u^axxi2W5fu9(-e59A)~y?>Mfivy4%@Wo*7>yz;24 zU5qf@^o3sESq-z@qJLr>t>}=6&mW9QhiU{-iAON|24i}}&4>#S>k*}+`8{GK z;tvCiH6i}?Cu41hfo{fn5w8t0M(|I0X^1f+Vn5=mh%1K~D@HtlxE=A05ylR2B%BQ4 z;37J{`-`ywME*7kz^zP%t~s%E6+A}k22+wQtQV!WV2O!GkAqVDCBo{YD4GBzXlH=~ zZ5o_NisEAX;g_Un&hI8XOfr~eqR@6}wZ+%}6K?SomEtU&JV{L?mK^l|2+4D!=;x3< zcN*OXAKijY1jHX+D!^&kUn+K!ikPd2`kzIZ8ta|k|fqlmuw@+^b*(-Jb|cLWa| z=UB%t!OT10n-f9XVP=k1AMb6AAHfpm0tF0nj@QDAHW!hf#6vmFT)^{QWX0oRc3wQi z_qR1a(XhuTJFPMh)do`TyBQ~(qgb&YI`hp`(@2Rz-Pt9

DNyo(Dq7qKY zhpMMR(R!2e%>#;P*s;DtN?7&IdsD@>4~<-)=NzGsbZn5rPe*qI+^a030&J)<;~9X@ zs+LeC^i>sNsmy8}7SF9N$4Xr|ZiT_>R_yT0nx)hQcWZP=4cgiSsezYkt$3muYaeOp zN^scC+EJt2J91vJOPm2a&6?+5%&eU$nilVOv_-V-oTQ+Y;MkKw*MnmtBlcgQe0CTB diff --git a/test_send.jpg b/test_send.jpg index 469e20876937ee695c673f619d39c63f1eca3bb5..ee402f9b2621b63e46ae9e55eca5cde51e8d035e 100644 GIT binary patch delta 21763 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 delta 6355 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 Vo2BC;8T6`B!Wi?{-mO@J|JerCcQyb3 diff --git a/test_send.py b/test_send.py index 3eddd33..fe9e1ad 100644 --- a/test_send.py +++ b/test_send.py @@ -1,43 +1,92 @@ import serial_module import cv2 import time +import threading + +# 全局变量 +frame = None +frame_lock = threading.Lock() +thread_started = False + +# 摄像头读取线程 +def cap_thread(): + global frame, thread_started + cap = cv2.VideoCapture(0) + if not cap.isOpened(): + print("Error: Could not open camera.") + return + + # 标记线程已启动 + thread_started = True + + while True: + time_now = time.time() + ret, temp_frame = cap.read() + if ret: + with frame_lock: + # 在图像上打印时间 + # print(f"Time: {time_now:.2f}") + cv2.putText(temp_frame, f"{time_now:.2f}", (10, 50), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 4) + frame = temp_frame + else: + print("Error: Failed to read frame from camera.") + time.sleep(0.1) # 短暂休眠,避免频繁尝试读取 # 初始化串口 serial_module.init("/dev/ttyUSB0") -cap = cv2.VideoCapture(0) +# 启动摄像头读取线程 +threading.Thread(target=cap_thread, daemon=True).start() -# while True: -for _ in range(100): +# 等待子线程初始化完成 +while not thread_started: + time.sleep(0.1) + +# 主线程处理逻辑 +# for _ in range(100): +while True: time_via = time.time() - ret, frame = cap.read() - frame = cv2.resize(frame, (224,224)) - cv2.imshow('frame',frame) - frame_jpg = cv2.imencode('.jpg', frame, [int(cv2.IMWRITE_JPEG_QUALITY), 50])[1].tobytes() - print(len(frame_jpg)) + + # 检查帧是否可用 + with frame_lock: + if frame is None: + # print('frame is None') + time.sleep(0.1) # 短暂休眠,避免频繁检测 + continue + + # 调整帧大小 + try: + frame_resized = cv2.resize(frame, (224, 224)) + except Exception as e: + print(f"Error resizing frame: {e}") + continue + + # 编码帧为 JPEG 格式 + try: + frame_jpg = cv2.imencode('.jpg', frame_resized, [int(cv2.IMWRITE_JPEG_QUALITY), 50])[1].tobytes() + except Exception as e: + print(f"Error encoding frame: {e}") + continue + + # 打印帧大小并发送数据 + print(f"Frame size: {len(frame_jpg)} bytes") serial_module.send(frame_jpg) - cv2.imwrite('test_send.jpg', frame) - # # 创建一个大小为 3.5K 的二进制数据 - # file_size = int(3.5 * 1024) - # empty_binary_data = bytearray(file_size) - # empty_binary_data = bytes(empty_binary_data) - # # 发送数据 - # serial_module.send(empty_binary_data) + # 保存帧到文件(用于调试) + try: + cv2.imwrite('test_send.jpg', frame_resized) + except Exception as e: + print(f"Error saving frame: {e}") - print(time.time() - time_via) - time.sleep(4) + # 打印时间消耗 + print(f"Time taken: {time.time() - time_via:.3f} seconds") + + # 控制循环频率 + # time.sleep(4) + + # 按 'q' 键退出 if cv2.waitKey(1) & 0xFF == ord('q'): break -# # 发送数据 -# data = b"Your binary data here" # 替换为你的二进制数据 -# serial_module.send(data) - -# # 接收数据 -# result = serial_module.receive() -# if result: -# frame_number, pdu, rssi = result -# print(f"Frame Number: {frame_number}") -# print(f"PDU: {pdu}") -# print(f"RSSI: {rssi}") \ No newline at end of file +# 释放资源 +cv2.destroyAllWindows() \ No newline at end of file From 4749fac7c7b709370e00cb507d4bbce02834d101 Mon Sep 17 00:00:00 2001 From: CaoWangrenbo Date: Wed, 19 Feb 2025 19:57:33 +0800 Subject: [PATCH 2/2] update --- test_send.jpg | Bin 22208 -> 22447 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test_send.jpg b/test_send.jpg index ee402f9b2621b63e46ae9e55eca5cde51e8d035e..b68285c7e931f70438b29b53d5371f74521da126 100644 GIT binary patch delta 22002 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%0Ao^2C6 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 z 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 Men#}7+|ob)*~|BoV*mgE delta 21745 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