自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (8)
  • 收藏
  • 关注

原创 私有通讯协议

数据包结构数据包头部:数据包头部是必须的,在粘包的时候可以作为的分隔符进行分包。数据包长度:数据包长度最好加上,可以判断数据包是否完整。版本号: 版本号有时也很重要,例如LORA网络中,不同项目之间的数据包可以通过版本号进行甄别。目的地址:目的地址根据硬件特性决定加不加。例如CAN总线通讯过程中已经有硬件地址,就可以不加。

2017-04-19 13:36:51 3257

原创 CANOpen生命守护机制

CanOpen提供两种监视节点在线的机制,一种叫做生命保护机制,一种叫心跳机制。两种机制都是基于NMT报文进行实现的。心跳机制:从站每隔一段时间上报一次自己的当前状态。主站对每个从站进行倒计时,一旦在规定时间内从站没有上报状态,则认为其掉线。/* 初始化心跳报文:主站为所有使用心跳包的从站配置入口, 从站没有在规定时间内上报心跳包,主站将从站状态置为掉线 */void he

2017-04-17 13:32:03 7900 2

原创 CANOpen状态机

CANopen 的每一个节点都维护了一个状态机。该状态机的状态决定了该节点当前支持的通讯方式以及节点行为。节点在不同的状态下支持不同的报文通讯初始化:bootup报文(lifeguard的一种)预运行:SDO报文,紧急报文,同步报文,节点守护报文、LSS报文运行:SDO报文,紧急报文,同步报文,节点守护报文、PDO报文...

2017-04-17 13:24:36 5802

原创 CANOpen报文类型

CANOpen应用层协议细化了CAN总线协议中关于标识符的定义。定义标准报文的11比特标识符中高4比特为功能码,后7比特为节点号,重命名为通讯对象标识符(COB-ID)。功能码将所有的报文分为7个优先级,按照优先级从高至低依次为:网络命令报文(NMT)、同步报文(SYNC)、紧急报文(EMERGENCY)、时间戳(TIME)、过程数据对象(PDO)、服务数据对象(SDO)、节点状态报文(NMT

2017-04-17 13:23:18 6760 3

原创 STM32的CAN过滤器详解

STM32普通芯片的CAN有14组过滤器组,互联型有28组过滤器组,每组过滤器有2个可配置的32位寄存器:CAN_FxR0和CAN_FxR1。用以对收到的帧进行过滤,以此判断是否接收该帧。每组过滤器组有两种工作模式:标识符列表模式,标识符屏蔽位模式。 标识符列表模式:收到的标识符必须与过滤器的值完全相等,才能通过。 标识符屏蔽位模式:只要标识符的某些位...

2017-04-17 13:22:16 3170

原创 CAN报文格式

CAN协议的报文传输过程中有:数据帧、远程帧、错误帧、过载帧和帧间隔。        1.数据帧:用于发送节点向接收节点传送数据的帧。        2.远程帧:用于接收节点向具有相同ID的发送节点传送数据的帧。        3.错误帧:用于当检测出错误时向其他节点通知错误的帧。        4.过载帧:用于接收节点通知其尚未做好准备的帧。        5.帧间隔:用于将

2017-04-17 13:20:43 54772 2

原创 CAN总线冲突裁决

当总线上的几个器件同时发送数据的时候,CAN总线必须决定哪个器件可以发送,而其他的器件必须等待。冲突裁决是CAN协议最重要的一个特性。    以下图为例。总线上有器件A,B,C,D。A,B,C同时发出SOF位为显性。而D为隐形,当它发现总线上的状态与自己的状态不一致时,D就进入监听状态。A,B,C继续发送数据。发送到ID的第5位时A,C为显性,B为隐形。B检测到总线的状态于自己的状态不一致,进

2017-04-17 13:19:47 5235

原创 CAN总线电平(隐性与显性)

CAN2.0B规范定义了两种互补的逻辑数值:显性和隐性。同时传送显性和隐性位时,总线呈现显性状态;同时传送显性状态位时,总线呈现显性状态;同时传送隐性状态位时,总线呈现隐性状态。显性数值表示逻辑0,隐性数值表示逻辑1。        典型地,CAN总线为隐性(逻辑1)时,CAN_H和CAN_L的电平都为2.5V(电位差为0V);CAN总线为显性(逻辑0)时,CAN_H和CAN_L电平分

2017-04-17 13:18:09 30821 2

原创 CAN和CANOpen的关系

最原始的CAN协议有五层,MDI、PMA、PLS、MAC和LLC层。和ISO网络模型进行对比的话,MDI、PMA和PLS属于物理层,MAC、LLC属于数据链路层。CAN原本是没有应用层协议的。        CANOpen是一种架构在控制器局域网(CAN)上的应用层通讯协议。开发过程中我们也不一定要用CANOpen协议,你可以根据自己的需要定制自己的应用层协议。       

2017-04-17 13:14:11 1927

原创 RTX移植到STM32F103

keil5移植RTX非常方便,下面我贴出操作步骤:1.选择CUP型号2.配置软件组成,我这里仅仅勾了保证系统运行最基本的配置。注:选择RTX时,RCC会自动配置,所以我这里没有勾选。3.添加代码模板4.选择RTX模板5.配置时钟,我用的是8Mhz的外部晶振6.配置RTX,我上一步配置的系统时钟是72Mhz...

2017-04-17 13:11:31 1012

原创 SecureCRT远程连接Ubuntu,SecureCRT开发环境配置

第一步:SecureCRT连接Ubuntu    1.Ubuntu安装ssh        打开Ubuntu终端 --> sudo apt-get install openssh-server(安装) --> sudo service ssh start(重启)    2.允许root用户登录        sudo passwd root --> 输入新密码     

2017-04-12 11:25:55 1809

原创 vim插件和配置

第一步:安装vim    sudo apt-get install vim第二步:简单配置vim    sudo vim /etc/vim/vimrc    在最后添加参数,如下:        set nu             " 显示行号        set autoindent    " 自动缩进        set cindent  

2017-04-12 11:24:56 501

原创 vmware安装Ubuntu

第一步:安装vmware和下载ubuntu镜像第二步:创建虚拟机    1.文件 --> 新建虚拟机    2.自定义(高级) --> 下一步    3.硬件兼容性:根据情况选择合适的版本 --> 下一步    4.安装来源:稍后安装操作系统 -->  下一步   (这一步如果选择:安装程序光盘映像文件。vmware将对ubuntu进行精简安装)    5.

2017-04-12 11:24:12 668

原创 ARM交叉编译工具arm-linux-gcc安装

以arm-Linux-gcc-4.5.1-v6-vfp为例: 1.首先交叉编译器一般是32位的。    如果你使用的是64位系统,必须要安装32位库来支持运行。    如果你使用的是32位的操作系统可以跳过这步。    sudo apt-get install lib32ncurses5 lib32z1 2.下载安装包(arm-linux-gcc-4.5.1-v...

2017-04-12 11:23:31 579

原创 DALI调光的计算方式

在DALI的调光信息中,用8bit来表示调光的亮度水平。最亮和最暗之间包含256级灯光亮度。按照对数曲线分布,在高亮度下具有高增量值,低亮度下具有低增量值,这样整个调光曲线在人眼里看起来像线性变化。DALI标准灯光亮度水平为0.1%~100%,00000000表示灯没有点亮,00000001表示0.1%的亮度值,11111110表示100%的亮度值,11111111表示停止调光。

2017-04-12 11:22:17 6014

原创 IGMP协议

 之前写了一篇关于多播的博客,简单介绍了IP地址到以太网地址的映射方式,简要说明了在单个物理网络中的多播过程。但是当涉及到多个网络数据必须通过路由器转发时,情况就会复杂得多了。 Internet组管理协议(IGMP)就是专门用于支持主机和路由器进行多播的一种协议。IGMP协议能够知道多播数据应该向路由器的哪个接口转发,实质上是路由器对每个接口保持了一个表,表中

2017-04-12 11:12:28 474

原创 多播

想弄清楚多播,首先需要了解主机对信道传送的过来帧的过滤过程。下图说明了这一过程:        1.网卡查看信道传过来的帧,确认是否接收该帧。通常网卡只接收目的地址为网卡物理地址或广播地址的帧(ff:ff:ff:ff:ff:ff)。但是大多数网卡经过配置能够接收多播地址或子网多播地址的帧(地址最高字节的最低位设置为1,01:00:00:00:00:00)。如果网卡确认接收该帧,这个

2017-04-12 11:10:13 318

原创 动态选路协议

动态选路,就是动态更新路由表。每个路由器都有个路由守护程序,它运行选路协议,与相邻的路由器进行通信,根据从相邻路由器接收到的信息更新内核中的路由表。Internet是以一组自治系统的方式组织的,每个自治系统通常由单个管理。自治系统可以选择系统中各个路由器间的选路协议,这种协议我们称之为域内选路协议(IGP)。常用的IGP是选路信息协议RIP。最新的一种意在取代RIP的IGP

2017-04-12 11:08:13 521

原创 IP选路

IP搜索路由表的几个步骤:        1.搜索匹配的主机地址        2.搜索匹配的网络地址        3.搜索默认表项如果搜索路由表没有匹配项,而路由表中没有默认项:        1.如果数据报是由本地主机产生的,那么就给发送数据报的应用程序返回“主机不可达差错”或“网络不可达差错”报文        2.如果数据报是被转发的,那么就给源发

2017-04-12 11:07:14 231

原创 Traceroute程序

Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由,还可以让我们使用IP源路由选项。操作过程:        1.发送TTL值为1的IP数据报给目的主机,第一个路由器将TTL值减1,丢弃该数据报,并回发超时ICMP报文。这样就得到了第1个路由器的地址。        2.发送TTL值为2的IP数据报给目的主机。这样就得到了第2个路由器的地址。

2017-04-12 11:06:43 534

原创 Ping程序

ping命令大全ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [-j computer-list] | [-k computer-list] [-w timeout] destination-list -t:默认发送4个echo数据报,加-t参数ping指定计

2017-04-12 11:06:10 283

原创 LwIP之ICMP协议

ICMP(网际控制报文协议),ICMP数据包是封装在IP数据包中的,由于IP不是为可靠传输服务设计的,ICMP的目的主要是用于在TCP/IP网络中发送和控制消息。主要应用有Ping、Traceroute和MTU测试。ICMP报文的种类有三大种类,即ICMP差错报文、控制报文、请求/应答报文,各大类型报文又分为多种类型报文。差错报文:(1) 特点:...

2017-04-12 11:05:24 665

原创 NAT协议

静态NAT(Static NAT)静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。动态地址NAT(Pooled NAT)动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所

2017-04-12 11:04:21 4600

原创 DNS协议

1.在浏览器中输入域名(如:www.qq.com),操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。2.如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。3.如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置

2017-04-12 11:02:47 429

原创 DHCP协议

DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。DHCP Client以广播的方式发出DHCP Discover报文。所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Cl

2017-04-12 11:01:24 427

原创 linux下iconv编码转换的用法

一共需要三步:1. iconv_t iconv_open(const char *tocode, const char *fromcode);    //用这个函数获得句柄(iconv类型的返回值) 参数:tocode是转换后的编码类型,fromcode是转换前的编码类型编码类型有很多根据自己实际需要填参数,具体参考http://baike.baidu.com/link?url

2017-04-12 10:59:21 802

原创 使用libjpeg进行JPEG图像解码

如题:如何对test.jpg进行解码?注:这里使用libjpeg库进行图像解码。也可以不使用libjpeg库,但是比较繁琐。直接上代码:#include "jpeglib.h"#include #include #include int main(){FILE *input_file;input_file=fopen(

2017-04-12 10:58:43 8305

原创 libjpeg移植到arm

第一步:下载libjpeg地址:http://www.ijg.org/第二步:解压第三步:进入目录,生成makefile执行:./configure --prefix=/usr/local/lib CC=arm-Linux-gcc --host=arm-linux --enable-shared --enable-static--prefix=/usr/local/

2017-04-12 10:58:04 2021

原创 使用libcurl以Post方式向HTTP服务器提交数据

一、上传数据如题:char name[] = "jgood";char address[] = "Hangzhou";上传这两个数据到http://localhost:2210/Default.aspx    该怎么办?直接上代码:int main(){    CURLcode code;    code = curl_global_init(CUR

2017-04-12 10:56:47 4554

fastboot驱动和工具

windows平台下的fastboot驱动和工具,用于在uboot下烧录各种镜像到存储器中。

2018-12-25

dnw_for_linux

dnw是linux环境下使用usb启动三星arm处理器时的配套工具。

2018-07-17

modbus源码

modbus文档、freemodbus移植模板、linux插件freemodbus、freemodbus源码注释

2018-06-28

CANOpen资料

CANOpen源代码注释、协议资料和ppt、主站移植模板、从站移植模板。

2018-03-25

C语言ntp协议

c语言udp实现

2017-04-19

经纬度计算日出日落时间

C语言,根据经纬度计算日出、日落、天黑、天亮时间

2017-04-17

C语言ntp协议获取网络时间

2017-04-12

经纬度计算日出日落时间(C语言)

2017-04-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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