03-25-2011 01:01 AM
Hello,everyone!
I'm a newcomer in the LabWindows/CVI group.
I want to save the datas through serial port automaticly in a .txt file Using CVI. Such as these datas in the following QQ
sectional drawing.
This problem has obsessed me some days.
Is there anyone who has a readymade CVI code that saves the datas automaticly in a .txt file Using CVI ?
Thank you very much for your help !
Solved! Go to Solution.
03-25-2011 06:25 AM
Hello!
A couple of questions.
What speed are going to use the serial port?
The information required stored in any specific order?
Previous to evaluate the best data management strategy.
What is a QQ sectional drawing?
03-27-2011 10:41 PM
Thank you for Acm's reply!
The speed I am going to use is 9600 bit/s.
Although the information required sored could be in any specific order, I want the order is CO2,O2,Temperature,CO,Humidity,H2S,CH4.
QQ secticonal drawing is a image in my accessory.
Looking forward to your reply!
Thank you very much !
03-28-2011 01:46 AM
Hello,
I think you can do something like that:
(in bold modification for changing filename every day)
const char* dateString( void )
{
static char s[128];
time_t t1;
struct tm *t2;
t1 = time( &t1);
t2 = localtime(&t1);
sprintf(s,"%02d%03d",t2->tm_year,t2->tm_yday);
return s;
}
FILE* f;
char fname[128];
double co2,o2,temperature,co,humidity,h2s,ch4;
// here under, replace panelHandle, PANEL_CO2,PANEL_O2,...,PANEL_CH4 by your actual panel name and controls names
GetCtrlVal (panelHandle, PANEL_CO2, &co2);
GetCtrlVal (panelHandle, PANEL_O2, &o2);
GetCtrlVal (panelHandle, PANEL_TEMPERATURE, &temperature);
GetCtrlVal (panelHandle, PANEL_CO, &co);
GetCtrlVal (panelHandle, PANEL_HUMIDITY, &humidity);
GetCtrlVal (panelHandle, PANEL_H2S, &h2s);
GetCtrlVal (panelHandle, PANEL_CH4, &ch4);
sprintf(fname,"c:\\%s.log",dateString());
f = fopen (fname, "a+");
if( f != NULL )
{
fprintf(f,"%g,%g,%g,%g,%g,%g,%g\n",co2,o2,temperature,co,humidity,h2s,ch4);
fclose(f);
}
Regards.
B.Williot
03-28-2011 09:33 PM
Thanks a lot for your help ! It's very useful for me !
I add the time to it.
fprintf (f, "%s %s ",DateStr(),TimeStr());
It's very pretty.
Thank you very much !
I have anther question. Because of large amounts of datas,shall I save all these datas in this one file?
Regards.
xiepei.
03-29-2011 04:33 AM
Hello Xiepei,
I modify the code to change filename everyday.
Hope it will help you.
regards.
B.Williot
03-29-2011 09:05 PM
Hello B.Williot.
Thank you very much for your help.
I have been tried the code.It can't record the local time. See my attachment---fname.
I modify the code to display the time when it receive the datas.
if(countt<10)
countt++;
else
{
f = fopen ("yibiao.txt", "a+");
if( f != NULL )
{
fprintf (f, "%s %s ",DateStr(),TimeStr());
fprintf(f,"CO2 %g, O2 %g, temperature %g, CO %g,humidity %g, H2S %g, CH4 %g\n\n",CO2,O2,TEM,CO,HUM,H2S,CH4);
fclose(f);
}
countt=0;
}
It save the datas automacticly every ten seconds.See my attachment ---- yibiao.txt
03-29-2011 09:31 PM
Hello B.Williot.
I'm sorry .I could not add to the attchment.So I paste the records here.
fname
CO2 1, O2 19, temperature 4, CO 19,humidity 24, H2S 22, CH4 3
CO2 1, O2 19, temperature 4, CO 19,humidity 24, H2S 22, CH4 3
yibiao.txt
03-30-2011 9:23:07 CO2 1, O2 21, temperature 25,CO 20,humidity 32,H2S 19, CH4 2
03-30-2011 9:23:18 CO2 1, O2 21, temperature 25,CO 20,humidity 32,H2S 19, CH4 2
Now I want to try another method to save datas automaticly in excel based on CVI's SQL Tooklit.
Someone says I should use the database to save datas if I want to save large amounts of datas automacticly.
Can you help me? I don't know how to use CVI's SQL Tooklit. I hope you will give me some directions.
Looking forward to hearing from you.
Best wishes !
xiepei