《电子制作站》广告牌设计,透彻理解电子元器件仿真模型开发
嗨,各位电子迷们!欢迎来到本期实战分享。最近收到不少粉丝反馈,大家对元件模型开发兴趣浓厚,但遇到复杂项目时仍感棘手,问题多集中在基础文档只覆盖了简单案例(比如灯泡)。我们计划逐步推出更高级的元件设计教程。放心,关于VisualCom软件平台的操作细节,不会像开发文档那样冗长,毕竟你们已经具备一定基础了。
今天,我们来实战打造一个《电子制作站》创意广告牌,下图是它的炫酷效果。
这么高端的广告牌怎么设计?其实原理超简单:熄灭时,用黑色矩形覆盖上次显示;点亮时,直接贴上文字即可(也就是说,黑色矩形每次必贴,文字则根据状态灵活控制),是不是超直观?好,我们立马动手!
VisualCom软件安装目录的sample文件夹里,找到“电子制作站广告牌.dsn”工程文件,打开后效果如下:
为了让大家快速掌握VisualCom自带元件的创作精髓,所有例程都预置了数据元件(仿真状态直接可见效果),并附上制作所需的图形文件。上图右侧是库中拉出的元件(带名称和编号),左侧最上方则是创建元件时的参考效果(类似右侧元件)。
回顾一下思路:熄灭需覆盖显示,所以先创建矩形图形。为保持尺寸一致,可从参考图形复制(或直接选用),矩形颜色随意,绘制时可调。同时,点亮状态需文字图形,同样从参考复制(或直接创建),文字颜色和内容也非固定,绘制时自由定制,关键是有“文字”对象就行。
好,现在正式创建元件。全选左侧最上方图形,右击选“创建元件”,如下图:
弹出“创建元件”对话框后,关键设置有两处:一是仿真模型文件名“LED_DZZZZCN.DLL”,务必记牢;二是为支持自定义颜色,添加“背景”和“文字”颜色属性,默认值设为黑色(000000)和绿色(00FF00),后续添加元件时可看到,模型开发中也能读取这些值。
点击“确定”,新元件诞生!在“选择元件”对话框中可见,效果如下:
接下来创建关联图形。选左侧中间黑色矩形,右击选“创建图形”,如下图:
在“创建图形”对话框中,找到刚建的元件,图形索引设为“1”,点击“确认”,如下图:
同理,将左侧下方文字(绿色dzzzzcn)创建图形,索引设为2,步骤省略。
元件和图形工具就绪后,在“选择元件”对话框中找到元件,双击添加到原理图(注意:务必先创建图形再添加元件!有些粉丝先添加元件后建图形,导致显示异常)。此时“自定义”组出现新增属性,如下图,若设了“描述”文字,也会显示(本例未设)。
为顺利仿真,需预置数据,如下图,约定数据最低位0熄1亮。当然,模型自开发时,你可自定义规则,只需在代码中处理。
原理图符号搞定,接下来仿真模型开发。新建项目过程略,参考《仿真模型开发手册.pdf》,直接看头文件,如下图:
类CLED_DZZZZCN中声明了4变量:m_Status和m_RefreshCtrl类似灯泡元件,分别存状态和控制刷新;为实现颜色自定义,加了FILLSTYLE型变量bgfs(填充样式)和FONTSTYLE型变量fs(文字样式),component变量及以下代码同灯泡模型。
接着看源文件(摘主要代码)。构造函数初始化如下图,细节略。
进入仿真后,先调Initialize函数:保存ICOMPONENT指针到component,后续操作都靠它。然后通过GetColorFiledById取ID100和101的颜色值(自定义属性ID从100起,见开发手册)。多边形图形可改样式和颜色,文字图形可改文字和颜色,GetTCHARFromChar用于类型转换。
Simulate函数中,用GetProData取预置数据,据最低位设m_Status,更新m_RefreshCtrl。注意:数据处理后返回TRUE,预置数据窗口才会下移。
另,注释行提示:开发中可用SetOutputInfo打印数据辅助调试,单步仿真时,“输出”窗口“信息”栏会显示类似信息,如下图:
若代码用sprintf编译报错“C4996 &39;sprintf&39;: This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.”,可在工程属性“C/C++”->“预处理器”加宏“_CRT_SECURE_NO_WARNINGS”。
回到正题。Animate函数中,在缓存内绘图(介于BeginCache和EndCache之间):先取矩形(图形索引1),调GetSymbolOffset取偏移值(因默认参考右下角),将此坐标随DrawSymbol写入可定位到左上角,然后移动。也可直接以(0,0)参考调整(左上移用负值),调用DrawSymbol时传bgfs改填充样式。文字绘制类似,传fs改文字样式,细节略。
Plot函数简单,调Animate刷新即可,如下图。注意:返回TRUE视图才刷新。
编译注意事项见开发文档,将生成的LED_DZZZZCN.DLL拷到安装目录model文件夹。正常时,进入仿真后“输出”窗口“状态”页会显示模型加载成功提示,退出仿真也有卸载信息,类似下图:
本案例源码已上传Github博客链接
(位于VisualCom仓库的Demo文件夹)
相关问答
我吧别人广告牌靠面一棍坚棍,你说能能说给够少钱,广告牌大...
如果你用棍子弄倒别人的广告牌,是否要赔钱主要取决于广告牌损坏的程度以及你的行为是否存在过错。具体情况如下:1.如果广告牌只是部分损坏,且你并非故意破坏...




