os_time.c

void  OSTimeTick (void):
    处理System Tick,在System Tick中断函数中调用。
    调用钩子函数,根据 OS_CFG_ISR_POST_DEFERRED_EN给OSTickTask发出Sem,根据 OS_CFG_SCHED_ROUND_ROBIN_EN调用时间片轮询,根据 OS_CFG_TMR_EN当 OSTmrUpdateCtr==0时给OSTmrTask发出Sem。

OS_TICK  OSTimeGet (OS_ERR  *p_err):
    获取 OSTickCtr的值。系统没有用到。

void  OSTimeSet (OS_TICK   ticks,
                 OS_ERR   *p_err):
    设置OSTickCtr的值。系统没有用到。

void  OSTimeDly (OS_TICK   dly,
                 OS_OPT    opt,
                 OS_ERR   *p_err):
    先进行参数检验,更新 OSTCBCurPtr->TaskState = OS_TASK_STATE_DLY,将OSTCBCurPtr插入到TickList中,如果出现错误 OS_CRITICAL_EXIT_NO_SCHED();,将OSTCBCurPtr从RdyList中移除,启动调度。

void  OSTimeDlyHMSM (CPU_INT16U   hours,
                     CPU_INT16U   minutes,
                     CPU_INT16U   seconds,
                     CPU_INT32U   milli,
                     OS_OPT       opt,
                     OS_ERR      *p_err):
    和OSTimeDly ()相同,只是通过参数计算得到dly,在开发中感觉还是OSTimeDly 好用。


void  OSTimeDlyResume (OS_TCB  *p_tcb,
                       OS_ERR  *p_err):
    恢复调用了 OSTimeDly()或 OSTimeDlyHMSM()的任务。
     判断p_tcb->TaskState:
    如果OS_TASK_STATE_DLY: 更新p_tcb->TaskState,将p_tcb从TickList中删除,将p_tcb添加的ready_list中。
    如果 OS_TASK_STATE_DLY_SUSPENDED 更新p_tcb->TaskState,将p_tcb从TickList中删除。
    其他状态不能Resume,返回对应的错误码。
使用QTimer对象代替QBasicTimer对象,修改程序class MyWindow(QWidget): def init(self): super().init() self.thread_list = [] self.color_photo_dir = os.path.join(os.getcwd(), "color_photos") self.depth_photo_dir = os.path.join(os.getcwd(), "depth_photos") self.image_thread = None self.saved_color_photos = 0 # 定义 saved_color_photos 属性 self.saved_depth_photos = 0 # 定义 saved_depth_photos 属性 self.init_ui() def init_ui(self): self.ui = uic.loadUi("C:/Users/wyt/Desktop/D405界面/intelrealsense1.ui") self.open_btn = self.ui.pushButton self.color_image_chose_btn = self.ui.pushButton_3 self.depth_image_chose_btn = self.ui.pushButton_4 self.open_btn.clicked.connect(self.open) self.color_image_chose_btn.clicked.connect(lambda: self.chose_dir(self.ui.lineEdit, "color")) self.depth_image_chose_btn.clicked.connect(lambda: self.chose_dir(self.ui.lineEdit_2, "depth")) def open(self): self.profile = self.pipeline.start(self.config) self.is_camera_opened = True self.label.setText('相机已打开') self.label.setStyleSheet('color:green') self.open_btn.setEnabled(False) self.close_btn.setEnabled(True) self.image_thread = ImageThread(self.pipeline, self.color_label, self.depth_label, self.interval, self.color_photo_dir, self.depth_photo_dir, self._dgl) self.image_thread.saved_color_photos_signal.connect(self.update_saved_color_photos_label) self.image_thread.saved_depth_photos_signal.connect(self.update_saved_depth_photos_label) self.image_thread.start() def chose_dir(self, line_edit, button_type): my_thread = MyThread(line_edit, button_type) my_thread.finished_signal.connect(self.update_line_edit) self.thread_list.append(my_thread) my_thread.start()
05-26
以下是使用QTimer对象代替QBasicTimer对象的修改后的代码: ```python from PyQt5.QtCore import QTimer class MyWindow(QWidget): def __init__(self): super().__init__() self.thread_list = [] self.color_photo_dir = os.path.join(os.getcwd(), "color_photos") self.depth_photo_dir = os.path.join(os.getcwd(), "depth_photos") self.image_thread = None self.saved_color_photos = 0 self.saved_depth_photos = 0 self.init_ui() def init_ui(self): self.ui = uic.loadUi("C:/Users/wyt/Desktop/D405界面/intelrealsense1.ui") self.open_btn = self.ui.pushButton self.color_image_chose_btn = self.ui.pushButton_3 self.depth_image_chose_btn = self.ui.pushButton_4 self.open_btn.clicked.connect(self.open) self.color_image_chose_btn.clicked.connect(lambda: self.chose_dir(self.ui.lineEdit, "color")) self.depth_image_chose_btn.clicked.connect(lambda: self.chose_dir(self.ui.lineEdit_2, "depth")) def open(self): self.profile = self.pipeline.start(self.config) self.is_camera_opened = True self.label.setText('相机已打开') self.label.setStyleSheet('color:green') self.open_btn.setEnabled(False) self.close_btn.setEnabled(True) self.image_thread = ImageThread(self.pipeline, self.color_label, self.depth_label, self.interval, self.color_photo_dir, self.depth_photo_dir, self._dgl) self.image_thread.saved_color_photos_signal.connect(self.update_saved_color_photos_label) self.image_thread.saved_depth_photos_signal.connect(self.update_saved_depth_photos_label) self.image_thread.start() self.timer = QTimer(self) # 创建QTimer对象 self.timer.timeout.connect(self.update) # 连接timeout信号与槽函数 self.timer.start(100) # 启动定时器,间隔为100ms def update(self): # 检查所有的线程是否已完成,并从线程列表中移除已完成的线程 for thread in self.thread_list: if not thread.isRunning(): self.thread_list.remove(thread) def chose_dir(self, line_edit, button_type): my_thread = MyThread(line_edit, button_type) my_thread.finished_signal.connect(self.update_line_edit) self.thread_list.append(my_thread) my_thread.start() def update_saved_color_photos_label(self, count): self.saved_color_photos = count self.ui.label_5.setText(str(self.saved_color_photos)) def update_saved_depth_photos_label(self, count): self.saved_depth_photos = count self.ui.label_6.setText(str(self.saved_depth_photos)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值