现在位置: 首页 > 自动控制 > 文章
2018-12-29 20:55 工业·编程 ⁄ 共 548字 暂无评论
由于在linux中,内核空间和用户空间的内存是不能之间互相访问的,所以需要借助上面2个函数完成数据传输。    copy_to_user:从内核空间复制数据到用户空间    copy_from_user:从用户空间复制数据到内核空间。 在进行驱动相关程序设计时,经常会用到这两个函数,因为底层驱动显然是内核空间,调用驱动的是用户空间。 具体函数模型解释如下: unsigned long copy_to_user(void __user *to, const void *from, u...
阅读全文
2018-12-27 20:10 工业·编程 ⁄ 共 1217字 暂无评论
一、sizeof     sizeof(...)是运算符,而不是一个函数。     sizeof操作符的结果类型是size_t,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。     它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。     实际上,用size...
阅读全文
2018-12-25 19:59 工业·编程 ⁄ 共 1295字 暂无评论
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段。 它们的含义是: SYN表示建立连接, FIN表示关闭连接, ACK表示响应, PSH表示有 DATA数据传输, RST表示连接重置。 其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应, 如果只是单个的一个SYN,它表示的只是建立连接。 TCP的几次握手就是...
阅读全文
2018-12-24 19:55 工业·编程 ⁄ 共 2566字 暂无评论
Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。 list的类模板声明为 template<class T, class Allocator=allocator<T>>class list; 与vector相同,list中的元素可以使任意型别的T,必须具备可设置和可复制两个属性,包括int、double、string以及结构体或其他自定义的类型。 与vector的不同有如下几点: 1、list不支持随机读取 2、list的插入与删除操作非常...
阅读全文
2018-12-22 19:50 工业·编程 ⁄ 共 1896字 暂无评论
1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.push_back(a); (4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。 (5)使用迭代器访问元素. vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl; (6)插入元素:    vec.insert(vec.begin()+i,a);在第i+1个元素前面插...
阅读全文
2018-12-20 19:47 工业·编程 ⁄ 共 523字 暂无评论
粘包出现原因:在流传输中出现,UDP不会出现粘包,因为它有消息边界(参考Windows 网络编程) 1 发送端需要等缓冲区满才发送出去,造成粘包 2 接收方不及时接收缓冲区的包,造成多个包接收 解决办法: 为了避免粘包现象,可采取以下几种措施。 一是对于发送方引起的粘包现象,用户可通过编程设置来避免,TCP提供了强制数据立即传送的操作指令push,TCP软件收到该操作指令后,就立即将本段数据发送出去,而不必等待发送缓冲区满; ...
阅读全文
2018-12-17 19:43 工业·编程 ⁄ 共 4679字 暂无评论
一、Makefile的规则 在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则。 target ... : prerequisites ... command ... ... target也就是一个目标文件,可以是Object File,也可以是执行文件。 prerequisites就是,要生成那个target所需要的文件或是目标。 command也就是make需要执行的命令。(任意的Shell命令) 这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件...
阅读全文
2018-12-15 19:33 工业·编程 ⁄ 共 1192字 暂无评论
为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned 1. size_t是全局定义的类型;size_type是STL类中定义的类型属性,用以保存任意string和vector类对象的长度 2. string::size_type 类型一般就是unsigned int, 但是不同机器环境长度可能不同 win32 和win64上长度差别;size_type一般也是unsigned int 3. 使用的时候可以参考:    string::size_type  a =123;  &#...
阅读全文
2018-12-08 19:22 工业·编程 ⁄ 共 2593字 暂无评论
生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题;从生活中,可以抽象出队列的概念,队列就是一个能够实现“先进先出”的存储结构。队列分为链式队列和静态队列;静态队列一般用数组来实现,但此时的队列必须是循环队列,否则会造成巨大的内存浪费;链式队列是用链表来实现队列的。这里讲的是循环队列,首先我们必须明白下面几个问题。 一、循环队列的基础知识 1.循...
阅读全文
2018-12-06 19:17 工业·编程 ⁄ 共 15455字 暂无评论
FreeModbus协议栈作为从机,等待主机传送的数据,当从机接收到一帧完整的报文后,对报文进行解析,然后响应主机,发送报文给主机,实现主机和从机之间的通信。 1、初始化协议栈---eMBInit函数(mb.c中),以RTU为例 eMBErrorCode  eMBInit( eMBMode eMode, UCHAR ucSlaveAddress, UCHAR ucPort, ULONG ulBaudRate, eMBParity eParity ) { 1 /*函数功能:*1:实现RTU模式和ASCALL模式的协议栈初始化;*2:完成协议栈核心函数...
阅读全文