提交 e5554b65 编写于 作者: D dev@win10Host.com

更新文档

上级 2019aaeb
此差异已折叠。
此差异已折叠。
......@@ -208,3 +208,209 @@ E:\build\bin> modules\transform_fft.exe --information [回车]
}
```
则表示没有问题。
## 3 设计师界面
taskBus 的工作原理是使用设计师 taskBusPlatform.exe 设计工程,连接各个模块的执行文件。而后,保存工程为.tbj(json)格式,并在设计师内运行。同时,tbj文件也可以通过命令行工具subtask_warpper.exe封装后,脱离界面运行。本节介绍设计师界面的基本情况。
###3.1 基本框架
当您下载或者编译了特定的发行版本后,会获得一个含有多个可执行文件、配置文件的文件夹。以发行版 taskbus_win64_20220419_Qt6 为例,这个文件夹的结构大致如下:
```txt
├─bin 设计师可执行文件(主程序)
├─doc 文档文件夹
├─examples 工程范例文件夹
├─modules 模块文件夹
│ ├─plutosdr ADALM PlutoSDR模块
│ ├─usrp Ettus USRP UHD模块
│ └─warpper_scripts 用于脚本(python,node.js)的封装器模块
└─templates 模块模板
├─cpp 纯C++模板
├─csharp C#模板
├─FMDem C语言FM解调器(二次封装,需要warpper_stdio)
├─matlab Matlab语言
├─mfc MFC框架
├─nodejs node.js+warpper_scripts
├─python python 3脚本+warpper_scripts
└─python2 python 2脚本+warpper_scripts
```
####3.1.1 自带模块一览表
在模块modules文件夹里,是编译好的各个模块,以发行版 taskbus_win64_20220419_Qt6 为例,主要包括:
|模块可执行文件夹|模块功能|备注|
|--|--|--|--|
|filter_fir.exe|Fir滤波器|时域Fir滤波|
|mod_fm.exe|调频FM广播调制器|可产生广播|
|mod_fm_dem.exe|调频FM广播解调器|可还原音乐|
|network_p2p.exe|分布式点对点TCP模块|可以把两台计算机联动起来|
|resample_pqfraction.exe|分数倍重采样|与Matlab resample(p,q)类似|
|sink_file.exe|文件信宿|可把数据保存为文本或者二进制|
|sink_plots.exe|画图信宿|包括简单的1D,2D,时频图|
|sink_plutosdr.exe|PlutoSDR信宿|发行版中在独立的文件夹,避免libiio和usrp的冲突|
|sink_soundcard.exe|声卡信宿|可播放声音|
|sink_SQL.exe|SQL信宿|用于执行SQL,也可以用warpper_stdio+命令行数据库客户端代替|
|source_file.exe|文件信源|可以按照灵活的方式批量读取文件|
|source_plutosdr.exe|PlutoSDR信源||
|source_soundcard.exe|声卡信源|可以进行录音并把波形带入平台|
|transform_fft.exe|FFT变换|使用libfftw|
|uhd_usrp_continous.exe|UHD连续吞吐|不带时戳的USRP吞吐|
|uhd_usrp_io.exe|UHD突发/连续吞吐|带时戳的USRP吞吐,可获取每份数据的时戳,并为每份发射数据准备预告的时戳|
|warpper_scripts.exe|脚本包装器|用于包装python,node.js等脚本制作的模块。相关例子见templates中python文件夹|
|warpper_stdio.exe|标准命令行包装器|用于包装简单的基本命令行程序,构成1输入(Stdin),两输出(stdout, stderr)模块。见examples里的usrp_fm_warpper.tbj|
#### 3.1.2 模块加载历史记录
一旦模块加载成功,会记录在default_mods.text中。其可能的内容如下:
```text
../modules/sink_soundcard.exe
../modules/source_file.exe
../modules/usrp/uhd_usrp_continous.exe
../templates/python2/example_python2.exe
../templates/nodejs/example_nodejs.exe
../modules/sink_plots.exe
../modules/source_soundcard.exe
../modules/sink_SQL.exe
../modules/mod_fm_dem.exe
../modules/filter_fir.exe
../modules/plutosdr/source_plutosdr.exe
../modules/mod_fm.exe
../modules/plutosdr/sink_plutosdr.exe
../modules/network_p2p.exe
../modules/usrp/uhd_usrp_io.exe
../modules/transform_fft.exe
../modules/resample_pqfraction.exe
../templates/python/example_python.exe
../examples/voice_spec.exe
../modules/warpper_stdio.exe
../modules/sink_file.exe
```
对封装的子项目,在对应的子项目名.text里,也会设置加载的文件名。如:
[examples/voice_spec.text](../examples/voice_spec.text)
###3.2 界面元素
双击bin/taskBusPlatform.exe 启动程序,主要界面元素如下:
![mainGUI](handbook/3.MainGUI.jpg)
####3.2.1 主工具栏按钮
各个按钮的意义如下:
|图标|文字|作用|行为|
|--|--|--|--|
|![载入模块](handbook/buttons/load_module.png)|载入模块|载入一个符合taskBus接口定义标准的模块(JSON描述)|弹出对话框,选择EXE文件后,会试图用 --information 开关启动程序。如果失败,则试图寻找 程序文件名.json文件。如果失败,则不会加载。|
|![新建工程](handbook/buttons/new_project.png)|新建工程|新建空白工程||
|![打开工程](handbook/buttons/open_project.png)|打开工程|打开存在的工程|如果工程对应的某个模块没有预先加载,则打开工程后看不到对应的模块图标。|
|![保存工程](handbook/buttons/save_project.png)|保存工程|保存目前的修改||
|![执行](handbook/buttons/start_project.png)|执行|执行工程|会依次启动各个进程,并吞吐stdio数据|
|![停止执行](handbook/buttons/ddimg_exit.png)|停止执行|中止执行当前工程|会发quit()指令到所有进程,并等待。超时后会强制终止相关进程。|
|![隐藏](handbook/buttons/ticon2.png)|隐藏|隐藏主界面|最小化到任务栏,变成图标。|
#### 3.2.2 “编辑”工具栏按钮
各个按钮的意义如下:
|图标|文字|作用|快捷键|行为|
|--|--|--|--|--|
|![放大](handbook/buttons/zoomIn.png)|放大|Ctrl+‘=’|放大视图。|点击按钮后,视图被放大。|
|![缩小](handbook/buttons/zoomOut.png)|缩小|Ctrl+‘-’|缩小视图。|点击按钮后,视图被缩小。|
|![还原](handbook/buttons/038-2.png)|还原||还原视图|点击按钮后,视图比例重新回到100%。|
|![复制](handbook/buttons/Copy.png)|复制|Ctrl+‘c’|复制元素。|点击按钮后,当前被选中模块的信息会被复制到剪贴板。|
|![剪切](handbook/buttons/Cut-2.png)|复制|Ctrl+‘x’|剪切元素。|点击按钮后,当前被选中模块被删除,信息会被复制到剪贴板。|
|![删除](handbook/buttons/delete_node.png)|删除|Del|删除元素。|点击按钮后,当前元素会被删除。|
|![粘贴](handbook/buttons/Paste.png)|粘贴|Ctrl+‘v’|粘贴元素。|点击按钮后,当前剪贴板里的元素会被插入到工程里。|
|![撤销](handbook/buttons/undo-1.png)|粘贴|Ctrl+‘z’|撤销操作。|点击按钮后,会不断撤销操作。|
|![重做](handbook/buttons/Redo.png)|重做|Ctrl+Shift+‘z’|重做操作。|点击按钮后,重做刚刚被撤销的操作。|
|![断开](handbook/buttons/D. line.png)|断开管脚|Ctrl+‘d’|断开选中的管脚。|点击按钮后,被鼠标选中的管脚会被断开。|
|![上移](handbook/buttons/up.png)|向上一格|Ctrl+‘上方向’|管脚布局向上移动一格。|点击按钮后,被选中的管脚会向上移动。但由于管脚布局的限制,当无法上移时,请下移其他管脚达到相同作用。|
|![下移](handbook/buttons/down.png)|向下一格|Ctrl+‘下方向’|管脚布局向下移动一格。|点击按钮后,被选中的管脚会向下移动。但由于管脚布局的限制,当无法下移时,请上移其他管脚达到相同作用。|
|![翻转](handbook/buttons/side.png)|翻转位置|Ctrl+‘左/右’|管脚移动到绘图块的另一边。|点击按钮后,被选中的管脚会翻转到另一边。|
|![调试启动](handbook/buttons/ddimg_debug.png)|启动调试||启动对选中模块的调试。|相应模块的输入、输出会被记录在debug文件夹中,这样允许离线调试独立的模块。|
|![调试终止](handbook/buttons/ddimg_debugoff.png)|停止调试||停止对选中模块的调试。|||
|![提高优先级](handbook/buttons/Process busy.png)|提高优先级||提高选中模块的进程优先级(nice)。|对实时性要求高的模块请使用高的优先级。在Linux下,优先级越高,数字越小。|
|![降低优先级](handbook/buttons/Process idle.png)|降低优先级||降低选中模块的进程优先级(nice)。|对实时性要求高的模块请使用高的优先级。|
### 3.3 主进程优先级
设置主进程的配置文件taskBusPlatform.exe.ini,可配置优先级。
```ini
[settings]
nice=2
```
**注意:相同的工程,切换平台(Linux<->Windows)后,要注意优先级的取值变化。**
## 4. 从范例工程开始
### 4.1 打开范例工程
点击“打开”按钮
|图标|文字|作用|行为|
|--|--|--|--|
|![打开工程](handbook/buttons/open_project.png)|打开工程|打开存在的工程|如果工程对应的某个模块没有预先加载,则打开工程后看不到对应的模块图标。|
加载现有的工程。以 [examples/soundcard.tbj](../examples/soundcard.tbj)为例,打开后,将看到如下界面:
![Example](handbook/4.Example.jpg)
### 4.2 配置范例工程
#### 4.2.1 配置优先级
可以试着使用按钮:
|图标|文字|作用|快捷键|行为|
|--|--|--|--|--|
|![提高优先级](handbook/buttons/Process busy.png)|提高优先级||提高选中模块的进程优先级(nice)。|对实时性要求高的模块请使用高的优先级。在Linux下,优先级越高,数字越小。|
|![降低优先级](handbook/buttons/Process idle.png)|降低优先级||降低选中模块的进程优先级(nice)。|对实时性要求高的模块请使用高的优先级。|
调整各个模块优先级,直到满足平台所需。Linux下,0为正常,<1为高优先级>0为低优先级。Windows下,0为最低,5为最高。
- 调整前,要选中模块
- 这样的调整操作在切换Windows/Linux平台时尤为重要。因为这两个平台的优先级算数范围不同,且大小相反。
#### 4.2.2 配置模块参数表
可以查看,并试着修改模块参数表。
![Example](handbook/5.Props.jpg)
- 双击彩色的“实例值”,进入编辑状态
- 修改相应的数值。所有被修改的值,都会以命令行的参数方式传给进程。
### 4.3 拖入模块
双击或者拖拽模块,以便引入新的模块。我们可以加入采样率变换模块 resample_pqfraction模块。而后,配置其属性。
![6.NewMod.jpg](handbook/6.NewMod.jpg)
### 4.4 修改连线
选中管脚,右键单击弹出菜单,或者直接按工具栏按钮
|图标|文字|作用|快捷键|行为|
|--|--|--|--|--|
|![断开](handbook/buttons/D. line.png)|断开管脚|Ctrl+‘d’|断开选中的管脚。|点击按钮后,被鼠标选中的管脚会被断开。|
删除连线。
![7.DelLine.jpg](handbook/7.DelLine.jpg)
删除后,工程类似:
![8.AfterDel.jpg](handbook/8.AfterDel.jpg)
而后,分别单击下图中的管脚,完成连接,类似:
![9.AfterConn.jpg](handbook/9.AfterConn.jpg)
### 4.5 优化布局
通过拖动方块位置,并利用按钮
|图标|文字|作用|快捷键|行为|
|--|--|--|--|--|
|![上移](handbook/buttons/up.png)|向上一格|Ctrl+‘上方向’|管脚布局向上移动一格。|点击按钮后,被选中的管脚会向上移动。但由于管脚布局的限制,当无法上移时,请下移其他管脚达到相同作用。|
|![下移](handbook/buttons/down.png)|向下一格|Ctrl+‘下方向’|管脚布局向下移动一格。|点击按钮后,被选中的管脚会向下移动。但由于管脚布局的限制,当无法下移时,请上移其他管脚达到相同作用。|
|![翻转](handbook/buttons/side.png)|翻转位置|Ctrl+‘左/右’|管脚移动到绘图块的另一边。|点击按钮后,被选中的管脚会翻转到另一边。|
调整布局,调整后,布局如下:
![a.AfterFormat.jpg](handbook/a.AfterFormat.jpg)
### 4.6 运行工程
点击按钮
|图标|文字|作用|行为|
|--|--|--|--|
|![执行](handbook/buttons/start_project.png)|执行|执行工程|会依次启动各个进程,并吞吐stdio数据|
运行工程,并尝试配置声音来源,可以看到实时语音或者音乐的频谱。
![b.Run.jpg](handbook/b.Run.jpg)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册