• 3.23-重新定义操作者框架


    计划

    • 重新定义操作者架构
      • 解决基本的启动和关闭问题
      • 思考一些最基础的问题的通用解决方法
        • 如操作者开启,关闭时使用什么样的线程同步方式
        • 消息数据结构的细粒度怎么组织
      • 思考一些问题解决的模式
        • Actor间的消息通信模式
    • 实现程序框架
      • 将基本的关系处理好
      • 程序设计要优秀
      • 继续画图,已经有多层次的数据流图,该画程序结构图了
      • 画完程序结构图之后,介绍LVAF的基本信息
        • 画类图就可以了
    • 设计更合理的数据结构和消息通信数据结构
      • 继续画图,设计体系结构容纳构件及构件间关系
      • 设计静态的构件间通信模式(哪些消息,消息结构是什么)
    • 针对设计进行实现
      • 进行数据建模

    理论依据

    • 数据流图及导出的程序结构图
    • 分布式的情况

    前提

    • 结构就这样
    • 操作者之间传递触发信号即可,尽可能不要传递实体数据,实体数据使用共享数据
    • 数据怎样建模呢?LV上怎么共享呢?网络间怎么共享呢?
      • 用本地数据库么?
    • 查取相关资料!
    • 语音操作者的现有功能并不能包含“自然语言处理”功能

    修改

    • 所有机器人的状态显示都显示到Mapdisplayer操作者上,所有输入的都放在Operating Panel上,不要揉在一起

    正文

    由数据流图映射到程序结构图

    。。。需要写很多东西

    建立LV项目

    • 建类和操作者
      • 所有名字一个组合单词,首字母大写
      • 注意建立文件夹
      • 设置类继承关系
      • 给框图设置图像
    • 建立每个操作者的核心函数
    • 在新建类成员函数的过程中出现应用程序引用无效错误,需要将包覆盖,考虑将附加的网络操作者和状态操作者包先卸载,重新开始。
    • 在新建的时候制作类图
      • 制作类图的时候,LV类属性中访问范围“库内”,理解为定义友元,即protected method
      • EA在类图中怎样定义友元?
    • 看看Handle Error.vi到底怎么用的?

    编程过程中尝试对所有函数进行面向对象封装

    开启停止操作者试验

    • 只给根操作者发标准停止,两个中层操作者是否关闭?
      • 嵌套操作者将“自动停止”设置为是时可以自动关闭
    • 是否可以两层连续自动停止?
      • 是的,不过有一个条件是:中层不能有循环,中层若有循环,则根操作者的按钮无法控制其结束,则中层不能结束,中层虽然不能结束,但是端部操作者不受影响。
    • 是否可以由中层给根部发消息而停止所有操作者?
      • 是,都可以停止,因为根部操作者收到了停止消息,则所有操作者都停止了,因为其他操作者都没有循环
    • 实际情况,每一个操作者都有很多循环,怎样结束其循环呢?除了INOP的循环结束可以使用按钮外,其他的都不能使用按钮,所以建议使用通知器,通过传递通知器,触发另一个操作者核心函数中的事件,将循环结束掉。
    • 建议的两种停止方法
      • 一种是操作者自己的停止核心函数中对通知器置位,进而停止自己的循环,而停止核心函数由主调方调用
      • 一种是主调方通过消息给通知器置位,其实本质上和上一个方法一样,因为停止核心函数也是“标准停止”消息触发的,只不过被库封装了而已。使用这种方法,主调方要想停止一个操作者,需要发送两个消息,一个是通知器消息,一个是标准停止消息
      • 因为我们想要一个操作者自己将自己掐灭,所以采用第一种方法,这样停止就成了一个操作者的一个状态
    • 为什么当前项目停止这么卡?
      • 可能是大部分循环中都有延时函数。

    计划

    • 在人机界面中实现启动某种操作者和关闭某种操作者,这样的话可以自发扩展和删除
      • 即首先只打开两个操作者,其他的全部手动打开
      • 扩展的时候可以选择启动哪种构件,取什么名字等等
      • 取消“自动停止”
    • 在人机界面中实现停止所有操作者,因为取消“自动停止”,所以要逐级停止。
    • 怎样在一个操作者出现错误时只停止这一个操作者,而不是停止整个程序,错误处理问题
    • 使用状态操作者库,实现操作者的两个状态:“运行”,“停止自身”?
    • 性能问题

    父类设计

    •  

  • 相关阅读:
    预处理器宏指令(Macro)
    汇编语言中macro的用法
    USB设备的VID与PID
    前端工具 | JS编译器Monaco使用教程
    vue + ts中的shimsvue.d.ts文件的作用,在ts中引入vueecharts等vue文件 TypeScript 导入 JSON Module resolveJsonModule
    Jenkins自动打包并部署到远程服务器
    如何获取设备的VID,PID?
    TypeScript装饰器(decorators)
    MACRO指令
    IE6左右边框断线现象
  • 原文地址:https://www.cnblogs.com/lizhensheng/p/11241989.html
Copyright © 2020-2023  润新知