![](/profiles/wavemetrics/themes/wavemetrics/logo.png)
Trouble with time wave
![](/sites/default/files/styles/thumbnail/public/default_images/Artboard%201_1.png?itok=jeHOCIXy)
chemgoof
The .txt time format is in am/pm (ex. 4:00 AM 4:01 AM... 4:00 PM). When I load using my function, it loads the times as the same regardless of am or pm. So 4:00 AM on 9/24 is seen the same as 4:00 PM (both loading as 04:00:00). I have attached a sample .txt and the code is below. The function is meant to load an entire folder so the .txt needs to be in its own folder to load. I have also sent this to the wavemetrics support. Any help is appreciated!
#pragma rtGlobals=3 // Use modern global access method and strict wave access. #pragma rtGlobals=3 // Use modern global access method and strict wave access. Menu "Weather" "Load Weather Data...", LoadWeatherFiles("") End Function LoadWeatherFile(pathName, fileName, makeTable) String pathName // Name of an Igor symbolic path or "". String fileName // Name of file or full path to file. Variable makeTable // 1 to make table, 0 to not make table // First get a valid reference to a file. if ((strlen(pathName)==0) || (strlen(fileName)==0)) // Display dialog looking for file. Variable refNum Open/D/R/F="*.txt"/P=$pathName refNum as fileName fileName = S_fileName // S_fileName is set by Open/D if (strlen(fileName) == 0) // User cancelled? return -1 endif endif // Now load the data. The /V flag specifies the accepted delimiters in the data file. // Add the /A flag if you don't want the "Loading Delimited Text" dialog. // Add the /O flag if you want to overwrite existing waves with the same names. // "Date" and "Time" are not available as wave names because they are Igor function names String columnInfoStr = " " columnInfoStr += "N='MET_TimeW',T=4;" columnInfoStr += "N='TimeW',F=7;" columnInfoStr += "N='Temp_C';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='Hum_Per';" columnInfoStr += "N='Dew_Pt_C';" columnInfoStr += "N='Wind_Speed';" columnInfoStr += "N='Wind_Dir',F=-2;" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='Wind_Chill_C';" columnInfoStr += "N='Heat_Index_C';" columnInfoStr += "N='THW_Index_C';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='Press_Bar';" columnInfoStr += "N='Precip_Inch';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" columnInfoStr += "N='_skip_';" String delimiters = "\t," // Tab and comma-delimited String skipChars = "\" " // Skip quotes around date and time and spaces before commas LoadWave /J /L={0,2,0,0,0}/D/N /K=0 /V={delimiters,skipChars,0,0} /B=columnInfoStr /R={English, 1, 2, 1, 1, "Month/DayofMonth/Year", 40} /P=$pathName fileName Variable numWavesLoaded = V_flag // V_flag is set by LoadWave if (numWavesLoaded != 12) Print "Error loading file - wrong number of waves loaded" return -1 endif // Create reference to waves created by LoadWave Wave MET_TimeW,TimeW MET_timew += TimeW // Add time to date to obtain date/time KillWaves/Z TimeW // This is no longer needed return 0 // Success End Function ConcatenateWeatherFile(pathName, fileName) String pathName String fileName // Create a new data folder NewDataFolder/O/S WeatherTemp Variable result = LoadWeatherFile(pathName, fileName, 0) SetDataFolder :: // Back to original data folder if (result != 0) return result // Error loading new waves endif // Concatenate new waves onto old Concatenate/NP {:WeatherTemp:MET_TimeW},MET_TimeW Concatenate/NP {:WeatherTemp:Temp_C},Temp_C Concatenate/NP {:WeatherTemp:Hum_Per},Hum_Per Concatenate/NP {:WeatherTemp:Dew_Pt_C},Dew_Pt_C Concatenate/NP {:WeatherTemp:Wind_Speed},Wind_Speed Concatenate/NP {:WeatherTemp:Wind_Dir},Wind_Dir Concatenate/NP {:WeatherTemp:Wind_Chill_C},Wind_Chill_C Concatenate/NP {:WeatherTemp:Heat_Index_C},Heat_Index_C Concatenate/NP {:WeatherTemp:THW_Index_C},THW_Index_C Concatenate/NP {:WeatherTemp:Press_Bar},Press_Bar Concatenate/NP {:WeatherTemp:Precip_Inch},Precip_Inch // Kill temp data folder KillDataFolder/Z :WeatherTemp return 0 // Success End Function LoadWeatherFiles(pathName) String pathName // Name of symbolic path or "" to get dialog String fileName Variable index=0 if (strlen(pathName)==0) // If no path specified, create one NewPath/O temporaryPath // This will put up a dialog if (V_flag != 0) return -1 // User cancelled endif pathName = "temporaryPath" endif Variable result do // Loop through each file in folder fileName = IndexedFile($pathName, index, ".txt") if (strlen(fileName) == 0) // No more files? break // Break out of loop endif result = ConcatenateWeatherFile(pathName, fileName) if (result == 0) // Did LoadAndGraph succeed? // Print the graph. fileName = WinName(0, 1) // Get the name of the top graph //String cmd //sprintf cmd, "PrintGraphs %s", fileName //Execute cmd // Explained below. //DoWindow/K $fileName // Kill the graph //KillWaves/A/Z // Kill all unused waves endif index += 1 while (1) if (Exists("temporaryPath")) // Kill temp path if it exists KillPath temporaryPath endif Wave MET_TimeW,TimeW,Temp_C,Hum_Per,Dew_Pt_C,Wind_Speed,Wind_Dir,Wind_Chill_C,Heat_Index_C,THW_Index_C,Press_Bar,Precip_Inch Edit MET_TimeW,Temp_C,Hum_Per,Dew_Pt_C,Wind_Speed,Wind_Dir,Wind_Chill_C,Heat_Index_C,THW_Index_C,Press_Bar,Precip_Inch ModifyTable format(MET_TimeW)=8, width(MET_TimeW)=150 Sort MET_TimeW Temp_C,Hum_Per,Dew_Pt_C,Wind_Speed,Wind_Dir;DelayUpdate Sort MET_TimeW Wind_Chill_C,Heat_Index_C,THW_Index_C,Press_Bar,Precip_Inch Sort MET_TimeW MET_TimeW DoWindow/K Weather DoWindow/C/T Weather,"Weather Data" return 0 // Signifies success. End
March 4, 2015 at 03:10 pm - Permalink
Except that the time is NOT actually in am/pm format, it is in a/p format:
Date Time Out Temp Temp Hum Pt. Speed Dir Run Speed Dir Chill Index Index Index Bar Rain Rate Rad. Energy Rad. Index Dose UV D-D D-D Temp Hum Dew Heat EMC Density ET Samp Tx Recept Int. 10/02/13 11:56 p 8.2 8.2 8.2 97 7.8 0.4 SE 0.03 0.4 ESE 8.2 8.4 8.4 --- 1023.5 0.00 0.0 --- --- --- --- --- --- 0.007 0.000 13.9 73 9.2 13.6 14.18 1.2285 0.00 23 1 100.0 1
The second column has "11:56 p".
This isn't a format recognized by LoadWave. You may need to load the file using FReadLine and sscanf.
--Jim Prouty
Software Engineer, WaveMetrics, Inc.
March 4, 2015 at 05:02 pm - Permalink
March 4, 2015 at 05:17 pm - Permalink
March 4, 2015 at 05:22 pm - Permalink