VxWorks

零基础入门学习Python

余生颓废 提交于 2020-10-31 00:52:12
Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。 Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。 Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。 Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库

OPC协议解析-OPC UA OPC统一架构

丶灬走出姿态 提交于 2020-10-29 04:32:15
1 什么是OPC UA 为了应对标准化和跨平台的趋势,为了更好的推广OPC,OPC基金会近些年在之前OPC成功应用的基础上推出了一个新的OPC标准-OPC UA。 OPC UA接口协议包含了之前的 A&E, DA,OPC XML DA or HDA , 只使用一个地址空间 就能访问之前所有的对象,而且不受WINDOWS平台限制,因为它是从 传输层Scoket 以上来定义的,这点后面会提到,导致了灵活性和安全性比之前的OPC都提升了。 2 OPC UA的优势 1)一个通用接口集成了之前所有OPC的特性和信息,A&E, DA,OPC XML DA or HDA 2)更加开放,平台无关性,WINDOWS,Linux都能兼容 3)扩展了对象类型,支持更复杂的数据类型比如变量,方法和事件 4)在协议和应用层集成了安全功能,更加安全 5)易于配置和使用 核心的区别是因为OPC和OPC UA协议使用的TCP层不一样,如下: OPC是基于DOM/COM上,应用层最顶层;OPC UA是基于TCP IP scoket 传输层.    其他一些区别: OPC虽然通过配置COM/DOM来提供数据加密和签名功能,配置防火墙,用户权限来让数据访问变得更加安全,但是会增加额外的工作量,尤其是对非IT的工程师来说;对于OPC UA,数据加密和签名,防火墙等都是默认的功能。比如基于DOM的OPC使用的 动态端口分配

Tool之预定义的宏

a 夏天 提交于 2020-10-29 01:30:00
欢迎关注公众号 VxWorks567 如转发,请标明出处! 编译器都会预定义一些宏,这些宏是不可取消的,来看看VxWorks中可能用到的这几个 __FILE__ 字符串常量,表示当前文件名,包含绝对路径 __LINE__ 十进制整型数,表示当前代码行号的 __FUNCTION__ 字符串常量,表示当前函数名,但它不是宏 这三个是在调试语句里经常用的,至少是公众号VxWorks567经常用 __DATE__ 字符串常量,表示预处理时的日期,包含11个字符 __TIME__ 字符串常量,表示预处理时的时间,包含8个字符 __INCLUDE_LEVEL__ 十进制整数,表示当前位置被#include的深度,从0开始 __SCHAR_MAX__ signed char的最大值 __WCHAR_MAX__ wchar_t的最大值 __SHRT_MAX__ signed short的最大值 __INT_MAX__ signed int的最大值 __LONG_MAX__ signed long的最大值 __LONG_LONG_MAX__ signed long long的最大值 __INTMAX_MAX__ intmax_t的最大值 不建议直接使用这几个宏,而是包含系统的头文件 __SIZEOF_INT__ __SIZEOF_LONG__ __SIZEOF_LONG_LONG__ _

IO之扒一扒logMsg

笑着哭i 提交于 2020-10-28 05:55:03
欢迎关注VxWorks567 如转发,请标明出处! 表面的故事 VxWorks提供了一种消息记录机制,主要是通过系统的控制台展示系统的调试信息,提供的函数是logMsg()。Task或ISR里都可以调用它,然后由一个叫"tLogTask"的Task将相关信息打印出来 背后的故事 这个机制由组件INCLUDE_LOGGING支撑 函数logMsg()会调用msgQSend(),将语句fmt传递到一个static的消息队列,这个队列最多可以缓存 MAX_LOG_MSGS 条消息。msgQSend()的第四个参数timeout会考虑三种情况:(a)在中断里调用,则使用NO_WAIT;(b)普通Task,则使用WAIT_FOREVER;(c)unbreakable的Task,则根据组件 LOG_MSG_UNBREAKABLE_TASK_NO_WAIT 来决定是用NO_WAIT还是WAIT_FOREVER。如果msgQSend()发送失败,则记录失败的次数 而"tLogTask"的默认属性如下 它会调用msgQReceive(xx, xx, xx, WAIT_FOREVER )来接收logMsg()发送的消息,然后打印到系统的控制台。而系统的这个控制台,如果有PC Console,则使用VGA,否则就使用串口 另外,这个机制还提供了一个函数logFdAdd(int fd),可以将这些消息

UGL之单色位图

孤街浪徒 提交于 2020-10-07 15:55:55
欢迎关注VxWorks567 除了 标准位图 ,WindML还提供一种单色位图(Monochrome Bitmap)。这种位图的图案仅包含一种颜色,而且由GC的前景色来指定。 typedef struct ugl_bmap_header { UGL_UINT16 type; UGL_UINT16 width; UGL_UINT16 height; UGL_UINT16 maxWidth; UGL_UINT16 maxHeight; void *extension; } UGL_BMAP_HEADER; typedef UGL_BMAP_HEADER UGL_DDB; typedef UGL_BMAP_HEADER UGL_MDDB; typedef UGL_BMAP_HEADER UGL_TDDB; typedef UGL_DDB *UGL_DDB_ID; typedef UGL_MDDB *UGL_MDDB_ID; typedef UGL_TDDB *UGL_TDDB_ID; /* Monochrome bitmaps */ typedef struct ugl_mdib { UGL_SIZE width; UGL_SIZE height; UGL_SIZE stride; UGL_UINT8 *pImage; } UGL_MDIB; UGL_MDDB_ID