- 博客(53)
- 资源 (1)
- 收藏
- 关注
转载 结构体强制类型转换
在c语言中,结构体和int等类型一样,都是数据类型,其他类型怎么转换,结构体就怎么转换,没有特殊的地方。对于这个问题,可能想问的是这个吧。如果将一个结构体强制类型转换为另一个结构体(或者类型),那这个结构体的成员怎么样了。如果将一个结构体强制类型转换为另一个结构体(或者类型),那么这个结构体成员的数值又会是什么?假设定义两个结构体struct A1{int a;char b;};struct A2{char a;int b;};接着,用struct A1和struct A2定义
2021-06-29 09:15:15 5641
原创 linux系统中通过ioctl函数获取装置的ip地址和mask子网掩码
//使用man netdevice命令查看结构体由上图可以看到:ifr_addr的数据类型是 struct sockaddr,但是这个结构体已经废弃,故我们会将其强转成struct sockaddr_in 类型。uint32_t getIP_Mask(int ip,int en){ int addr; int sd; struct ifreq ireq; sd = socket(AF_INET, SOCK_DGRAM, 0); mem...
2021-06-28 15:23:36 1386
转载 Linux下使用ioctl获取本地接口IP
最近在ubuntu上写FTP服务器时封装了getlocalIP来获取本机IP,函数内部使用gethostname()获取主机名,使用gethostbyname()来获取主机IP列表,但是用该函数获取的ip绑定socket去使用connect方法时会失败,errno代码为22,invalid argument,打印输出获取的ip,发现获取的ip为127.0.1.1。经查询文档,gethostbyname()会去解析/etc/hosts文件来获取ip,查看该文件发现里面只有两行1.127.0.0.1 local
2021-06-28 14:51:20 744 1
转载 excel改变列的位置
转载:https://jingyan.baidu.com/article/636f38bb89be3bd6b846108a.html方法/步骤1:剪切法 如下图所示,要求将B列的内容调整到A列。 鼠标点击选中B列,点击鼠标右键,在弹出的菜单选项中点击选择【剪切】选项。 然后点击选中A列,点击鼠标右键,在弹出的菜单选项中点击选择【插入已剪切的单元格】选项。 通过以上操作,B列的内容就调整到了A列。 END 方法/步骤2:复制法 点击
2021-06-26 00:19:54 2252
转载 excel固定表格的前两行
打开Excel表格 如何标题是首行或者首列的设置方法 点击工具栏“视图”——点击冻结窗口下面的小三角形——选择“冻结首航”或者“冻结首列” 标题为首行时,选择冻结首行 标题为首列时,选择冻结首列 以下是首行为例。 冻结之后可以看到一条线,并且窗口已经被固定了 如何标题涉及多行或者多列,怎么设置呢? 选择标题下面的一行(或者右侧的一列) 点击工具栏“视图”——点击冻结窗口下面的小三角形——选择“冻结拆分窗格” 如果标题是列,方法同..
2021-06-26 00:17:38 3822
原创 word的操作快捷键
1、ctrl+d :打开字体对话框2、选中图片,按ctrl键,打开图片布局,可以修改图片位置。3、选中图片,使用ctrl+d,可以复制图片并排排列。
2021-06-23 15:16:11 386
原创 232串口线或者串口的简单测试
232串口:2口是收3口是发5口是GND1、测试串口线方法:1)将串口线连接电脑,安装好串口驱动2)打开串口调试工具,只需要设置好对应的的com号即可,波特率、校验位都不用设置。3)在串口调试助手中发送报文 比如, 12 34 56 ,设置自动发送,时间间隔1000ms.4)将串口线的23 口短接5)通过串口调试助手中查看,会有接收到3)步骤中发送的报文,因为5口未接线的原因,接收到的报文可能与发送的报文有偏差。小结:只要发送的报文后,有接收到报文,则证明串口线是
2021-06-22 11:03:27 29103
转载 Linux几个调试宏_FUNCTION_ _TIME_ _LINE_ _FILE_ _DATA_
转载:https://blog.csdn.net/niepangu/article/details/50254427Linux几个调试宏 //前后都各有两条下划线__FUNCTION__ //显示所在函数名,为字符串__DATA__ //显示当前的日期,为字符串__TIME__ //显示当前时间,为字符串__LINE__ //显示当前代码所在第几行,为整型__FILE__ ...
2021-06-22 09:25:02 214
原创 GPS秒脉冲
-----来源于网络1PPS:秒脉冲(1Pulse Per Second)GPS秒脉冲信号 pps 一秒钟一个,它的作用是用来指示整秒的时刻,而该时刻通常是用PPS秒脉冲的上升沿来标示。因为GPS可以给出UTC时间,但用户收到时是会有延时的,那么为了精确授时,引入PPS信号上升沿来标示UTC的整秒时刻,精度可以到纳秒级,而且没有累积误差。...
2021-06-22 09:02:18 7570
转载 MATLAB快速傅里叶变换(fft)函数详解
转载:https://blog.csdn.net/me4weizhen/article/details/53688848定义:The 'i' in the 'Nth root of unity' 是虚数单位调用:1. Y = fft(y);2. Y = fft(y,N);式中,y是序列,Y是序列的快速傅里叶变换。y可以是一向量或矩阵,若y为向量,则Y是y的FFT,并且与y具有相同的长度。若y为一矩阵,则Y是对矩阵的每一列向量进行FFT。说明:1. 函数fft...
2021-06-21 19:58:17 40460 1
原创 matlab脚本语法总结
1、语句前使用% 用来注释;2、有使用if 、elseif、else进行条件分支,需要使用end结尾for ,while也需要使用end结尾。for的两种形式:1)for i = 1 :3表示i从1开始步长为1,终点为3进行迭代,i的值依次为1,2,32)步长可以手动设置,步长可以为负数,for i = -1 : -1:-3表示i从1开始,步长为-1,终点为-3进行迭代,i的值依次为-1,-2,-33、zeros()B=zeros(n):生成n×n全零阵>>
2021-06-21 19:50:49 807
转载 网络编程(9)内存对齐对跨平台通讯的影响
内存对齐存在的意义之一是为了减少访问次数,通过以空间换效率的方式提高性能。其特性在相同平台的网络通讯中是没有影响的。但在跨平台中传输结构体(或联合)时,则这个特性有可能会影响到数据的准确性。原因之一是自定义网络通讯协议包通常都是定义成struct的形式,而struct会自动内存对齐,这会造成结构体成员间有"空洞",传给其它平台后,其它平台弄不清楚原平台是按什么方式对齐的,只会按自己的方式解包。解出来的结果有可能是错误的。 防止这种情况出现需要,在自定义通讯协议时,一定要让结构体(或联合)成员间...
2021-06-20 16:53:02 283
原创 通过两台交换机级联来连接多台设备
1、情形:有多根网线,网线长度都较短;而4台装置的位置是固定的;但我们有多台交换机2、解决方法:我们使用交换机将多根短网线拼接在一起。ps:1)实际应用中,中间那根网线,我们用光纤替换,因为实际应用中,这根线的距离很长,我们用光纤替代。2)以上结构的存在一个很大的问题:100网段的两台机器相互通信;200网段的两台机器相互通信;都是通过中间的这根光纤(网线)通信,如果中间的这根光纤断开,则这两对设备都通信都中断了。所以,最理想的解决方案,是不要交换机,而是...
2021-06-18 09:59:44 6970
原创 笔记本通过无线网络访问台式机服务器
环境:台式机作为服务器,笔记本远程访问台式机。环境搭建步骤:1、台式机使用网线连接无线路由器的网口; 注意:台式机需2、
2021-06-17 16:56:24 3063
转载 socket 编程下 inet_ntoa() 函数的使用与注意事项
函数声明:char *inet_ntoa (struct in_addr); 返回点分十进制的字符串在静态内存中的指针。 所在头文件:<arpa/inet.h> //end linux 下 函数功能:将网络地址转换成“.”点隔的字符串格式现在我们很幸运,因为我们有很多的函数来方便地操作 IP 地址。没有必要用手工计算它们,也没有必要用"<<"操作来储存成长整字型。首先,假设你已经有了一个sockaddr_in结构体ina,你有一个IP地址"132...
2021-06-16 10:22:00 704
原创 socket编程中字节序、对齐和数据类型问题
1、字节序问题2、对齐问题系统默认是对齐的。//32位机上占的是4+4+4=12个字节struct stu{ int age; float higth; char sex;};//32位机上占的是4+4+4+4=16个字节struct stu{ int age; char name; float higth; char sex;};//32位机上占的是4+4+4=12个字节struct stu{ int ag
2021-06-15 21:21:55 573
原创 消息队列用于线程间通信
我们知道,消息队列是进程间通信的方法之一,当然,消息队列也可以用于线程间通信。进程间通信的时候,我们需要使用ftok()函数创建同一个key值,线程间通信时,我们可以
2021-06-14 23:03:59 2346
转载 IP地址的两种表示方法:整数和点分十进制
P地址有两种表示方法:整数和点分十进制`从下面的例子可以看出,整数1945097072和115.239.211.112表示的是同一个地址
2021-06-14 21:44:22 4079
原创 电B码是有正负的
由于程序设计过程中需要用到GPS对时,接的是电B码。程序设计上,是需要先对上时,程序才会运行。问题:一直无法对时。原因:电B码的正负接反了。
2021-06-13 12:57:16 2176
原创 centos7设置屏幕保护
参考:https://blog.csdn.net/xulei16ahau/article/details/108804828
2021-06-13 12:05:54 2597
转载 修改Ubuntu默认Shell
奇怪的错误在linux下的shell脚本中,第一行一般会指明该脚本的执行程序名,以便为该脚本拥有执行权限时可以通过脚本名直接运行。我在控制台上一般通过 sh 命令执行shell脚本,如sh xxx.sh;所以有次我新建一个shell脚本时,脚本第一行写的是#!/bin/sh,如下所示:————————————————版权声明:本文为CSDN博主「beikejinmiao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.cs.
2021-06-09 11:23:55 3919
转载 修改系统默认shell为bash
比如如果你安装了最近很火的fish shell那怎么样设置成为系统的默认shell呢。首先你得查看可以用的shell:1.命令:chsh -l ,结果如下:/bin/sh/bin/bash/sbin/nologin/usr/bin/sh/usr/bin/bash/usr/sbin/nologin/usr/bin/fish2.设置默认shellchsh -s /usr/bin/fish输入管理员密码就可以了然后查看一下没有设置到成功grep 用户名 /etc/passw
2021-06-09 11:20:27 3337
原创 执行进程命令带./的总结
我们有时候执行进程的时候,会习惯性的在进程名前添加./形如./test.sh但是,要明确./表示的是当前目录下,所以,使用./一定要保证该进程在当前进程。问
2021-06-09 11:15:54 741
原创 通过强制类型转换获取字符数组中的数据
char str[]={0x12,0x34}; uint16_t myValue = *(uint16_t*)str; printf("%4x\n",myValue); printf("%4x\n",ntohs(myValue)); fflush(stdout);
2021-06-07 16:27:15 261
原创 闰秒的理解
闰秒,也称作“跳秒”,是标准时刻增加或减少的1秒。有正闰秒和负闰秒两种。设置闰秒是为调整原子时与世界时由于地球自转不均匀而产生不同步的矛盾。最早引入闰秒是在1972年。安插闰秒的日期一般为6月30日和12月31日,也可于3月31日或9月30日,具体日期由国际标量局统一规定和发布。安插闰秒的时间是在规定日期的最后1秒。正闻秒在23时59分60秒后加1秒,即为次日的0时0分0秒;负闰秒在23时59分58秒后的1秒,便是次日0时0分0秒。...
2021-06-07 13:23:31 1210
原创 IPC(Inter-Process Communication)进程间通信总结
1、进程间通信分为:同一台主机上的进程间通信;不同主机上的进程间通信;2、
2021-06-06 15:37:27 649
转载 mmap映射区和shm共享内存的区别总结
linux中的两种共享内存。一种是我们的IPC通信System V版本的共享内存,另外的一种就是我们今天提到的存储映射I/O(mmap函数)在说mmap之前我们先说一下普通的读写文件的原理,进程调用read或是write后会陷入内核,因为这两个函数都是系统调用,进入系统调用后,内核开始读写文件,假设内核在读取文件,内核首先把文件读入自己的内核空间,读完之后进程在内核回归用户态,内核把读入内核内存的数据再copy进入进程的用户态内存空间。实际上我们同一份文件内容相当于读了两次,先读入内核空间,再从内核空间
2021-06-06 14:23:51 111
转载 Linux共享内存对象,shm_open,mmap
Linux共享内存对象概述linux下,每个进程都有自己拥有的内存区域,进程的内存总是私有的。共享内存是从系统的空闲内存池中分配的,希望访问它的每个进程连接它。这个连接过程称为映射。映射后,每个进程都可通过访问自己的内存而访问共享内存区域,从而与其他进程进行通信。如下图:————————————————版权声明:本文为CSDN博主「超爱琳先生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/xwc5834.
2021-06-06 14:04:53 877
原创 存储映射IO-mmap()和munmap()
mmap():所谓的存储映射IO是指将某一块内存或文件存储内容映射到当前进程中来。效果:进程中访问一段char* 类型就像访问那段内存一样。#include <sys
2021-06-06 11:06:55 475
转载 Linux 内存映射函数 mmap()函数详解
mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。mmap在用户空间映射调用系统中作用很大。头文件 <sys/mman.h>函数原型void* mmap(void* start,size_t length,int prot,int flags,int fd,off_t offset);int munmap(void* start,size_t length);mmap()[1] 必须以PAG...
2021-06-06 10:41:16 571
原创 Source Insight4.0的在整个工程中查找内容
1、双击选中要查找的内容2、ctrl + f 打开查找对话框3、选择Files选项4、勾选Project Wide选项(在工程内查找),点击 search 按钮5、在上方会有搜索的结果标签页
2021-06-05 19:13:32 5701
转载 source insight的查找功能
source insight是一款很好的c语言的程序编辑器,方便对project管理,方便程序的阅读和编辑。查找功能使用十分频繁,选项较多,与其它软件的查找功能也类似,下面对英文版的查找功能,做简单说明:查找参数:whole words only : 全字匹配查找case sensitive : 区分大小写project wide : 项目内查找include s...
2021-06-04 18:58:21 3228
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人