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系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.