分享几个实用的代码片段(附代码例子)
文章下方附学习资源,自助领取
今天给大家分享几个实用的代码小片段。 获取CPU温度
应用可以定时获取CPU的温度,比如程序异常崩溃时,我们可能需要分析多方面原因,CPU温度就是其中之一。
代码:
左右滑动查看全部代码>>> #include #include #include #include #include #define CPU_TEMP_FILE0 "/sys/devices/virtual/thermal/thermal_zone0/temp" struct cpu_temperature { int integer_part; int decimal_part; }; typedef struct cpu_temperature cpu_temperature_t; cpu_temperature_t get_cpu_temperature(const char *_cpu_temp_file) { FILE *fp = NULL; cpu_temperature_t cpu_temperature = {0}; int temp = 0; fp = fopen(_cpu_temp_file, "r"); if (NULL == fp) { printf("fopen file error "); return cpu_temperature; } fscanf(fp, "%d", &temp); cpu_temperature.integer_part = temp / 1000; cpu_temperature.decimal_part = temp % 1000 / 100; fclose(fp); return cpu_temperature; } int main(int arc, char *argv[]) { cpu_temperature_t cpu_temperature = {0}; cpu_temperature = get_cpu_temperature(CPU_TEMP_FILE0); printf("cpu_temperature = %d.%d ", cpu_temperature.integer_part, cpu_temperature.decimal_part); return 0; }
运行结果:
获取文件大小
有时候我们需要获取某个文件的大小,比如,如果需要发送文件里的内容,则需要知道文件的大小。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
点击这里找小助理0元领取:嵌入式物联网学习资料(头条)
代码:
左右滑动查看全部代码>>> #include #include #include long get_file_size(const char *_file_name) { FILE * fp = fopen(_file_name, "r"); if (NULL == fp) { printf("fopen error "); return -1; } fseek(fp, 0L, SEEK_END); long size = ftell(fp); fclose(fp); return size; } int main() { #define FILE_NAME "./get_file_size" long file_size = get_file_size(FILE_NAME); printf("file_size = %ld ", file_size); return 0; }
运行结果:
获取时间戳
系统时间戳很常用,比如log输出时,可以附带时间戳数据,方便分析。
代码:
左右滑动查看全部代码>>> #include #include #include #include #include #include #include long long get_sys_time_ms(void) { long long time_ms = 0; struct timeval sys_current_time; gettimeofday(&sys_current_time, NULL); time_ms = ((long long)sys_current_time.tv_sec*1000000 + sys_current_time.tv_usec) / 1000; return time_ms; } int main(int arc, char *argv[]) { long long cur_sys_time = get_sys_time_ms(); printf("cur_sys_time = %lld ms ", cur_sys_time); return 0; }
运行结果: 获取MAC
MAC地址,有时候会作为设备ID实用,作为设备唯一标识。
代码:
左右滑动查看全部代码>>> #include #include #include #include #include #include int get_netif_mac(const char *_ifr_name, uint8_t *_mac) { int32_t ret = -1; struct ifreq m_ifreq; int32_t sock = 0; sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { printf("socket errr "); goto err; } strcpy(m_ifreq.ifr_name, _ifr_name); ret = ioctl(sock,SIOCGIFHWADDR, &m_ifreq); if (ret < 0) { printf("ioctl err:%dr ",ret); goto err; } 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]); return 0; err: return -1; } int main(int argc, char **argv) { char mac_str[32] = {0}; get_netif_mac("wlan1", mac_str); printf("mac = %s ", mac_str); return 0; }
运行结果:
获取IP
有时候需要获取本机IP进行显示。
代码:
左右滑动查看全部代码>>> #include #include #include #include #include #include int get_local_ip(const char *_ifr_name, char *_ip) { int ret = -1; int sockfd; struct sockaddr_in sin; struct ifreq ifr; sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (-1 == sockfd) { printf("socket error "); return ret; } strncpy(ifr.ifr_name, _ifr_name, IFNAMSIZ); ifr.ifr_name[IFNAMSIZ - 1] = 0; if (ioctl(sockfd, SIOCGIFADDR, &ifr) < 0) { printf("ioctl error "); close(sockfd); return ret; } memcpy(&sin, &ifr.ifr_addr, sizeof(sin)); int ip_len = snprintf(_ip, 32, "%s", inet_ntoa(sin.sin_addr)); close(sockfd); ret = ip_len; return ret; } int main(int argc, char **argv) { char ip_str[32] = {0}; get_local_ip("wlan1", ip_str); printf("ip = %s ", ip_str); return 0; }
运行结果:
以上就是本次分享的几个小的代码片段,如果觉得文章有帮助,麻烦帮忙转发,谢谢!
END
作者:杂烩君
来源:嵌入式大杂烩
本文转载自" 嵌入式微处理器",如有侵权,请联系删除
原文链接:分享几个实用的代码片段(附代码例子)
版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。
糖尿病降糖新药多格列艾汀,实测记录202321早餐6。20服用半片多格列艾汀片,早餐分二次食用了140克糯玉米和鸡蛋1个,7。16分先吃了糯玉米70克(净重),餐前血糖5。2,8。18分血糖现全天峰值9。1,8。23第二次吃了
加密货币揭秘比特币以太币莱特币瑞波币狗狗币是什么?让你从零开始了解数字货币!加密货币是当今互联网世界中备受关注的一个热门话题,而比特币以太币莱特币瑞波币和狗狗币则是最为人熟知的数字货币之一。这些数字货币在最近几年里得到了大量关注,
A股,8年一个牛市周期,今年,牛市会来吗?天下武功,唯快不破!但是炒股,要慢慢来,尤其是中国股市,长期在3000点上下徘徊,就算急死了太监,也得不到皇帝的怜悯。先前炒股的那批人,或已结婚生子,或已人到中年,或已满脸沧桑,而
倒贴百亿!刘强东又发狠了,一刀砍向拼多多本文由无冕财经(wumiancaijing)原创发布作者海棠葉编辑陈涧设计岚昇一场恶战,箭在弦上。2月21日,据36氪消息,京东将于3月8日正式上线百亿补贴频道,直接对标拼多多,目
2月22日要闻速览要闻速递重庆全年计划实施市级重点建设项目1146个项目数量首次破千新闻发布会现场。华龙网新重庆客户端记者张质摄在2月21日举行的重庆市进一步支持市场主体发展推动经济企稳恢复提振政策
凡事都有两面性事物都有两面性,而且这两面在不断的交替转化。比如说黑夜白昼,就是事物的两面性,不能分开,是同时存在的。天黑的过程,可以理解为就是天亮的过程,天亮的过程,就是下一个天黑的过程,像太阳
自热锅里的神奇大米,到底有多神奇?提到自热锅,就会想到,什么红烧牛肉黄焖鸡块梅菜扣肉卤肉饭鱼香肉丝广式川式腊肠等等。此刻,只有一个想法想吃可是,大家有没有过这样的一个疑问,平时咱在家蒸米饭,用压力锅那都得蒸上个半小
俄进步MS21货运飞船残骸坠入太平洋来源中国新闻网俄罗斯国家航天集团公司19日宣布,温控系统出现冷却剂泄漏的进步MS21货运飞船未燃尽残骸坠入太平洋。据俄国家航天集团公司官网消息,进步MS21货运飞船于19日脱离轨道
云南天文台立体观测到太阳暗条纵横双向振荡科技日报昆明2月19日电(记者赵汉斌)暗条是由悬浮在太阳大气中冷等离子体物质构成,表现为暗的吸收结构,其磁场信息对理解暗条的形成稳定和爆发具有至关重要的作用。近日,中国科学院云南天
数字技术赋能智慧城市管理,探营佛山版ChatGPT2月17日18日,以智慧运行管理,服务城市治理为主题的第六届中国(广东)智慧城市大会暨广东城市运行管理服务交流大会在佛山举行。会议云集全国有关智慧城市建设及城市运管服平台建设等方面
水星!史上最名不符实的行星,月球表示不服!相信知识的力量,我是山人阿努,咱们今天来聊水星!水星之所以叫水星,其实并不是因为它上面有水,甚至连一滴液态水都没有!水星在我国古代叫辰星,因为一般只有在早上五六点的时候才能观测到,