- 博客(41)
- 资源 (5)
- 收藏
- 关注
原创 c语言练习题扩展 - 反常题系列
计划要把c语言修炼到专家水平,在学习过程中发现了很多反常有意思的题目列出来,供大家交流讨论。如果有说错的地方,欢迎批评指正。1.神奇printf - 压栈弹栈规则int main(){ int p = 0; printf("%d%d%d\n",p,++p,p++);//结果 220 return 0;}...
2021-02-04 17:16:17
312
原创 COAP数据包协议格式详解
Ver:版本编号,占2bit,固定01T:报文类型,占2bit,CON=00,NON=01,ACK=10,RST=11CON——需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。NON——不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。ACK——应答消息,接受到CON消息的响应。RST——复位消息,当接收者接受到的消息包含一个错误,接受者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。TKL:标签Token的长度,占4bitCode:请求他应答方式,.
2021-02-03 17:16:56
2025
1
原创 TCP/UDP伪头部详解
源端口目的端口:是0-65535任何数字,在收到请求时系统会为客户端动态分配,0-1023为知名端口号UDP报文长度(单位4byte):表示udp报头+udp数据总长度=8+len校验和:计算之前校验和位置填0,发送之前将校验结果填上,目标端收到后会再次进行校验结果为0表示正确UDP伪头部:包含UDP1+UDP+data三部分共12+8+len个字节,UDP发送时需要通过伪头部进行16位校验,伪头部只是在校验时用到,数据收发不用伪头部TCP报头长度(单位4byte):表示TCP报头不包含数据的长度.
2021-02-01 18:14:13
7055
2
原创 UDP数据包协议格式详解
源端口目的端口:是0-65535任何数字,在收到请求时系统会为客户端动态分配,0-1023为知名端口号报文长度(单位4byte):表示udp报头+udp数据总长度,有别于tcp,也没有选项UDP报文校验和:这个是伪头部(12+8+数据len)总共12+8+len的16位校验值查看往期专栏TCP数据包协议格式详解...
2021-02-01 18:09:43
7011
原创 TCP数据包协议格式详解
出一个专栏把通信协议搞一下吧,万物互联的根本呀。IP版本4位:4(二进制0100)表示IPv4,6(二进制0110)表示IPv6报头长度(单位4byte):因为选项长度不确定,取值范围是5-15(20-60byte)服务类型:优先级(前3位)+ToS(后5位),首先按数据紧急情况划分出优先级,然后是ToS允许按照什么方式选择传输服务,ToS第1位表示最小时延即响应时间,第2位是吞吐量,第3位是最高可靠性,第4位是最低费用,第5位保留,不需要这些服务就填0总长度(单位1byte):IP报头+数据长
2021-01-29 18:20:54
6907
原创 代码优化措施都有哪些?
1、消除循环 - 顾名思义 尽量减少循环的存在2、函数代码就地扩展 - 扩展函数花费时间相对复杂功能的函数扩展使用的时间来说微不足道,但是一个很简单只有几行的函数每次调用都需要扩展那么所消耗的资源和时间就比较大了,这时可以用C++中提到的内联函数,当编译器编译内联函数时,内联函数内容会替换函数调用,以保证在调用时避免函数调用的开销。3、公共子表达式消除 - 编译器优化项,示例如下,想来这也是volatile存在的意义吧int main(){ int a = 2,b=3,c=4; int E =
2021-01-13 15:55:08
2942
原创 关于字符、短整形做判断的理解
有两个实际的例子是这样的1、 char a = 0xb6; short b = 0xb600; int c = 0xb6000000; if (a == 0xb6) printf("a\n"); if (c == 0xb600) printf("c\n"); if (c == 0xb6000000) printf("d\n"); 最后只打印了d只打印d是因为字符a和短整形b在参与判断的时候都被强制转换成了32位整形参与运算,是因为他们在内存中都是以32位存储的。2、
2020-12-12 15:10:10
359
原创 关于不同数据类型打印-1值的理解
一般情况下找到合适的例子能够非常有助于我们理解问题其实本来想在他问题下面回复的,但是帖子太久远~ 已经不支持了回复功能- -!!哈哈。一、这个是关于不同数据类型打印值不同的问题int main(void){unsigned char a = -1;unsigned short b = -1;unsigned int c =-1;printf(“a = %d\n”, a);//255printf(“b = %d\n”, b);//65535printf(“c = %d\n”, c);//-
2020-12-12 14:57:34
671
原创 sizeof返回数据类型说明
首先声明sizeof返回的数据是无类型的,在使用中要时刻注意如下列代码中,if中判断的结果就是i大于num!int main(){ int num; int i = -1; printf("sizeof(num)=%d\n",sizeof(num)); if(-1 < sizeof(num)) printf("i小于num!\n"); else printf("i大于num!\n");}代码运行结果如下分析得出:因为sizeof()返回的数据是无类型的,所以sizeo
2020-11-16 13:05:52
5038
原创 复习系列 - C语言转义字符
转义字符释义\?在书写连续多个问好时使用,防止他们被解析成三字母词\’用于表示字符常量’\"用于表示一个字符串内部的双引号\\用于表示一个反斜杠,防止它被解释为一个转义序列符\a警告字符,蜂鸣\n换行\r回车\b退格符\t水平制表符\v垂直制表符\dddddd表示1-3个八进制数字。如:\130 X\xdddd表示2个十六进制数字,x必须小写。如:\x30 0...
2020-11-14 21:24:08
181
原创 复习系列 - C语言常见关键字(保留字)
C语言关键字类型还蛮多的,最近复习C语言基础知识,梳理一下。比较适合有基础的看,包含auto/extern/register/static/volatile/char/int/short/long/float/double/signed/unsigned/unsigned/void/const/while/do/for/switch/break/continue/case/default/if/else/goto/return/sizeof/struct/typedef/union/enum 具体如下
2020-11-14 21:03:14
587
原创 windows 环境下搭建MQTT服务器(详细)
一、序言二、参考链接三、工具下载四、安装及环境配置五、注意事项一、序言参考了网上的文档,发现好多写的不够详细,那就自己记录一下吧,为后来人提供方便,也省得自己以后如果再用还要再去翻,并且记录下自己遇到的一些坑。二、参考链接https://blog.youkuaiyun.com/yannanxiu/article/details/52703946 //参考了这个MQTT服务器搭建流程发现需要JDK环境,于是又去搜了下面这个讲JDK的链接https://www.cnblogs.com/zhangzhixi
2020-11-05 13:43:34
7379
3
原创 AT+CPSMS/AT+CEDRXS - NB网络PSM 和 eDRX配置参数说明
一、前提条件NB-IoT节电 目前有两种模式,EDRX模式和PSM模式模式的决定由APN决定。Cmnbiot1/2/3/4/5/6 这六个APN 已经由核心网决定好。终端无法更改,开卡时已经决定。Cmnbiot这个APN 是终端可配置PSM和EDRX的时间。二、PSM时间配置配置的命令不同模组AT命令不一样,在对应的AT命令里有,但是参数的代表意义是一样的 其中T3324和T3412 两个参数都是八位二进制数,代表的意义如下T3324其中。目前实网T3412最低可设置54min,配置示
2020-08-24 19:16:44
6853
转载 PaaS、SaaS、IaaS三种模式的区别
转载自:https://blog.youkuaiyun.com/EchoYY/article/details/78304494?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.
2020-07-29 09:22:56
312
原创 AT+CGACT激活网络报错说明
目前中移的模组在数据传输的前提是CGACT?返回状态必须为1,1 后才能进行数据传输,当然有的模组是不需要手动激活的,例如:RDA8955芯片,激活与否需要仔细阅读手册的驻网说明或者咨询相关人士! 下面对AT+CGACT=1,1指令出错的情况进行说明!一、CGACT激活网络 报错ERROR:3我们找到了一个能CGACT激活网络和一个报错ERROR:3的情况进行了对比,详细情况如下图1:使用AT+CGACT=1,1激活网络报错ERROR:3图2:使用AT+CGACT=1,1激活网络后返回OK激活成功
2020-07-27 11:12:10
10342
原创 RT-Thread事件集原理与函数说明及代码示例
1、 事件集原理事件集主要用于线程间同步,主要的构成是由一个32位的无符号整形的某位来进行事件接收与发送,它的特点是可以一对一、一对多、多对一,举个B站的例子:当前你在公交站等车,今天只有一辆公交车等够让你到达目的地,这是一对一;这时条件变了,今天能让你到达目的地又加了一辆,有两辆公交车能让你到达目的地,这是一对多;多对一的情况就是你只有等到了你的朋友,你俩只有在公交站碰头之后才能坐上这辆公交车...
2020-04-22 00:24:47
1656
原创 RT-Thread互斥量原理说明及使用示例
1、互斥量原理互斥量也叫互斥锁,和信号量的原理类似,但是不同于优先级和抢断机制。想了一个互斥量原理的例子感觉挺有道理的,这时候你去卫生间,进去后需要把门从里面关上(不关的不算哈- -),你就持有了当前卫生间的所有权,别人都不能再进来,这时候你就拥有了互斥量。当你解决完出来后把门打开,这时候你就把互斥量释放了。这个过程就是获取和释放互斥量。互斥量在你拥有的过程不会被中断机制影响,并且当你进入卫生...
2020-04-20 23:39:25
1889
原创 RT-Thread信号量使用方法说明及代码示例
信号量的作用信号量主要用作线程间的同步及互斥,信号量的获取不能在ISR中调用,会导致中断挂起,系统不能有效的进行线程切换及运行。信号量分为动态创建信号量和静态创建信号量,当创建信号量时系统会初始化IPC以及与semaphone相关的部分。在创建信号量指定的参数过程中,flag参数定义FIFO时,信号量采取先入先出的方式,定义为IPRO时,信号量采取优先级的方式,优先级高的线程将先获得等待的信号量...
2020-04-17 12:59:28
1920
2
原创 RT-Thread临界区和临界资源
1、临界区和临界资源概念临界区是用于保护线程之间调用互斥的机制,主要是为了保护线程内的资源不会被其他线程抢占。临界资源时临界区内的代码。2、实现临界资源的几种方式调度器锁、中断、信号量、互斥量调度器锁主要是控制调度器的运行状态,进入临界区后则其他线程不能访问,但是会被中断打断,需要考虑使用后是否会被其他中断所影响。void rt_enter_critical(void); /* 进...
2020-04-17 02:48:25
1020
原创 RT-Thread嵌入式系统关于rt_malloc、rt_calloc、re_tree函数说明及动态内存堆的使用
在使用堆内存前,必须要在系统初始化的时候进行堆内存的初始化,函数为void rt_system_heap_init(void *begin_addr,void *end_addr) 注:这个函数会把begin_addr和end_addr作为堆空间来用。参数 描述begin_addr 堆内存的起始地址end_addr 堆内存的...
2020-04-15 22:09:17
6836
1
原创 RT-Thread源代码根目录详细说明
我从RT-Thread的GitHub官网上面下载了3.1.2的内核源码,下载链接如下https://github.com/RT-Thread/rt-thread/tags解压出压缩包后发现主目录下有很多文件下,查阅了一些资料后才搞明白,特将目录层级说明如下:目录说明github打开里面只有一个readme文件,可以删除;bsp顾明思议,是包含了很多平台的扳级支持...
2020-04-14 19:17:38
1473
原创 RT-Thread线程的使用
1、动态创建和静态创建线程区别说明RT-Thread创建线程分为两种方式,一种是动态创建线程,一种静态创建线程,在不加外部RAM的情况下,两种创建方式效率相同,如果加了外部RAM,则静态创建线程效率高一些。为什么创建静态线程不用外部RAM而创建动态线程用外部RAM?当用户将变量定义到文件或函数内部而不指定地址时,默认使用内部RAM,而创建静态线程将栈空间的大小提前在文件或函数中定义好的,所以不...
2020-04-13 16:29:48
838
原创 RT-Thread背景知识普及 — 入门篇
2011年1月发布了0.4版本,是国内开源免费嵌入式操作系统,由熊谱翔先生带领并集合社区合制而成。该操作系统支持主流的编译工具GCC、keil、IAR等,工具链比较完善,支持各类标准接口,如POSIX、CMSIS、C++应用环境、JavaScript执行环境,方便开发者移植各类应用程序。商用支持所有主流CPU架构,如ARM Cortex-M, MIPS, X86, Xtensa, C-Sky, R...
2020-04-12 21:11:18
301
原创 高德地图轨迹回放、点的弹跳效果、浏览器环境监测、设置地图的主题样式、GPS坐标转为高德坐标、地图加载提示、地图DOM事件、修改图层等API接口
1、轨迹回放https://lbs.amap.com/api/javascript-api/example/marker/replaying-historical-running-data2、点的弹跳效果https://lbs.amap.com/api/javascript-api/example/marker/set-marker-bouncing3、浏览器环境监测https://lb...
2020-01-20 09:22:27
722
原创 通信芯片中常见术语描述中文解释
术语 英文描述/中文翻译ARP -Antenna Reference Point //天线参考点BER -Bit Error Rate//比特误码率BTS -Base Transceiver Station//基站收发台CHAP -Challenge Handshake Authentication Protocol//询问握手认证协议CS -Coding Scheme//...
2019-11-26 18:25:47
1400
原创 北京五环地区高德地图取坐标(gps)点
var lineArr = [[116.212034,39.933657],[116.212184,39.924936],[116.211004,39.912758], [116.211369,39.890684],[116.208215,39.881908],[116.207786,39.878565], [116.208086,39.876095],...
2019-09-25 10:35:30
3584
转载 GCC 编译器 -o1 -o2 -o3 -os 优化选项解释
参考链接https://blog.youkuaiyun.com/zhangzq86/article/details/80840927
2019-07-10 10:41:45
2037
转载 NB-IOT 低功耗功能 PSM和EDRX模式
https://blog.youkuaiyun.com/qq_43359106/article/details/83062627
2019-07-08 14:37:30
1158
转载 NB-IOT基础知识详解
通常,我们把物联网设备分为三类:①无需移动性,大数据量(上行),需较宽频段,比如城市监控摄像头。②移动性强,需执行频繁切换,小数据量,比如车队追踪管理。③无需移动性,小数据量,对时延不敏感,比如智能抄表。NB-IoT正是为了应对第③种物联网设备而生。NB-IoT源起于现阶段物联网的以下几大需求:1.jpg•覆盖增强(增强20dB)•支持大规模连接,100K终端/200KHz小区•...
2019-06-28 18:27:09
6473
原创 M5310A模组与onenet平台通信流程详解
M5310A与onenet平台通信AT指令流程,我将流程放在了上面,有一部分注意事项以及AT指令解释写在流程下面。1、上电检查AT //判断模组是否上电开机成功AT+CSQ //信号质量检查AT+CEREG? //判断 PS 域附着状态,标识位返回 1 或 5 表示附着正常AT+CGATT? //检查模组 PS 附着状态2、M5310-A 模组侧设备创建、...
2019-05-31 16:06:55
4923
原创 AT+COPS
查了下CPSMS 看到了COPS发现手册里面没有这个指令的说明,那就研究一下AT+COPS?+COPS: >mode<,>format<,>oper<,>AcT<OKmode:0 自动(忽略字段)1 手动(字段应存在,可选择)2 从网络注销3 只设置<格式>(对于读命令+ COPS?),不要尝试注册/注销(和字段被忽略);...
2019-05-29 14:45:39
11306
原创 RDA 8908、8909系列芯片发送短信的AT指令AT+CMGF=1,AT+CMGS=”1064899990000”。
AT+CMGF=n 用来发送短信是以PDU模式还是以文本格式n = 0/1 0位PDU模式,1为文本格式AT+CMGS=>da<[,>toda<]>CR<text is entered 用来发送短信>da< 3G TS 23.040 [3] TP-Destination-Address - Address-Value字段,字符串格式;将...
2019-05-24 14:33:22
5185
原创 AT指令EGMR-修改设备的IMEI号码
AT+EGMR 读和写IMEI号码AT+EGRM=2,7 读IMEI号AT+EGRM=1,7,"***************" 写IMEI号查询IMEI的其他指令AT+CGSN=1IMEI号码解释说明国际移动设备识别码(International Mobile Equipment Identity,IMEI),即通常所说的手机序列号、手机“串号”,用于在移动电话...
2019-05-23 15:26:51
11797
原创 AT指令CGATT、CGACT
AT+CGATT?响应:+CGATT:nn=0 去附着网络n=1 已附着网络AT+CGATT = 0 可以分离GPRS 但保留GSMAT+CGATT = 1 一般注册上运营商,附着GPRS都是自动进行的,CGATT可以手动去附着网络...
2019-05-22 17:36:40
28623
原创 AT指令集 CREG、CGREG、CEREG
使用CREG时遇到问题昨天使用AT指令查询小区ID还没有问题三个指令的说明CREG 是所有针对 网络注册信息CGREG 是针对GPRS的网络注册信息CEREG 可以认为是针对LTE网络的注册信息使用方法设置AT+CREG=2后使用AT+CREG?命令响应(Response): +CREG:,[,,]参数说明:0 : 禁止网络注册主动提供结果代码(默认设置)1 : 允许网...
2019-05-22 14:54:58
62349
8
转载 ioctl操作与接口函数
传统上ioctl函数是用于那些普遍使用,但不适合归入其他类别的任何特性的系统接 口。Posix去掉了ioctl,它通过创建特殊的其功能已被Posix标准化的包裹函数来代替ioctl。这一章介绍和网络 编程有关的ioctl操作。ioctl函数int ioctl(int d, int request, …);和网络有关的ioctl请求有6类:套接口操作文件操作接口操作ARP高速缓存...
2018-10-13 09:52:52
814
翻译 关于TCP三次握手和四次挥手(**经典**)
TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一。很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答。本篇尝试使用动画来对这个知识点进行讲解,期望读者们可以更加简单地地理解TCP交互的本质。TCP 三次握手TCP 三次握手就好比两个人在街上隔着50米看见了对方,但是因为雾霾等原因不能100%确认,所以要通过招手的方式相互确定对方是否认识自己。张三首先向李四招...
2018-10-11 13:29:24
211
原创 c语言 指针数组和数组指针之间地址的区别。
只涉及到表面含义,供大家参考!先把图片摆上!! 咱们先一点一点理解,大家看到定义了两个不同的指针类型,一个是char一个是int主要是体现在后面解释的元素地址加一的区别。1、初始化 指针数组 char *p[10]={NULL}; NULL外面加上大括号是因为它是包含了10个char型元素的数组。数组指针 int *(q)[10]=NULL; 因为它是一个数组指针,...
2018-09-06 22:32:59
5039
1
xy_tool.rar
2020-11-13
数据包协议格式大全 TCP、UDP、伪头部、ICMP、ARP、链路封包、协议类型、OSI、TCPIP、TCP状态、CoAP、code协议说明
2020-10-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人