brug af date i C
Jeg er igang med at lave en opgave, hvori vi skal modtage en masse data på den serielle kanal, faktisk kommer der en pakke ind hvert 10 milisekund, og jeg skal lave et timestamp på hver af pakkerne, inden jeg gemmer dem.Jeg havde planlagt at bruge " date +%y%m%e%H%M%S%N%t " som er en native linux commando, jeg skal bruge værdierne som YYMMDDHHmmss og milisekunder til sidst, altså alt i alt 15 tegn.
Men hvordan indsætter jeg dem i min kode ?
Gode råd modtages gerne :-)
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <string.h>
#include <time.h>
#define BAUDRATE B38400
int conv[13];
int x,y;
char buf[40];
int main() {
int fd, ret;
struct termios newtio; // struct til seriel portens parametre (baud rate, paritets bit.....)
FILE *fp=NULL;
int counter=0, i=1;
char str[20];
// system("clear");
fd = open("/dev/tts/1", O_RDWR | O_NOCTTY);
if(fd < 0) {
printf("Unable to connect");
close(fd);
exit(0);
}
printf("\nconnected\n");
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR | ICRNL;
newtio.c_oflag = 0;
newtio.c_lflag = ICANON;
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &newtio);
sprintf(str, "data/%d", i);
while(1) {
// printf("\nVenter på data\n");
ret = read(fd, buf, 40);
buf[ret] = '\n';
// printf("\nbuf: %s, ret: %d\n", buf, ret);
if(ret == 27 && buf[0] == '0' && buf[25] == '3') {
fp = fopen(str, "a");
if(fp == NULL) printf("\nunable to open file");
x=0;
for(y=0; y<26; y++)
{
conv[y]=0;
if(buf[x] > 57 )
conv[y]=(buf[x]-55)<<4;
else
conv[y]=(buf[x]-48)<<4;
x++;
if(buf[x] > 57 )
conv[y]=conv[y]|(buf[x]-55);
else
conv[y]=conv[y]|(buf[x]-48);
x++;
}
fprintf(fp, "%03d%03d%03d%03d%03d%03d%03d%03d%03d%03d%03d%03d%03d\r\n",
conv[0],conv[1],conv[2],conv[3],conv[4],conv[5],conv[6],conv[7],conv[8],conv[9],conv[10],conv[11],con
v[12]);
fclose(fp);
counter++;
if(counter == 20) {
counter = 0;
sprintf(str, "data/%d", ++i);
}
}
}
close(fd);
}
som det er nu, komm der en pakke ind i asci HEX, de konverteres til heltal, og gemmes derefter.
Jeg ønsker at kunne gemme "date strengen" umiddelbart efter min datapakke.