本帖最后由 izilzty 于 2020-11-22 15:15 编辑
这里是几张显示的效果图
滚动效果:

单独频谱:
频谱+时间:
设置页面:

这个fb2k插件是配合型号为M202MD28A的VFD显示屏使用的,显示屏本身使用的是USBHID接口,可以很方便插到电脑上,一根USB线和一个PH2.0间距的6P端子就可以了。不过缺点还是有的,影响最大的就是屏的升压电路在亮度低的时候噪音有些大,不过总体来来说还好。
刚开始这个做插件主要的目的还是学习,因为我本身对C++不太了解,想借着机会稍微熟悉一下(程序有些地方弄得看起来还是比较乱),不过后来发现如果要改的话应该可以很方便地改成串口输出,因为fb2k基本每个播放事件都提供相应的回调,然后把需要的数据从串口输出就可以。
关于新工程的创建和一些注意事项后面有时间再整理吧,总的来说就是要把sdk的依赖都添加好,找不到的include和lib文件也要加到工程设置里就可以了,整理完以后会和源码放到一起,现在如果要在基础上自己修改的话直接用源码里创好的工程就欧克。
频谱的样式可以通过修改播放和停止时的文字和频谱的长度来更改,这里给出上面动态图里的样式设置,虽然说频谱只能从最左边开始,不是很灵活,但是应该是总比没有好。复制时复制【】括号内的,可能在开头或结尾有空格,也要全部复制上。如果要恢复到默认的显示,点页面左下角的Reset page然后点Apply应用就可以了。
单独谱 样式:
Spectrum-> Len X:【20】
Spectrum-> 勾选 Enable on play 和 Enable on stop
频谱+时间 样式:
On play -> Line2 formatting:【 $padcut_right($ifgreater($div(%playback_time_seconds%,60),99,99,$div(%playback_time_seconds%,60)),2,0):$ifgreater($div(%playback_time_seconds%,60),99,++,$padcut_right($sub(%playback_time_seconds%,$mul($div(%playback_time_seconds%,60),60)),2,0))】
On stop -> Line2 string:【 --:--】
Spectrum-> Len X:【14】
Spectrum-> 勾选 Enable on play 和 Enable on stop
插件dll文件、源码、屏幕的数据表在这里,数据表的第24页有6P端子的定义,靠近绿色保险的是1脚。
蓝奏云 https://izilzty.lanzoux.com/b00o1ub4b 密码:1x25
百度云 https://pan.baidu.com/s/1r6T7FNPy0gMKQ2NPKy_wLg 提取码: qrgf
GitHub https://github.com/izilzty/foo_usbhid_m202md28a
使用说明
1. 插件安装请下载 foo_usbhid_m202md28a.dll 文件,然后将此文件放入 foobar2000 安装目录的 components 文件夹内即可。 如需自定义设置可以在 设置页面 -> Display -> HID VFD Display 内进行修改。
2. 首次使用因为此型号屏幕的自定义字体需要先写入内置的闪存后才可以使用,为了不浪费闪存的写入寿命,在屏幕首次使用时需要手动写入一次自定义字体,之后只要不更换屏幕,都不需要再次此进行此操作了。如果要进行此操作,请执行以下步骤: - 按 Ctrl+P 打开 foobar2000 的设置页面
- 转到 Display -> HID VFD Display
- 点击页面右下角 FROM setting 内的 WRITE 按钮
- 待屏幕显示“FROM WRITE SUCCESS”后,重新启动 foobar2000
如果需要清除自定义字体,则可以按照相同的步骤,使用 FROM setting 内的 RESET 按钮擦除自定义字体并将屏幕恢复到出厂设置。
3. 自定义显示内容可自定义显示内容的状态有四种,分别为播放时(On play)、加载时(On load)、停止时(On stop)、音量更改时(On volume change),其中播放时(On play)的显示内容支持foobar2000内置的格式化功能,可以自定义显示标题等信息,音量更改时(On volume change)的字符串为音量数字之前的文字,其余两项为普通字符串,留空则不更改上次显示内容。 关于foobar2000格式化功能的语法,详见 设置页面 -> Display -> Default User Interface 下方的 Syntax help。
4. 自定义频谱显示
Enable on play [] [在播放时显示频谱]
Enable on stop [] [在停止时显示频谱]
FFT speed [FFT计算间隔]
Draw speed [频谱绘制间隔]
Len X [频谱横向长度,用于配合格式化字符混合显示信息和频谱]
Fake spectrum [] [在播放时显示假频谱动画]
5. 自定义电源控制可自定义电源的状态有四种,分别为:播放时(On play)、暂停时(On pause)、停止时(On stop)、退出时(On exit),每种状态的电源控制可通过下拉列表选择。 Dim 25 [ 亮度 25% ]
Dim 50 [ 亮度 50% ]
Dim 75 [ 亮度 75% ]
Dim 100 [ 亮度 100% ]
Dim OFF [ 显示关闭,但电源不关闭,下次启动速度快 ]
Power OFF [ 电源关闭,下次启动速度慢,会有灯丝加热过程 ]
6. 自定义滚动和音量显示延时可自定义的延时有四种,分别为:音量显示时间(Display hold)、第一行文字从右向左渐入的速度(Fadein speed)、第一行文字渐入完成后等待时间(Scroll wait)、第一行文字循环滚动速度(Scroll speed)。 Display hold [ 音量显示时间,设置为0则在音量更改时不显示音量 ]
Fadein speed [ 文字从右向左渐入的速度,设置为0则直接显示在左侧 ]
Scroll wait [ 文字渐入完成后到开始滚动之间的延时,设置为0则直接开始滚动 ]
Scroll speed [ 文字循环滚动速度,设置为0则在使用默认的300ms滚动速度完成一次滚动后停止 ]
7. HID设备VID PID设置保持默认即可,无特殊情况无需更改,如果存在多个相同 VID PID 的屏幕则会使用找到的第一个屏幕,无法手动指定。
8. 恢复默认设置点击页面下方的 Reset page 按钮,再点击 Apply 按钮,即可恢复设置到默认值,屏幕上的闪存不会被复位,所以无需重新写入 FROM。
9. 其他问题由于屏幕设计的问题,在 USB 接收数据时可能会停止扫描,这就会造成某些像素在非常短的时间内闪烁一下,亮度越低越明显,但在 100% 亮度下基本看不出来。所以解决方法有两种:一是降低文字滚动的速度,二是提高屏幕亮度。
因为屏幕内的双字节字符代码页是分开的,所以为了显示中日韩混合字符,可能会在一次显示数据内多次切换代码页,这就造成了可能在某些无关的字符位置会闪烁过一些乱码(只是偶尔会出现,貌似和外界干扰也有关系,闪烁一下会自动消失,也不会影响现有的字符,原因不明。 猜测可能和上面所说的停止扫描一样是 USB 设计的问题?因为这个屏幕设计是类似收银机上使用的,所以不会有频繁的切换代码页也请求。),不过速度非常快,不仔细看看不太出来,也无法 100% 复现。
还有就是屏幕在特定的亮度下升压电路的噪音可能比较明显,可以通过更改亮度来缓解。
编译说明
如果 Visual Studio 版本为 2019,除了基础的“使用C++的桌面开发”外,还需要安装 VS 2017 (v141) 支持,或手动更改工程目标版本,但是会有报错,需要解决。
安装 VS 2017 (v141) 支持步骤如下:
运行 Visual Studio 安装程序,在单个组件里搜索 141,然后分别选中
C++ ATL v141 生成工具 (x86 & x64)
C++ MFC v141 生成工具 (x86 & x64)
MSVC v141 - VS 2017 C++ x64/x86 生成工具(v14.16)
对 VS 2017 (v141)工具的 C++ Windows XP 支持
在右侧应该还会自动选中一个 Windows 通用 CRT SDK
最后点击修改即可
1. 发布版本编译- 使用 git clone 或直接下载压缩包,将文件下载到本地
- 使用 Visual Studio 打开 foo_usbhid_m202md28a.sln
- 将解决方案配置切换为 Releases
- 生成 -> 生成解决方案(Ctrl+Shift+B)即可,生成的 dll 文件在 foo_usbhid_m202md28a.sln 目录下的 Releases 文件夹内
2. 调试- 使用 git clone 或直接下载压缩包,将文件下载到本地
- 使用 Visual Studio 打开 foo_usbhid_m202md28a.sln
- 将解决方案配置切换为 Debug
- 调试 -> 开始调试(F5)即可。开始调试后,会自动启动工程文件夹内的 foobar2000 用于调试,不影响电脑上安装的现有版本
|