计划
重新定义操作者架构
解决基本的启动和关闭问题
思考一些最基础的问题的通用解决方法
如操作者开启,关闭时使用什么样的线程同步方式
消息数据结构的细粒度怎么组织
思考一些问题解决的模式
如Actor间的消息通信模式
实现程序框架
将基本的关系处理好
程序设计要优秀
继续画图,已经有多层次的数据流图,该画程序结构图了
画完程序结构图之后,介绍LVAF的基本信息
画类图就可以了
设计更合理的数据结构和消息通信数据结构
继续画图,设计体系结构容纳构件及构件间关系
设计静态的构件间通信模式(哪些消息,消息结构是什么)
针对设计进行实现
进行数据建模
理论依据
数据流图及导出的程序结构图
分布式的情况
前提
结构就这样
操作者之间传递触发信号即可,尽可能不要传递实体数据,实体数据使用共享数据
数据怎样建模呢?LV上怎么共享呢?网络间怎么共享呢?
用本地数据库么?
查取相关资料!
语音操作者的现有功能并不能包含“自然语言处理”功能
修改
所有机器人的状态显示都显示到Mapdisplayer操作者上,所有输入的都放在Operating Panel上,不要揉在一起
正文
由数据流图映射到程序结构图
。。。需要写很多东西
建立LV项目
建类和操作者
所有名字一个组合单词,首字母大写
注意建立文件夹
设置类继承关系
给框图设置图像
建立每个操作者的核心函数
在新建类成员函数的过程中出现应用程序引用无效错误,需要将包覆盖,考虑将附加的网络操作者和状态操作者包先卸载,重新开始。
在新建的时候制作类图
制作类图的时候,LV类属性中访问范围“库内”,理解为定义友元,即protected method。
EA在类图中怎样定义友元?
看看Handle Error.vi到底怎么用的?
编程过程中尝试对所有函数进行面向对象封装
开启停止操作者试验
只给根操作者发标准停止,两个中层操作者是否关闭?
是
嵌套操作者将“自动停止”设置为是时可以自动关闭
是否可以两层连续自动停止?
是的,不过有一个条件是:中层不能有循环,中层若有循环,则根操作者的按钮无法控制其结束,则中层不能结束,中层虽然不能结束,但是端部操作者不受影响。
是否可以由中层给根部发消息而停止所有操作者?
是,都可以停止,因为根部操作者收到了停止消息,则所有操作者都停止了,因为其他操作者都没有循环
实际情况,每一个操作者都有很多循环,怎样结束其循环呢?除了INOP的循环结束可以使用按钮外,其他的都不能使用按钮,所以建议使用通知器,通过传递通知器,触发另一个操作者核心函数中的事件,将循环结束掉。
建议的两种停止方法
一种是操作者自己的停止核心函数中对通知器置位,进而停止自己的循环,而停止核心函数由主调方调用
一种是主调方通过消息给通知器置位,其实本质上和上一个方法一样,因为停止核心函数也是“标准停止”消息触发的,只不过被库封装了而已。使用这种方法,主调方要想停止一个操作者,需要发送两个消息,一个是通知器消息,一个是标准停止消息
因为我们想要一个操作者自己将自己掐灭,所以采用第一种方法,这样停止就成了一个操作者的一个状态
为什么当前项目停止这么卡?
可能是大部分循环中都有延时函数。
计划
在人机界面中实现启动某种操作者和关闭某种操作者,这样的话可以自发扩展和删除
即首先只打开两个操作者,其他的全部手动打开
扩展的时候可以选择启动哪种构件,取什么名字等等
取消“自动停止”
在人机界面中实现停止所有操作者,因为取消“自动停止”,所以要逐级停止。
怎样在一个操作者出现错误时只停止这一个操作者,而不是停止整个程序,错误处理问题
使用状态操作者库,实现操作者的两个状态:“运行”,“停止自身”?
性能问题
父类设计