首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
单片机 工控 脚本语言
2024-09-05
为 32 位单片机设计的脚本语言 Berry
Berry是一款一款为32位单片机设计的脚本语言.Berry解释器使用C89标准实现,该语言可以在RAM或ROM很小的设备上运行. 尽管Berry的体积很小,但是它也支持class以及闭包等功能,使得单片机可以具有较好的二次开发能力.Berry没有将数值和字符串等简单类型设计为对象,这样不仅节省了RAM还可以防止频繁的malloc()调用.此外该脚本语言还有一些减少内存使用的优化. Berry非常容易和C语言进行交互,您可以使用C API调用Berry代码,也可以在Berry代码中调用C语言实现
为 STM32 移植 Berry 脚本语言
Berry 是我为单片机设计的一款脚本语言,该语言具有资源占用小.平台无关.执行速度快和易于掌握等优点.在单片机上使用脚本语言可以提高单片机的二次开发能力以及调试效率,同时也是一种比较新颖的玩法.本教程将简要介绍在 STM32F103RBT6 单片机上移植 Berry 脚本语言的方法.教程的末尾给出了移植完成的示例工程,读者可以根据本教程的内容和示例工程完成自己的移植工作. 我使用 ST 推出的 CubeMX 软件进行单片机固件库的配置,选择用 CubeMX 生成 HAL 库工程而不用标准库是考
单片机脚本语言-移植lua到stm32-MDK
Lua简单介绍 Lua[1] 是一个小巧的脚本语言.作者是巴西人.该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. Lua脚本能够非常easy的被C/C++ 代码调用,也能够反过来调用C/C++的函数,这使得Lua在应用程序中能够被广泛应用.不只作为扩展脚本,也能够作为普通的配置文件,取代XML,Ini等文件格式,而且更easy理解和维护. Lua的目标是成为一个非常easy嵌入其他语言中使用的语言.大多数程序猿也觉得它的确做到了这一点. 非常多应用程序使用LUA
工控随笔_19_西门子_WinCC的VBS脚本_08_常量和流程控制_01
在编程的过程中,有时候我们会使用一些固定的值,例如圆周率,或者某个人的生日,或者家庭住址等等, 这些信息对于一个对象来说一旦确定就不会改变,因此我们在编程的时候也不希望这些信息会改变,在VBS里面 也提供了和其他一些语言中一样的机制: 常量. 常量大体有两种类型: 字面值常量 和 具名常量. 一.常量 Option Explicit ' vbs 常量 'vbs有两种类型的常量: 字面值常量 和 具名常量 '字面值常量 '字面值常量, 就如字面意思一样,其值就和字面意思表达的一样 Dim strA
工控随笔_18_西门子_WinCC的VBS脚本_07_变量作用域和传值、传址
在vbs脚本中也存在和其他编程语言一样的概念,那就是变量的作用域,变量的作用域决 定在什么范围内可以访问. 同样的在vbs脚本中对于变量也有一个生命周期, 变量的生命周期决定了变量的存续时间 这个主要是对于类的实例化对象有意义. vbs的函数和过程对参数变量进行读写的时候,在利用byVal和byRef的行为是不同的. 具体不多说,看代码. 一.代码 ' vbs变量的作用域和生命周期 ' 作用域 '1.vbs的变量有三种作用域: 脚本级作用域.过程级作用域.类级作用域 '2.vbs变量的作用域与三
工控随笔_17_西门子_WinCC的VBS脚本_06_过程和函数
和其他语言一样,vbs提供了过程和函数机制,通过函数和过程可以优化代码结构和实现代码复用, 减少代码的编写量. 一.代码 具体不再多说,看实例代码. ' vbs的函数和过程 '1.过程式编程是一大编程思想,就和后来的面向对象一样,对于代码的复用 ' 和代码的逻辑结构是具有非凡的意义的. '2.现在的编程语言无论是脚本.解释型语言.编译型语言都具有函数和过程 ' 的概念 '3.简单的来说我们可以把函数或者过程看成一个黑盒子,给它原料(输入参数) ' 他们就会生成产品(输出). '4.在语法上来看,
工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型
说到编程语言,总是绕不开数据类型,因为数据类型决定了数据可以进行什么样的操作.同时数据类型 从广义上来说是一种数据结构,在过程式编程的过程中,曾经有过这样一种说法: 程序 = 数据结构 + 算法 可见数据类型的重要性.大体来说,编程语言有三种: 强类型语言, 弱类型语言,介于两者之间的语言. 强类型语言要求变量定义的时候必须明确数据类型,弱类型语言不要求在变量定义时明确数据类型. 一.强类型语言.弱类型语言 我们所知的C语言系的语言都要求变量定义时明确数据类型,例如C语言.C++.Java语言等
工控随笔_10_西门子_WinCC的VBS脚本_01_基础入门
很多人都认为VB语言或者VBS脚本语言是一种很low的语言,从心里看不起VB或者VBS, 但是其实VBS不仅可以做为系统管理员的利器,同样在工控领域VBS语言大有用武之地. 西门子的WinCC提供了两种脚本语言,C脚本和VBS脚本,通过这两种脚本可以增强WinCC 的动态功能,可以实现一些复杂的功能. 学习西门子WinCC的vbs脚本,可以不用全面学习微软的vbs脚本知识,待用到什么去查手册 即可,但是这样的话会影响使用vbs脚本的效果和效率. 所以建议可以先从微软的VBS学起. 一.VBS脚本
工控随笔_21_西门子_WinCC的VBS脚本_10_对象_01
最近有点小忙,各种事情,心情也不是很好,烦心事特别多,因此最近更新的比较慢. 不敢再松懈了,今天正好有点时间,就继续看了一下VBScript中关于对象的一些内容. 一.对象 OOP是编程规模发展到一定程度后才出现的,因为不但操作系统的程序规模越来越大,而且应用 程序的规模也是日益增长. 代码重用在OOP出现后又是进一步提升. 什么是对象呢? 按照以前Unix的套路:一切皆文件. 在这里也可以说一切皆对象.计算机本身 也可以看做一个对象. 对象具有特征和功能,特征表现为属性,功能表现为方法.
工控随笔_15_西门子_WinCC的VBS脚本_05_变量类型之三_VBS数组
数组是一种复杂数据类型,不但有数组本身的数据类型: 数组,还有数组元素中存储的数据的类型. 一.vbs中的数组类型 在VBS中提供了两种数组类型,一种是固定数组,一种是动态数组. 1.固定数组 就是在定义的时候数组的大小固定了,也就是说一旦定义了固定的数组,那么数组能存储多少的数据就 不能改变了. 2.动态数组 就是在定义的时候并不指定数组的大小,在运行的时候动态的指定数组的大小,这样就能根据实际情况 设定数组的大小了. 二.实例 ' vbs 中的数组 'vbs中数组具有自己的特点 '1.vbs
工控随笔_13_西门子_WinCC的VBS脚本_04_变量类型之二
上一个随笔说了一些关于vbs变量类型的内容,这一篇我们继续说说变量类型相关的内容. 一.NULL补充内容 '需要注意的是,NULL不能简单通过 = 来进行比较,而必须通过 'IsNull函数来实现 '下面用 = 进行比较,不会执行IF子句 Dim varTest varTest = Null If varTest = Null Then MsgBox "The variable varTest has NULL value." End If '下面用IsNull检测,会执行语句 If
工控随笔_11_西门子_WinCC的VBS脚本_02_运算符
VBS脚本做为编程语言,提供了很多的运算符,通过这些运算符,可以实现不同的操作.运算符具有不同的类型 不同的运算符之间具有运算优先级. 一.运算符的分类 大体分为以下几类: 1.赋值运算符 2.算术运算符 3.比较运算符 4.逻辑运算符 5.链接运算符 二.运算符的优先级 运算符具有优先级,优先级决定表达式中的运算顺序,就和 1 + 2 * 3 - 4 一样,先计算 2*3 , 然后得到的结果在和 1相加,最后在减去4, 这里先计算 * 然后再计算 + 和 - 就表示运算优先级. 算术运算符的优
工控随笔_02_西门子_WinCC的IO域利用C脚本返回值
WinCC的输入输出域用来显示信息或者接受操作人员的输入.当作为显示功能时,只有直接的变量连接 才能正常的显示,如果使用动态对话框进行设置且用了表达式则不能正确显示. 但是有时候我们在WinCC变量管理器里面已经有一个相关的变量A,而通过这个变量A可以经过一个固定 的计算方式可以得到一个我们想要的量B,我们有两种选择: 选择1.在PLC侧计算这个量B,然后再建立PLC到WinCC的链接,这种方式增加通讯负载量, 而且还增大了组态的工作量. 选择2.在WinCC侧进行计算.但是我们知道在WinCC
工控随笔_20_西门子_WinCC的VBS脚本_09_常量和流程控制_02
vbs不但提供了分支结构,还提供了丰富的循环形式.一共有3种循环: 1.for循环 2.do...loop循环 3.while循环 各种循环有各自的特点,在使用的时候可以进行转换. 前面已经描述过For循环,这里简单的描述一下后面两种循环. 一.Do....loop循环 Option Explicit 'do loop 循环 'do loop循环有两种形式 '1.形式1 while形式, while true 就一直循环 '2.形式2 until形式, until true 就停止循环 Dim
开源纯C#工控网关+组态软件
一. 前言 在园子潜水也七八年了.说来惭愧,这么多年虽然一直自称.NET铁杆粉丝,然仅限于回几个不痛不痒的贴,既没有发布过代码,也没有写过文章. 看着.NET和C#在国外风生水起,国内却日趋没落,我也早觉得有写一点东西的必要了. 二. 为什么要开源,它能做什么 开源是大势所趋 现在已经不是兜售软件光盘卖授权的时代了.我自己开发这套系统也得益于开源. 起因是因为看到单位用的组态软件被版权问题困扰,同时系统十分庞大,动辄几个G,安装部署调试都不方便,同时脚本功能和扩展能力也有限. 开始就是自
开源纯C#工控网关+组态软件(八)表达式编译器
一. 引子 监控画面的主要功能之一就是跟踪下位机变量变化,并将这些变化展现为动画.大部分时候,界面上一个图元组件的某个状态,与单一变量Tag绑定,比如电机的运行态,绑定一个MotorRunning信号:但有些时候不会这么简单,比如温度计在温度高于50℃显示红色;某设备报警,可能是多个条件其中之一触发的结果:变量变化触发一系列连锁反应…如此种种.考虑到工控行业大部分技术人员并非计算机专业出身,如何能够用最少的编码解决各种复杂的变量-动画绑定问题,无疑要费一番心思. 二. 方案选型 针对变量
工控随笔_C#连接PLC_之_C#入门_01_配置学习环境
最近在做一个东西,需要用到通用开发语言开发一个软件来读取PLC的内容,这方面的难点在于解析PLC利用 以太网通讯的通讯协议,而一般的PLC厂商对自己的协议是封闭的,对一般的开发者是不开放的,虽然可以通过Wireshark 进行解析,但是工作量很大,且如果对Wireshark不熟悉基本也是无解,很难解析出来. 网上有部分用C#开发的开源库,但是自己对C#语言不懂,所以也就没法学习和应用了.因此我在这里开始了C#的 从零开始学习之旅(我的从零开始是指对C#一无所知,如果你要和我一起开启这趟旅程,应该
工控漏洞利用框架 - ISF(Industrial Security Framework)
一. 框架介绍 本框架主要使用Python语言开发,通过集成ShadowBroker释放的NSA工具Fuzzbunch攻击框架,开发一款适合工控漏洞利用的框架.由于Fuzzbunch攻击框架仅适用于Python2.6,很多核心的功能都封装成了DLL,通过函数进行调用,不便于后期的移植和使用.但是,Fuzzbunch的命令行使用的确很方便,而且够傻瓜,所以就有集成一个适合工控漏洞利用的框架想法.新框架对主要的接口使用Python重新实现,所以支持Python2.X版本. 肯定会有人问,有牛逼的MS
工控安全入门(五)—— plc逆向初探
之前我们学习了包括modbus.S7comm.DNP3等等工控领域的常用协议,从这篇开始,我们一步步开始,学习如何逆向真实的plc固件. 用到的固件为https://github.com/ameng929/NOE77101_Firmware 目前网上几篇对于该固件的分析都是以2018工控安全题目解题为主,并没有相应的知识和说明,这次我们不会做题目方面的说明,而是重点关注如何从零开始逆向固件. 本系列涉及到vxworks操作系统.PowerPC CPU架构的汇编语言.Ghrida的反编译问题,网上
工控安全入门(三)—— 再解S7comm
之前的文章我们都是在ctf的基础上学习工控协议知识的,显然这样对于S7comm的认识还不够深刻,这次就做一个实战补全,看看S7comm还有哪些值得我们深挖的地方. 本篇是对S7comm的补全和实战,阅读本篇之前一定要先阅读以下文章,掌握基本的S7comm知识: 工控安全入门(二)—— S7comm协议 本篇文章依然有很多笔者自己摸索的内容,可能存在错误,同时也发现了wireshark对于s7comm解析的几个模糊之处,希望大家能帮忙指正.本次选用的流量包来自于github的w3h,有兴趣的同学可
热门专题
joda-time 格式化时间
zabbix如何使用电子邮件发送手机短信
mysql字段默认null,没值的时候查不到
阿里云 oss ossutil64 上传文件一直是0
solidity 多重继承 构造函数
java怎么将excel返回给前端
qt dll 入口函数
css 加载中 三个点动画
easyui datagrid 设置自动列宽
NAMESOLI 托管设置
squid 反向代理 不同域名
pyobjc 获得macos界面元素
mongodb空间数据
gitee如何刷绿点
python二维列表第一个相同按照第2列排序
matlab mesh和surf
centos7 crontab 日志
eclipse springboot控制台乱码
Dropzone自定义上传数据
同时用jdk1.7和jdk1.8启动