0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取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

獲取文件大小

有時候我們需要獲取某個文件的大小,比如如果需要發(fā)送文件里的內容,則需要知道文件的大小。

代碼:

左右滑動查看全部代碼>>>

#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

獲取時間戳

系統(tǒng)時間戳很常用,比如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(sock0)
{
printf("socketerr
");
gotoerr;
}

strcpy(m_ifreq.ifr_name,_ifr_name);

ret=ioctl(sock,SIOCGIFHWADDR,&m_ifreq);
if(ret0)
{
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

以上就是本次分享的幾個小的代碼片段。

如果覺得文章有幫助,麻煩幫忙轉發(fā),謝謝!

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10870

    瀏覽量

    211896
  • 代碼
    +關注

    關注

    30

    文章

    4790

    瀏覽量

    68653

原文標題:分享幾個實用的代碼片段(附代碼例子)

文章出處:【微信號:嵌入式與Linux那些事,微信公眾號:嵌入式與Linux那些事】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【DIY掃地機器人】第四篇----動起來,動起來

    把它做成六棱柱,于是又狠狠賺了一筆,后來又有人在一端加上個橡皮頭,這個人又狠狠賺了一筆。。。。。。希望我的小車加桑抹布,也能狠狠賺一筆,嘎嘎嘎。看幾個代碼片段,外部中斷紅外解碼的控制小車行動的,主函數
    發(fā)表于 03-18 18:03

    GoldWave如何裁剪音樂片段

    GoldWave(http://www.goldwave.cc/)是一款非常優(yōu)秀的音樂編輯軟件,我們可以使用該軟件做出各種聲音,下面就跟大家分享一下我們做鈴聲的時候經常用GoldWave裁剪音樂片段
    發(fā)表于 12-20 16:59

    請問我可以學習任何USAT匯編代碼片段來獲得USTAR1的運行嗎?

    嗨,伙計們,對于PIC32 MX460我可以學習任何USAT匯編代碼片段來獲得USTAR1的運行嗎?請讓我知道。謝謝大家,祝你們有美好的一天。Pete: 以上來自于百度翻譯 以下為原文 Hi
    發(fā)表于 06-19 10:05

    求提供一個使用IOBUF原語的小型VHDL代碼片段

    嗨,有人可以為我提供一個使用IOBUF原語的小型VHDL代碼片段。帶著敬意vjose2以上來自于谷歌翻譯以下為原文Hi , Can someone provide me with an small
    發(fā)表于 06-27 09:01

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

    不知道有沒有人使用Codeexpander代碼片段管理軟件,在VScode、keil中,都可以使用,給自己寫好的代碼片段設置一個快捷鍵比如sthread,就可以直接輸入自己編寫的thr
    發(fā)表于 08-30 14:20

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

    不知道有沒有人使用Codeexpander代碼片段管理軟件,在VScode、keil中,都可以使用,給自己寫好的代碼片段設置一個快捷鍵比如sthread,就可以直接輸入自己編寫的thr
    發(fā)表于 02-10 14:21

    為ESP8266編寫一個TCP服務器程序,無法找到要在我的程序中聲明的正確包含文件是怎么回事?

    我正在嘗試為 ESP8266 編寫一個 TCP 服務器程序,并且我正在按照 ESP8266 RTOS SDK 1.4.0 編程指南進行操作。該指南提供了幾個代碼片段,關于簡單的 TCP 套接字,它們
    發(fā)表于 06-12 07:13

    幾個MiniGUI環(huán)境下的源代碼

    幾個MiniGUI環(huán)境下的源代碼
    發(fā)表于 01-08 14:27 ?22次下載

    如何在原理圖和PCB中創(chuàng)建代碼片段

    在電路板設計中成功地將電路連接在電路板上,包括元器件和布線,關鍵在于元器件的設計。在原理圖和PCB中創(chuàng)建兩個匹配Snippets時,您需要為元器件創(chuàng)建獨特的指示符。本文介紹了將兩個原理圖和PCB片段連接在一起的成功關鍵,從而重新使用電路,節(jié)省寶貴的時間和金錢。
    發(fā)表于 04-30 14:01 ?2632次閱讀
    如何在原理圖和PCB中創(chuàng)建<b class='flag-5'>代碼</b><b class='flag-5'>片段</b>

    華為移動服務中接觸衛(wèi)士的代碼片段

    簡介 該項目是華為移動服務中接觸衛(wèi)士的代碼片段,主要包括:密鑰管理、藍牙(BLE)任務管理、密鑰文件分析、數據存儲。本項目還提供了示例代碼,為您展示如何在已集成Google Exposure
    發(fā)表于 04-13 09:45 ?5次下載

    使用Arduino函數簡化代碼

    組織擴展代碼的一種出色技術是使用函數,即可以根據需要從程序的其他部分(例如通過主循環(huán))調用的代碼片段。
    的頭像 發(fā)表于 08-16 09:23 ?1931次閱讀
    使用Arduino函數簡化<b class='flag-5'>代碼</b>

    20個解決日常問題的Python代碼片段!

    在本文中,將分享20 個 Python 代碼片段,以幫助你應對日常編程挑戰(zhàn)。你可能已經知道其中一些片段,但有些其他片段對你來說可能是新的。趕緊使用這些有用的 Python
    的頭像 發(fā)表于 03-13 09:40 ?1005次閱讀

    30秒就能學會的代碼片段

    今天給大家?guī)硪恍?0秒就能學會的代碼片段,這些代碼潛力無限,蘊含了豐富的python編程思維,應用領域非常廣泛,而且學起來非常簡單。 1."二維列表" **解讀:**根據給定的長和寬,以及初始值
    的頭像 發(fā)表于 10-31 15:22 ?799次閱讀
    30秒就能學會的<b class='flag-5'>代碼</b><b class='flag-5'>片段</b>

    RAG系統(tǒng)中答案無關片段對LLMs生成結果的影響分析

    與常見語義無關的答案無關片段相比,LLMs更容易受到高度語義相關的答案無關片段的影響;
    發(fā)表于 04-15 09:49 ?391次閱讀
    RAG系統(tǒng)中答案無關<b class='flag-5'>片段</b>對LLMs生成結果的影響分析

    C2000 DCSM ROM代碼片段/ROP漏洞

    電子發(fā)燒友網站提供《C2000 DCSM ROM代碼片段/ROP漏洞.pdf》資料免費下載
    發(fā)表于 08-28 09:39 ?0次下載
    C2000 DCSM ROM<b class='flag-5'>代碼</b><b class='flag-5'>片段</b>/ROP漏洞