学习open62541 --- [2] 使用UaExpert

UA Expert是OPC UA的GUI工具,当编写好server代码后并运行,我们可以使用UA Expert去和server进行通信,下面就简单介绍下使用步骤。 下载UA Expert UA Expert 官网地址是https://www.unified-automation.com/,进入网站...

2019-08-17 11:16:46

阅读数 28

评论数 0

学习open62541 --- [1] 初始

open62541是OPC UA的开源C(C99)实现,license是Mozilla Public License v2.0,可以免费用于个人和商业用途,其网站为https://open62541.org/。 本文主要讲述如何编译open62541,并运行简单的demo,运行环境是ubuntu1...

2019-08-11 15:22:18

阅读数 42

评论数 0

ubuntu更换软件源(使用ubuntu自带工具操作)

ubuntu安装好后默认的软件源是ubuntu官方的,对于国内的用户来说访问起来会比较慢,所以安装好系统后一般都会去更换成国内软件源,网上很多做法是修改那个软件源的配置文件,其实ubuntu自带设置软件源的工具,不必去修改文件。 步骤 这里以ubuntu16.04来举例。首先,点击左侧的Syste...

2019-08-11 12:49:35

阅读数 40

评论数 0

STM32 CM3/CM4中程序跳转分析

本文讲CM4中如何实现程序跳转,对于CM3原理也是一样的(代码也是一样)。我们在CM4中

2019-06-22 11:34:45

阅读数 37

评论数 0

设计模式 --- 装饰器模式(Decorator)

装饰器模式就是在不改变原有类或函数的基础上,增强该类或函数的功能,增强后会生成新的类或函数。如果用过python的装饰器就更好理解了,道理是一样的。 一 代码 假设我们有个类叫 ...

2019-06-12 22:43:43

阅读数 28

评论数 0

设计模式 --- 代理模式(Proxy)

一 代理(Proxy)的概念 首先让我们看个例子来了解下代理(Proxy)的概念。 假如用户要访问百度,那么就会在浏览器里输入百度的地址然后回车就可以访问百度,形式是下图这样, 但是如果用户在国外,可能无法访问国内的百度服务器(被屏蔽),这个时候如果用户还想访问百度,就需要用到代理了,这个代理也...

2019-06-11 21:40:18

阅读数 45

评论数 0

设计模式 --- 策略模式(Strategy)

假如我们要买一台组装的台式电脑,那么就需要鼠标、键盘、显示器和机箱这4个部件。现在有2个组装机厂商都提供电脑,一个叫A,另一个叫B,相同价位下,A和B都有自己的一套产品。我们买电脑是去找销售买。 一 代码描述 下面用代码来描述一下具体情况,首先代码表示一下两个厂商, enum PCProvid...

2019-06-02 17:56:36

阅读数 22

评论数 0

头文件中的静态变量的作用范围

一 问题 之前在阅读linux内核代码时,发现一个奇怪的现象:一个头文件里定义了一个static变量,然后在另外一个.c文件里使用#include引入这个头文件,结果这个.c文件里就可以直接使用这个static变量了。 好像跟我们学的static用法不一样,一般static声明的变量,其作用范围就...

2019-05-29 22:38:35

阅读数 50

评论数 0

C++11中=delete的巧妙用法

C++11中,当我们定义一个类的成员函数时,如果后面使用"=delete"去修饰,那么就表示这个函数被定义为deleted,也就意味着这个成员函数不能再被调用,否则就会出错。 #include <cstdio> class TestClass {...

2019-05-28 22:29:52

阅读数 98

评论数 0

C++中的Variable Shadowing

Variable Shadowing,直接翻译叫做变量影子,好像有点懵,下面用例子来看下这是什么意思。 一 求和例子 下面是个简单的求和代码,计算0~upper的数字相加和, #include <cstdio> int main(void) { int sum...

2019-05-27 23:13:25

阅读数 99

评论数 0

C/C++的enum类型大小

我们在编程时有时想让一个变量的值只在规定范围里取值,那么就会考虑使用enum类型。 例如我们想定义一个变量来表示红绿蓝三原颜色,那么就使用enum来定义取值范围, enum color {RED, GREEN, BLUE}; 然后我们在用enum color来定义变量,并赋值, enum col...

2019-05-27 21:26:37

阅读数 115

评论数 0

设计模式 --- 单例模式(Singleton)

一 简述 单例模式的思想就是:在整个程序的任何地方,一个类只能有一个实例化对象。 例如,如果一个类的功能是把数据库加载到内存里,然后提供一些read-only的接口供其它对象使用,那么这个类就很适合单例模式,如果不用单例模式,那么每次生成这个类的对象时都要去把相同的数据库加载到内存里,就会造成内存...

2019-05-06 21:52:50

阅读数 27

评论数 0

CANOpen中SDO和PDO的COB-ID理解

CAN协议中

2019-05-03 11:33:20

阅读数 519

评论数 0

简单代码判断内存大小端模式

大端模式(Big-Endian)是低地址存放高位字节,小端模式(Little-Endian)是低地址存放低位字节。下面用一段简单的c代码来进行判断。 #include <stdio.h> #include <stdint.h> int m...

2019-03-27 21:26:10

阅读数 48

评论数 0

assert宏及其开关

在阅读C/C++源码时,经常会看到使用assert语句的,这里简单讲解一下这个宏的用法。 一 用法 assert是一种预处理宏(preprocessor macro),行为类似于内联函数,assert宏使用一个表达式作为它的条件。 assert(expr); 如果表达式的值为真(即为0),ass...

2019-03-14 22:46:05

阅读数 35

评论数 0

C++构造函数前的explicit关键字

我们在阅读C++源码时有时会看到类的构造函数前面会有explicit关键字,这个单词字面意思是显式的(与之相反的单词是implicit,隐式的)。下面就来分析下这个关键字的作用。 一 例子 首先来让我们看一段简单的C++代码, #include <iostream&a...

2019-03-10 21:06:54

阅读数 67

评论数 0

交叉编译Python3.6

如今python已经是一门非常流行的语言了。由于python的底层是C语言写的,所以只要对python源码进行交叉编译,那么python也可以运行在嵌入式平台下。 一 准备 主要需要以下几个东西 Python3.6.8源码 pcre zlib 交叉编译器 ...

2019-03-09 13:49:16

阅读数 415

评论数 0

C语言使用宏来控制结构体里的成员定义

这里只是记录下C语言里使用宏来控制结构体里成员定义。 在阅读linux内核源码时,会发现很多结构体里都有各种宏开关,来控制是否定义某个成员变量。 下面自己写个简单的程序验证下, #include <stdio.h> #define _...

2019-03-03 21:54:22

阅读数 153

评论数 0

C语言函数调用的一个问题总结

这几天看代码时遇到个比较小白的函数调用问题,这里记录一下。 一 迷惑 假如我们有个main.c文件,main()函数位于其中,main()函数里调用了func(),而func()是在module.c里定义的,这时我们一般会写个module.h,然后在这个点h文件里对func()进行声明,最后mai...

2019-02-14 19:20:31

阅读数 91

评论数 0

RTX支持的三种任务调度策略

一 综述 RTX是Keil MDK自带的RTOS,支持三种任务调度策略, Pre-emptive scheduling,即抢占式调度 Round-Roubin scheduling,即轮询调度 Co-operative multi-tasking,合作多任务 二 Pre-emptive 每个t...

2019-01-21 22:01:08

阅读数 93

评论数 0

提示
确定要删除当前文章?
取消 删除