linux C按日期动态实时建文件夹按小时建文件继scanf相关

2024-05-09 19:58

本文主要是介绍linux C按日期动态实时建文件夹按小时建文件继scanf相关,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

效果:
按天建文件夹,按小时建文件
从串口读取库伦计的打印内容,过滤掉干扰字符后用scanf将关注的数字分离出来之后写入txt文件
matlab从txt文件中读入数据绘图分析

完整源码

#include <signal.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>#define PATH_TTYDEVICE "/dev/ttyUSB0"
#define	MAX_BUF_SIZE	100FILE *fp = NULL;
FILE *fp1 = NULL;void Stop(int signo) 
{fclose(fp1);printf("oop! stop!!!\n");_exit(0);
}int CreateDir(const char *sPathName)  {  char DirName[256];  strcpy(DirName, sPathName);  int i,len = strlen(DirName);for(i=1; i<len; i++)  {  if(DirName[i]=='/')  {  DirName[i] = 0; if(access(DirName, 0)!=0)  {  if(mkdir(DirName, 0755)==-1)  {   printf("mkdir   error\n");   return -1;   }  }  DirName[i] = '/';  }  }  return 0;  } int CreateFile(const char *path)  
{FILE *f;if(access(path, 0)!=0) {f = fopen(path, "w+");if( f == NULL) {printf("create file failed \r\n");return -1;}else {fclose(f);return 0;}}return -1;
}void getdate(char *date, char *hour)
{struct tm *my_tm;time_t t1;t1 = time(&t1);my_tm = localtime(&t1);sprintf(date, "%04d-%02d-%02d" ,my_tm->tm_year + 1900, my_tm->tm_mon + 1, my_tm->tm_mday);sprintf(hour, "%02d" ,my_tm->tm_hour);//printf("current my_tm : %04d-%02d-%02d %02d:%02d:%02d\n\r", my_tm->tm_year + 1900, my_tm->tm_mon + 1, my_tm->tm_mday,my_tm->tm_hour, my_tm->tm_min, my_tm->tm_sec );}void analyse(char *Buf)
{float v,c,w,t;char time[15];char *buf = Buf;/*skip letter just analyse number */while(1) {if (*buf >= '0' && *buf <= '9') {break;}buf++;}sscanf(buf,"%fV,%fA,%fAh,%s\r\n",&v,&c,&w,time);if (v>25.0) {v= 25.0;}if (c > 5.0) {c = 5.0;}if (w > 80.0) {w = 80.0;}fprintf(fp1, "%f %f %f\r\n",v,c,w);
}int main(int c, char *args[])
{char buf[MAX_BUF_SIZE];char path[20];int size,ret;int index=0;char date[30];char hour[3];signal(SIGINT, Stop);fp = fopen(PATH_TTYDEVICE, "r+");if (fp == NULL) {printf("failed: can not open tty device \r\n! ");return -1;}while(1) {memset(date,0,sizeof(date));memset(hour,0,sizeof(hour));getdate(date,hour);memset(path,0,sizeof(path));sprintf(path,"%s/",date);CreateDir(path);memset(path,0,sizeof(path));sprintf(path,"./%s/%s.txt",date,hour);ret = CreateFile(path);if (ret == 0 ) {if (fp1 != NULL) {fclose(fp1);}fp1 = fopen(path, "w+");if (fp1 == NULL) {printf("failed: can not open txt file to save the result! \r\n ");return -1;}}fseek(fp, 0, SEEK_SET);size = fread(buf+index, 1,1,fp);if (buf[index] != 0) {if(buf[index] == '\n') {if (index > 10) {printf("read from tty : \r\n");printf("%s\r\n", buf);analyse(buf);}index = -1;memset(buf, 0, MAX_BUF_SIZE);}index++;}}fclose(fp);fclose(fp1);_exit(0);
}

matlab M文件

%读取库仑计打印到txt中的数据进行绘图分析path = 'E:\VMWareShare\14.txt';
data=load(path);
V=data(:,1);
C=data(:,2);
W=data(:,3);

在这里插入图片描述

这篇关于linux C按日期动态实时建文件夹按小时建文件继scanf相关的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/974349

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中