0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享的几个小的代码片段

电子工程师 来源:嵌入式大杂烩 作者:杂烩君 2022-07-29 09:25 次阅读

获取CPU温度

应用可以定时获取CPU的温度,比如程序异常崩溃时,我们可能需要分析多方面原因,CPU温度就是其中之一。

代码:

左右滑动查看全部代码>>>

#include
#include
#include
#include
#include

#defineCPU_TEMP_FILE0"/sys/devices/virtual/thermal/thermal_zone0/temp"

structcpu_temperature
{
intinteger_part;
intdecimal_part;
};

typedefstructcpu_temperaturecpu_temperature_t;

cpu_temperature_tget_cpu_temperature(constchar*_cpu_temp_file)
{
FILE*fp=NULL;
cpu_temperature_tcpu_temperature={0};
inttemp=0;

fp=fopen(_cpu_temp_file,"r");
if(NULL==fp)
{
printf("fopenfileerror
");
returncpu_temperature;
}

fscanf(fp,"%d",&temp);
cpu_temperature.integer_part=temp/1000;
cpu_temperature.decimal_part=temp%1000/100;

fclose(fp);

returncpu_temperature;
}


intmain(intarc,char*argv[])
{
cpu_temperature_tcpu_temperature={0};

cpu_temperature=get_cpu_temperature(CPU_TEMP_FILE0);
printf("cpu_temperature=%d.%d℃
",cpu_temperature.integer_part,cpu_temperature.decimal_part);
return0;
}

运行结果:

a9521a68-0e89-11ed-ba43-dac502259ad0.png

获取文件大小

有时候我们需要获取某个文件的大小,比如如果需要发送文件里的内容,则需要知道文件的大小。

代码:

左右滑动查看全部代码>>>

#include
#include
#include

longget_file_size(constchar*_file_name)
{
FILE*fp=fopen(_file_name,"r");
if(NULL==fp)
{
printf("fopenerror
");
return-1;
}

fseek(fp,0L,SEEK_END);
longsize=ftell(fp);
fclose(fp);

returnsize;
}

intmain()
{
#defineFILE_NAME"./get_file_size"
longfile_size=get_file_size(FILE_NAME);
printf("file_size=%ld
",file_size);

return0;
}

运行结果:

a962c8ea-0e89-11ed-ba43-dac502259ad0.png

获取时间戳

系统时间戳很常用,比如log输出时,可以附带时间戳数据,方便分析。

代码:

左右滑动查看全部代码>>>

#include
#include
#include
#include
#include
#include
#include

longlongget_sys_time_ms(void)
{
longlongtime_ms=0;
structtimevalsys_current_time;

gettimeofday(&sys_current_time,NULL);
time_ms=((longlong)sys_current_time.tv_sec*1000000+sys_current_time.tv_usec)/1000;

returntime_ms;
}

intmain(intarc,char*argv[])
{
longlongcur_sys_time=get_sys_time_ms();

printf("cur_sys_time=%lldms
",cur_sys_time);

return0;
}

运行结果:

a9725c24-0e89-11ed-ba43-dac502259ad0.png

获取MAC

MAC地址,有时候会作为设备ID实用,作为设备唯一标识。

代码:

左右滑动查看全部代码>>>

#include
#include
#include
#include
#include
#include

intget_netif_mac(constchar*_ifr_name,uint8_t*_mac)
{
int32_tret=-1;
structifreqm_ifreq;
int32_tsock=0;

sock=socket(AF_INET,SOCK_STREAM,0);
if(sock< 0)
{
printf("socketerr
");
gotoerr;
}

strcpy(m_ifreq.ifr_name,_ifr_name);

ret=ioctl(sock,SIOCGIFHWADDR,&m_ifreq);
if(ret< 0)
{
printf("ioctlerr:%d
",ret);
gotoerr;
}

snprintf((char*)_mac,32,"%02x%02x%02x%02x%02x%02x",(uint8_t)m_ifreq.ifr_hwaddr.sa_data[0],
(uint8_t)m_ifreq.ifr_hwaddr.sa_data[1],
(uint8_t)m_ifreq.ifr_hwaddr.sa_data[2],
(uint8_t)m_ifreq.ifr_hwaddr.sa_data[3],
(uint8_t)m_ifreq.ifr_hwaddr.sa_data[4],
(uint8_t)m_ifreq.ifr_hwaddr.sa_data[5]);

return0;
err:
return-1;
}


intmain(intargc,char**argv)
{
charmac_str[32]={0};
get_netif_mac("wlan1",mac_str);
printf("mac=%s
",mac_str);

return0;
}

运行结果:

a981671e-0e89-11ed-ba43-dac502259ad0.png

获取IP

有时候需要获取本机IP进行显示。

代码:

左右滑动查看全部代码>>>

#include
#include
#include
#include
#include
#include

intget_local_ip(constchar*_ifr_name,char*_ip)
{
intret=-1;
intsockfd;
structsockaddr_insin;
structifreqifr;

sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(-1==sockfd)
{
printf("socketerror
");
returnret;
}

strncpy(ifr.ifr_name,_ifr_name,IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ-1]=0;

if(ioctl(sockfd,SIOCGIFADDR,&ifr)< 0)
{
printf("ioctlerror
");
close(sockfd);
returnret;
}

memcpy(&sin,&ifr.ifr_addr,sizeof(sin));
intip_len=snprintf(_ip,32,"%s",inet_ntoa(sin.sin_addr));

close(sockfd);
ret=ip_len;

returnret;
}

intmain(intargc,char**argv)
{
charip_str[32]={0};
get_local_ip("wlan1",ip_str);
printf("ip=%s
",ip_str);

return0;
}

运行结果:

a992103c-0e89-11ed-ba43-dac502259ad0.png

以上就是本次分享的几个小的代码片段。

如果觉得文章有帮助,麻烦帮忙转发,谢谢!

审核编辑:汤梓红


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10446

    浏览量

    206574
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66784

原文标题:分享几个实用的代码片段(附代码例子)

文章出处:【微信号:嵌入式与Linux那些事,微信公众号:嵌入式与Linux那些事】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【DIY扫地机器人】第四篇----动起来,动起来

    把它做成六棱柱,于是又狠狠赚了一笔,后来又有人在一端加上个橡皮头,这个人又狠狠赚了一笔。。。。。。希望我的小车加桑抹布,也能狠狠赚一笔,嘎嘎嘎。看几个代码片段,外部中断红外解码的控制小车行动的,主函数
    发表于 03-18 18:03

    GoldWave如何裁剪音乐片段

    GoldWave(http://www.goldwave.cc/)是一款非常优秀的音乐编辑软件,我们可以使用该软件做出各种声音,下面就跟大家分享一下我们做铃声的时候经常用GoldWave裁剪音乐片段
    发表于 12-20 16:59

    请问我可以学习任何USAT汇编代码片段来获得USTAR1的运行吗?

    嗨,伙计们,对于PIC32 MX460我可以学习任何USAT汇编代码片段来获得USTAR1的运行吗?请让我知道。谢谢大家,祝你们有美好的一天。Pete: 以上来自于百度翻译 以下为原文 Hi
    发表于 06-19 10:05

    求提供一个使用IOBUF原语的小型VHDL代码片段

    嗨,有人可以为我提供一个使用IOBUF原语的小型VHDL代码片段。带着敬意vjose2以上来自于谷歌翻译以下为原文Hi , Can someone provide me with an small
    发表于 06-27 09:01

    在RT-Thread studio中Codeexpander代码片段软件不起作用是什么原因

    不知道有没有人使用Codeexpander代码片段管理软件,在VScode、keil中,都可以使用,给自己写好的代码片段设置一个快捷键比如sthread,就可以直接输入自己编写的thr
    发表于 08-30 14:20

    在RT-Thread studio中Codeexpander代码片段软件不起作用是何原因?

    不知道有没有人使用Codeexpander代码片段管理软件,在VScode、keil中,都可以使用,给自己写好的代码片段设置一个快捷键比如sthread,就可以直接输入自己编写的thr
    发表于 02-10 14:21

    为ESP8266编写一个TCP服务器程序,无法找到要在我的程序中声明的正确包含文件是怎么回事?

    我正在尝试为 ESP8266 编写一个 TCP 服务器程序,并且我正在按照 ESP8266 RTOS SDK 1.4.0 编程指南进行操作。该指南提供了几个代码片段,关于简单的 TCP 套接字,它们
    发表于 06-12 07:13

    DNA片段拼接中的预归并重复序列屏蔽方法

    针对DNA 片段拼接中的重复序列识别及屏蔽问题,提出一种预归并重复序列屏蔽方法。在片段拼接前通过扫描子串标识出可能存在重叠关系的shotgun 片段,利用子串归并该相关片段
    发表于 03-21 15:47 25次下载

    一种改进的音频点播系统BT片段下载算法

    在基于BT协议片段选择算法的基础上,提出了一种分区域多线程片段下载算法,解决了音频点播系统实时播放的问题。该算法通过对文件片段进行区域划分,针对不同区域的片段按照其
    发表于 09-16 14:49 17次下载

    几个MiniGUI环境下的源代码

    几个MiniGUI环境下的源代码
    发表于 01-08 14:27 22次下载

    如何在原理图和PCB中创建代码片段

    在电路板设计中成功地将电路连接在电路板上,包括元器件和布线,关键在于元器件的设计。在原理图和PCB中创建两个匹配Snippets时,您需要为元器件创建独特的指示符。本文介绍了将两个原理图和PCB片段连接在一起的成功关键,从而重新使用电路,节省宝贵的时间和金钱。
    发表于 04-30 14:01 2246次阅读
    如何在原理图和PCB中创建<b class='flag-5'>代码</b><b class='flag-5'>片段</b>

    华为移动服务中接触卫士的代码片段

    简介 该项目是华为移动服务中接触卫士的代码片段,主要包括:密钥管理、蓝牙(BLE)任务管理、密钥文件分析、数据存储。本项目还提供了示例代码,为您展示如何在已集成Google Exposure
    发表于 04-13 09:45 5次下载

    20个解决日常问题的Python代码片段

    在本文中,将分享20 个 Python 代码片段,以帮助你应对日常编程挑战。你可能已经知道其中一些片段,但有些其他片段对你来说可能是新的。赶紧使用这些有用的 Python
    的头像 发表于 03-13 09:40 773次阅读

    30秒就能学会的代码片段

    今天给大家带来一些30秒就能学会的代码片段,这些代码潜力无限,蕴含了丰富的python编程思维,应用领域非常广泛,而且学起来非常简单。 1."二维列表" **解读:**根据给定的长和宽,以及初始值
    的头像 发表于 10-30 09:32 174次阅读
    30秒就能学会的<b class='flag-5'>代码</b><b class='flag-5'>片段</b>

    30秒就能学会的代码片段

    今天给大家带来一些30秒就能学会的代码片段,这些代码潜力无限,蕴含了丰富的python编程思维,应用领域非常广泛,而且学起来非常简单。 1."二维列表" **解读:**根据给定的长和宽,以及初始值
    的头像 发表于 10-31 15:22 201次阅读
    30秒就能学会的<b class='flag-5'>代码</b><b class='flag-5'>片段</b>