<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Offline CSV Template</title><link>https://sourceforge.net/p/respondr/wiki/Offline%2520CSV%2520Template/</link><description>Recent changes to Offline CSV Template</description><atom:link href="https://sourceforge.net/p/respondr/wiki/Offline%20CSV%20Template/feed" rel="self"/><language>en</language><lastBuildDate>Wed, 28 Aug 2013 16:53:03 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/respondr/wiki/Offline%20CSV%20Template/feed" rel="self" type="application/rss+xml"/><item><title>Offline CSV Template modified by brandon shrewsbury</title><link>https://sourceforge.net/p/respondr/wiki/Offline%2520CSV%2520Template/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -86,7 +86,6 @@
     rosSender = Transport_thread()
     rosSender.start()#start thread
     for aLine in myFile:
-        aLine = aLine.replace('---','999')
         data = aLine.split('\t') #assign/reassign thread values
         rosSender.setData(data) #send data to thread
         sleep(60) #sleep for 1 minute
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">brandon shrewsbury</dc:creator><pubDate>Wed, 28 Aug 2013 16:53:03 -0000</pubDate><guid>https://sourceforge.net8a5a2b56be3a7cc815facbe668d7ce63c4150d76</guid></item><item><title>Offline CSV Template modified by brandon shrewsbury</title><link>https://sourceforge.net/p/respondr/wiki/Offline%2520CSV%2520Template/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -83,18 +83,14 @@
     return None

 def parse_data(myFile):
-    first_line_skipped = False
     rosSender = Transport_thread()
     rosSender.start()#start thread
     for aLine in myFile:
-        if first_line_skipped == False: #skip first line (headings within text file)
-            first_line_skipped = True
-        else:
-            aLine = aLine.replace('---','999')
-            data = aLine.split('\t') #assign/reassign thread values
-            rosSender.setData(data) #send data to thread
-            
-            sleep(60) #sleep for 1 minute
+        aLine = aLine.replace('---','999')
+        data = aLine.split('\t') #assign/reassign thread values
+        rosSender.setData(data) #send data to thread
+        sleep(60) #sleep for 1 minute
+
     myFile.close() #close file
     rosSender.shutdown()

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">brandon shrewsbury</dc:creator><pubDate>Wed, 28 Aug 2013 16:52:32 -0000</pubDate><guid>https://sourceforge.netcce4e000451fe6be99857627c3511730bf92f770</guid></item><item><title>Offline CSV Template modified by brandon shrewsbury</title><link>https://sourceforge.net/p/respondr/wiki/Offline%2520CSV%2520Template/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -1,5 +1,6 @@
 In this example we are pulling data from a Vantage Vue Davis Weather Station. The data is exported as a csv file. Samples were stored at 1hz. We have broken the template across two files, the transport thread which acts just like the parse and publish class in the real time example, and a csv parser which posts event data at particular time intervals to create a correctly spaced rosbag.

+#Parse and Publish
 ~~~~~
 #!/usr/bin/python
 import threading
@@ -68,6 +69,7 @@

 ~~~~~

+#CSV Parser
 ~~~~~
 #!/usr/bin/python
 import sys
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">brandon shrewsbury</dc:creator><pubDate>Wed, 28 Aug 2013 16:51:30 -0000</pubDate><guid>https://sourceforge.neta38556a3c6a8a1edc11149997aa4cf100033a23e</guid></item><item><title>Offline CSV Template modified by brandon shrewsbury</title><link>https://sourceforge.net/p/respondr/wiki/Offline%2520CSV%2520Template/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1 +1,106 @@
-Offline
+In this example we are pulling data from a Vantage Vue Davis Weather Station. The data is exported as a csv file. Samples were stored at 1hz. We have broken the template across two files, the transport thread which acts just like the parse and publish class in the real time example, and a csv parser which posts event data at particular time intervals to create a correctly spaced rosbag.
+
+~~~~~
+#!/usr/bin/python
+import threading
+import rospy
+import time
+import Queue
+from weather_logger.msg import weather
+
+class Transport_thread(threading.Thread):
+    def __init__(self):
+        threading.Thread.__init__(self)
+        self.__shutdown = False
+        self.__pubWeather = rospy.Publisher('weather_data', weather)
+        self.__queue = Queue.Queue()
+        rospy.init_node('weatherLogger')
+    
+    
+       
+    def run(self):
+        while self.__shutdown is not True:
+            if not self.__queue.empty():
+                msg = self.fill_msg(self.__queue.get_nowait())
+        
+                if not rospy.is_shutdown():
+                    self.__pubWeather.publish(msg)#export to ROS
+                    
+    def setData(self, data):
+        self.__queue._put(data)
+
+    def fill_msg(self,data):
+        weatherMsg = weather()
+        weatherMsg.date = data[0]
+        weatherMsg.time = data[1]
+        weatherMsg.temp_out = float(data[2])
+        weatherMsg.hi_temp = float(data[3])
+        weatherMsg.low_temp = float(data[4])
+        weatherMsg.out_hum = int(data[5])
+        weatherMsg.dew_pt = float(data[6])
+        weatherMsg.wind_spd = float(data[7])
+        weatherMsg.wind_dir = data[8]
+        weatherMsg.wind_run = float(data[9])
+        weatherMsg.hi_spd = float(data[10])
+        weatherMsg.hi_dir = data[11]
+        weatherMsg.wind_chill = float(data[12])
+        weatherMsg.heat_index = float(data[13])
+        weatherMsg.thw_index = float(data[14])
+        weatherMsg.bar = float(data[15])
+        weatherMsg.rain = float(data[16])
+        weatherMsg.rain_rate = float(data[17])
+        weatherMsg.head_dd = float(data[18])
+        weatherMsg.cool_dd = float(data[19])
+        weatherMsg.in_temp = float(data[20])
+        weatherMsg.in_hum = int(data[21])
+        weatherMsg.in_dew = float(data[22])
+        weatherMsg.in_heat = float(data[23])
+        weatherMsg.in_emc = float(data[24])
+        weatherMsg.in_air_dens = float(data[25])
+        weatherMsg.wind_samp = int(data[26])
+        weatherMsg.wind_tx = int(data[27])
+        weatherMsg.iss_recept = float(data[28])
+        weatherMsg.arc_int32 = int(data[29])
+        return weatherMsg;
+    
+    def shutdown(self):
+        self.__shutdown = True
+        
+~~~~~
+
+~~~~~
+#!/usr/bin/python
+import sys
+from time import sleep
+from rosConnector import Transport_thread
+
+def open_file():
+    args = sys.argv[1:]
+    if len(args) == 1:
+        return open(args[0], "r") #Open file
+    return None
+
+def parse_data(myFile):
+    first_line_skipped = False
+    rosSender = Transport_thread()
+    rosSender.start()#start thread
+    for aLine in myFile:
+        if first_line_skipped == False: #skip first line (headings within text file)
+            first_line_skipped = True
+        else:
+            aLine = aLine.replace('---','999')
+            data = aLine.split('\t') #assign/reassign thread values
+            rosSender.setData(data) #send data to thread
+            
+            sleep(60) #sleep for 1 minute
+    myFile.close() #close file
+    rosSender.shutdown()
+    
+if __name__ == '__main__':
+    myfile = open_file()
+    if myfile is not None:
+        parse_data(myfile)
+    else:
+        print "File not found. Exiting!"
+    
+~~~~~
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">brandon shrewsbury</dc:creator><pubDate>Wed, 28 Aug 2013 16:50:25 -0000</pubDate><guid>https://sourceforge.net202b7d97a95fe1cd406f80ef21a7c28cafc9fb10</guid></item><item><title>Offline CSV Template modified by brandon shrewsbury</title><link>https://sourceforge.net/p/respondr/wiki/Offline%2520CSV%2520Template/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Offline&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">brandon shrewsbury</dc:creator><pubDate>Wed, 28 Aug 2013 15:48:00 -0000</pubDate><guid>https://sourceforge.net1f445939477a6eb99d6df55d0e01d1877b9e19ed</guid></item></channel></rss>