OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4705|回复: 0

什么是BlackBox以及它如何使用。

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2018-3-8
在线时间
1 小时
发表于 2018-3-8 17:34:48 | 显示全部楼层 |阅读模式
微控制器,无论在运输中、工业中、医药中,以及日常生活中无处不在。
最早电子组件“焊接很多”,感谢现在编程可以取代‘焊接时代’。昨天什么都需要焊接,今天重新编程就可以了。一个简单的多谐振荡器,在微控制器上实现的另一个蜂鸣器项目,在许多方面将比在基本电子组件上组装的成本要低。因此我认为这种趋势将越来越广泛。
微控制器上是非复杂项目的部件,例如灯开关或水平传感器,一旦被调试,就不再需要任何额外的设置。但是,大部分项目还涉及到与外界的互动。例如,恒温器或定时器需要管理,调整和控制设定值的能力。大多数情况下,这个功能是通过在项目中增加控制机制和设备来实现的。所以,最简单的项目开始超过屏幕,按钮,编码器。微控制器的部件已经资源有限,花费在用户交互的整个基础设施上。因此,携带整个有用的功能核心,微控制器和电源键,占据了物理量的5-10%。其余的是一个辅助屏幕和按钮。
这是相当普遍的,几乎无处不在。目前正在努力为电视,空调,冰箱,机器制造所有这些遥控器。这么多的多层菜单迷宫已经写了。而且,这些内置的机械按钮,编码器和屏幕都可以打破。
在某些情况下,使其余维修设备无法使用。 与此同时,与任何属于我们的移动设备相比,所有这些按钮和屏幕的使用容量都是有限的。 拥有舒适,大型的对比度,触摸屏和“大脑”。
一些人家里架子上有尘土,道理上陈旧的装置是相当有用的。
在这个方面,在微控制器项目中,摆脱屏幕、按钮,并将所有控制和监视功能转移到移动设备上是件好事,或转移到电脑上。在我看来,这样做对于最终用户来说将是更方便,更有效的解决方案。
一些工作在这方面已经实现了。例如,有平台称的模型,不仅可以通过蓝牙看到手机的重量,还可以追踪其变化历史。不管怎样,内置的重量指标仍然存在。
我认为,很快,所有的产品都会出现新的模式,购买家用电器的消费者需要从制造商网站上下载并安装应用程序,以使用其功能。 那么为什么现在优点如此明显,但还没开始将一些用户交互功能从微控制器传输到移动设备上呢?因为用软件很难实现。
因为分布式系统总是更复杂。
复杂性并不在通信/传输的原理中,而是在通过传输方式将协议本身编写的复杂性上,这已经通过UART,I2C,CAN形式化。一些问题:跟踪频道故障、请求重新传输、调度数据包,等等为资源充足的机器,是被TCP / IP协议实现。但是还有一个很重要的部分,就是写通信协议,这个协议是针对每个项目而特别要求的。其中一个解决方案就是编程过程的自动化。
为此,像往常一样,需要创建一种语言(DSL),通过它形式化地描述该协议,然后创建一个程序,以所需的编程语言为基础,基于这个描述的源代码为各种目标平台生成。现成解决方案的例子有很多。
交换议协议在多大程度上可能是复杂的,一个可以从与直升机交换协议的描述符评估。在这种情况下,XML被视为一种语言协议描述的选择。 对于微控制器来说,基于TCP / IP的大型机器的解决方案由于资源有限而不适用。你必须使用CRC,位/字节填充,字节顺序,并考虑到这样或那样非常不明显的微妙之处。通过手工编写来尝试解决问题,可以将程序员的创造性生活转化为地狱,类似于在不同浏览器上支持的Java脚本所支持的混乱。 而且,在完全不同的平台上有不同的语言。即使是很小的变化调试过的协议,会导致很长的调试过程。
上面列举的很多工具,在它们的代码生成中,都降到了微控制器的水平。使用上述代码生成工具的尝试很难适用于旧版32位系列的微控制器。 最受欢迎,价格便宜而且广泛使用的8位微控制器仍然处于观望状态。 我自己经常遇到将控制功能委托给移动设备的项目。 有时可以这样做,但是进一步的支持和功能扩展变得非常困难。
在使用现有代码生成工具并了解其优点和缺点方面获得了丰富的经验后,我决定建立自己的主题公园,并将其命名为CodeBlackBox。
代码生成器本身决定用SCALA语言编写。以广为人知的JAVA语言作为协议描述的基础。为什么选择这种语言?很简单,JAVA有很多方便的SDK。原来有足够的语言结构来描述数据包中传输的数据类型,还有很多附加的特性,包括非常重要的网络拓扑结构。
BlackBox使用以下编程语言生成源代码:JAVA,C#,C。
计划支持SWIFT。
目前,代码生成器BlackBox是像SaaS一样构建的。要获得生成和测试的代码是很有必要的:
  • 创建一个协议规范。实际上,这是java的常规来源。
  • 下面是一个例子,它是如何在HC08上通过蓝牙UART在STM8S103F3P6的板子上通过Android闪烁LED寻找一个演示项目的。当编写一个规范时,有必要连接到一个java项目的一组注释,描述数据特征 和遵循一小套规则,描述分组,频道,主机,通信接口,网络拓扑验证规范是否成功编译,并将其源代码作为附件发送到邮件地址OneBlackBoxPlease@outlook.com
  • 服务器定期从这个盒子中接收到规范,并检查它们的正确性。然后,以所需的编程语言生成规范中所要求的源代码。之后,创建了几个测试,并通过它们运行源代码。如果所有测试都成功,那么生成的代码,最后通过的测试以及使用有序API的示例将打包到归档中,并发送给收件人。如果发生错误,发件人将被通知可能的延迟,BlackBox支持服务正在处理遇到的困难。
在这里你可以找到一个生成代码的例子,在上面提到的带有android LED的演示控制项目中,这个代码的使用示例在STM8上组装的演示PCB上闪烁。 使用BlackBox,您不仅可以在微控制器,移动设备之间建立通信,还可以在普通计算机之间建立通信。没有时间和精力的浪费这才是重要的。实际上,生成的BlackBox代码可以成为分布式应用程序的骨架。程序员只需添加处理程序到数据包的接收事件,以及创建包的逻辑,填充数据并发送给接收者。
看看有多少项目可以通过遵循这个新的范例而受益。这里是广州人做的示波器DS212。如果将屏幕和控件移动到手机或平板电脑的侧面,您可以:
大大降低了产品的成本 触摸屏的所有功能大大改善人体工程学。 示波器本身变得更加紧凑,可以直接放置在测量位置,在10米以内通过蓝牙将结果显示在方便用户的地方。 通过无线方式接收测量数据,我们可以更有效地使用示波器电池,这将更加节俭,因此我们获得了可靠的电隔离。
另外,在为JAVA创建代码的同时,我也想到了如何缓解内置JAVA枚举概念的问题和缺点。通常,作为解决方案,[url=]Android程序员建议使用IntDef注释[/url]
有创造性地重新思考这个问题,我创建了我自己的解决方案 - SlimEnum。在JAVA代码生成过程中,它正在积极使用BlackBox。为了方便SlimEnum使用,我为IDEA / Android studio编写了一个插件,可以从Intellij仓库的插件部分安装。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-1-19 11:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表