Spin and KML
I thought I would share some Spin code that I created to make animated timeline KML files out of GPS readings.
An example Google Earth file that I created with it is here:
http://www.ragtopvideo.com/me/banyon.kmz
Still trying to figure out how to move the camera view to keep the track centered.
An example Google Earth file that I created with it is here:
http://www.ragtopvideo.com/me/banyon.kmz
Still trying to figure out how to move the camera view to keep the track centered.
CON _CLKMODE = XTAL1 + PLL16X _XINFREQ = 5_000_000 obj sdcard: "fsrw" gps : "GPS_Float" FS : "FloatString" var long latold, latnew, longold, longnew, distance long x, filenum, open, oldelevation, newelevation long Stack[16], buttonpressed, firstloopcheck long year, month, day, hour, minute, second, endhour,endminute,endsecond long count 'for counting every 8th icon to fly map over to new position still working on long Elcheck,rtcheck 'elevation and rotation changes pub main '900 coordinate updates an hour / every 4 seconds sdcard.mount(1) ' 1 cog gps.init ' 4 cogs initButton ' 1 cog dira[7]~~ 'card writing LED indicator outa[7] := 0 dira[6]~~ 'sat fix LED indicator outa[6] := 0 filenum := 1 open := 0 firstloopcheck := 0 repeat repeat while buttonpressed == 0 'just wait until button pressed first time CheckSatFix ShortBlink buttonpressed := 0 if open == 1 'if file open and button pressed, close file. Endfile firstloopcheck := 0 else distance := 0 'start new file using filenum to increment filenames Openfile Pub Openfile case filenum 1: sdcard.popen(string("track1.kml"),"w") 2: sdcard.popen(string("track2.kml"),"w") 3: sdcard.popen(string("track3.kml"),"w") 4: sdcard.popen(string("track4.kml"),"w") 5: sdcard.popen(string("track5.kml"),"w") 6: sdcard.popen(string("track6.kml"),"w") 7: sdcard.popen(string("track7.kml"),"w") 8: sdcard.popen(string("track8.kml"),"w") 9: sdcard.popen(string("track9.kml"),"w") 10: sdcard.popen(string("track10.kml"),"w") 'term1 WriteFileHeader filenum++ open := 1 count := 1 WriteIcons Pub EndFile Shortblink CheckSatFix TakeReading sdcard.SDStr(string("<Placemark>",13,10)) sdcard.SDStr(string("<name>Finished. Distance traveled is ")) sdcard.sddec(distance) sdcard.SDStr(string(" ft ")) sdcard.sdstr(fs.floattostring(gps.miles)) sdcard.SDStr(string(" miles </name>",13,10)) elcheck := gps.ElevationCheck rtcheck := gps.rotation PickIcon sdcard.SDStr(string("<Point>",13,10)) sdcard.SDStr(string("<coordinates>",13,10)) sdcard.sdstr(fs.floattostring(longnew)) sdcard.sdstr(string(",")) sdcard.sdstr(fs.floattostring(latnew)) sdcard.sdstr(string(",")) sdcard.sddec(0) sdcard.sdstr(string(13,10)) sdcard.SDStr(string("</coordinates>",13,10)) sdcard.SDStr(string("</Point>",13,10)) TimeStamp sdcard.SDStr(string("</Placemark>",13,10)) 'sdcard.SDStr(string("</gx:Playlist>",13,10)) 'sdcard.SDStr(string("</gx:Tour>",13,10)) sdcard.SDStr(string(" </Document>",13,10)) 'sdcard.SDStr(string("</Feature>",13,10)) sdcard.SDStr(string("</kml>",13,10)) sdcard.pclose LongBlink open := 0 PUB InitButton cognew(button(@buttonpressed), @stack) Pub button(bp) dira[8]~ long[bp] := 0 repeat if ina[8] == 1 'stores a button press until an action is done in main program to remove timing issues. long[bp] := 1 Pub CheckSatFix repeat while gps.Long_Fix_Quality < 1 or gps.Long_Fix_Quality > 8 FixIndicatoroff FixIndicatorOn Pub FixIndicatorOn outa[6] := 1 Pub FixIndicatorOff outa[6] := 0 Pub WriteFileHeader sdcard.SDStr(string("<?xml version='1.0' encoding='UTF-8'?>",13,10)) sdcard.SDStr(string("<kml xmlns='http://www.opengis.net/kml/2.2'",13,10)) sdcard.SDStr(string("xmlns:gx='http://www.google.com/kml/ext/2.2'>",13,10)) 'sdcard.SDStr(string("<Feature id='Ragtops path'>",13,10)) sdcard.SDStr(string(" <Document>",13,10)) sdcard.SDStr(string("<description>This is track #")) sdcard.SDDec(filenum) sdcard.SDStr(string(" that was started on ")) sdcard.sddec(gps.Long_Month) sdcard.SDStr(string("/")) sdcard.sddec(gps.Long_Day) sdcard.SDStr(string("/")) sdcard.sddec(gps.Long_year) sdcard.SDStr(string("</description>",13,10)) 'sdcard.SDStr(string("<gx:Tour>",13,10)) 'sdcard.SDStr(string("<name>Play me!</name>",13,10)) 'sdcard.SDStr(string("<gx:Playlist> ",13,10)) Styles TakeReading 'FlyTo 'sdcard.SDStr(string("<gx:AnimatedUpdate>",13,10)) ' sdcard.SDStr(string("<gx:duration>0.0</gx:duration> ",13,10)) 'sdcard.SDStr(string(" <Update>",13,10)) 'sdcard.SDStr(string(" <targetHref>...</targetHref>",13,10)) 'sdcard.SDStr(string("<Create>",13,10)) sdcard.SDStr(string("<Placemark>",13,10)) sdcard.SDStr(string("<name>Start</name>",13,10)) sdcard.SDStr(string("<styleUrl>#levelNIcon</styleUrl>",13,10)) sdcard.SDStr(string("<Point>",13,10)) sdcard.SDStr(string("<coordinates>",13,10)) sdcard.sdstr(fs.floattostring(longnew)) sdcard.sdstr(string(",")) sdcard.sdstr(fs.floattostring(latnew)) sdcard.sdstr(string(",")) sdcard.sddec(0) sdcard.sdstr(string(13,10)) sdcard.SDStr(string("</coordinates>",13,10)) sdcard.SDStr(string("</Point>",13,10)) TimeStamp sdcard.SDStr(string("</Placemark>",13,10)) ' sdcard.SDStr(string("</Create>",13,10)) 'sdcard.SDStr(string(" </Update>",13,10)) 'sdcard.SDStr(string("</gx:AnimatedUpdate>",13,10)) firstloopcheck := 1 Pub WriteIcons repeat while buttonpressed == 0 Shortblink CheckSatFix TakeReading if count == 8 'move view of map to stay with track every 8 times count := 1 'FlyTo count++ elcheck := gps.ElevationCheck rtcheck := gps.rotation 'sdcard.SDStr(string("<gx:AnimatedUpdate>",13,10)) 'sdcard.SDStr(string("<gx:duration>0.0</gx:duration> ",13,10)) 'sdcard.SDStr(string(" <Update>",13,10)) 'sdcard.SDStr(string(" <targetHref>...</targetHref>",13,10)) 'sdcard.SDStr(string("<Create>",13,10)) sdcard.SDStr(string("<Placemark>",13,10)) sdcard.SDStr(string("<name>")) 'sdcard.sddec(gps.Long_Hour) 'sdcard.SDStr(string(":")) 'sdcard.sddec(gps.Long_minute) {sdcard.SDStr(string(" *E* ")) sdcard.SDDec(Elcheck) sdcard.SDStr(string(" *R* ")) sdcard.SDDec(rtcheck)} sdcard.SDStr(string("</name>",13,10)) ' check for being stopped. only want one icon, so need to check if still stopped. PickIcon sdcard.SDStr(string("<Point>",13,10)) sdcard.SDStr(string("<coordinates>",13,10)) sdcard.sdstr(fs.floattostring(longnew)) sdcard.sdstr(string(",")) sdcard.sdstr(fs.floattostring(latnew)) sdcard.sdstr(string(",")) sdcard.sddec(0) sdcard.sdstr(string(13,10)) sdcard.SDStr(string("</coordinates>",13,10)) sdcard.SDStr(string("</Point>",13,10)) TimeStamp sdcard.SDStr(string("</Placemark>",13,10)) 'sdcard.SDStr(string("</Create>",13,10)) 'sdcard.SDStr(string(" </Update>",13,10)) 'sdcard.SDStr(string("</gx:AnimatedUpdate>",13,10)) waitcnt (clkfreq * 4 + cnt) Pub ShortBlink repeat 8 !outa[7] waitcnt(9000_000 + cnt) Pub LongBlink outa[7] := 1 waitcnt(clkfreq * 4 + cnt) outa[7] := 0 Pub RecordOn outa[7] := 1 Pub RecordOff outa[7] := 0 PUB TakeReading CheckSatFix longold := longnew latold := latnew longnew := gps.Float_Longitude_Deg latnew := gps.Float_Latitude_Deg if firstloopcheck <> 0 gps.distance(latold,longold,latnew,longnew) distance := gps.final Pub FlyTo sdcard.SDStr(string("<FlyTo>",13,10)) sdcard.SDStr(string("<duration>2.0</duration>",13,10)) if firstloopcheck == 0 sdcard.SDStr(string("<flyToMode>bounce</flyToMode>",13,10)) else sdcard.SDStr(string("<flyToMode>smooth</flyToMode>",13,10)) sdcard.SDStr(string("<LookAt>",13,10)) TimeStamp sdcard.SDStr(string("<longitude>")) sdcard.sdstr(fs.floattostring(longnew)) sdcard.SDStr(string("</longitude>",13,10)) sdcard.SDStr(string("<latitude>")) sdcard.sdstr(fs.floattostring(latnew)) sdcard.SDStr(string("</latitude>",13,10)) if firstloopcheck == 0 sdcard.SDStr(string("<altitude>1000</altitude>",13,10)) else sdcard.SDStr(string("<altitude>300</altitude>",13,10)) sdcard.SDStr(string("<heading>0</heading>",13,10)) sdcard.SDStr(string("<tilt>0</tilt>",13,10)) 'sdcard.SDStr(string("<range>4202.579</range>",13,10)) sdcard.SDStr(string("<altitudeMode>relativeToGround</altitudeMode>",13,10)) sdcard.SDStr(string("</LookAt>",13,10)) sdcard.SDStr(string("</FlyTo>",13,10)) Pub TimeStamp sdcard.SDStr(string("<TimeSpan id='ID'>",13,10)) sdcard.SDStr(string("<begin>")) year:=gps.Long_year month:=gps.long_month day:=gps.long_day hour:=gps.long_hour - 4 minute:=gps.long_minute second:=gps.long_second sdcard.sddec(gps.Long_year) sdcard.SDStr(string("-")) if month < 10 sdcard.SDStr(string("0")) sdcard.sddec(month) else sdcard.sddec(month) sdcard.SDStr(string("-")) if day < 10 sdcard.SDStr(string("0")) sdcard.sddec(day) else sdcard.sddec(day) sdcard.SDStr(string("T")) if hour < 10 sdcard.SDStr(string("0")) sdcard.sddec(hour) else sdcard.sddec(hour) sdcard.SDStr(string(":")) if minute < 10 sdcard.SDStr(string("0")) sdcard.sddec(minute) else sdcard.sddec(minute) sdcard.SDStr(string(":")) if second < 10 sdcard.SDStr(string("0")) sdcard.sddec(second) else sdcard.sddec(second) sdcard.SDStr(string("Z</begin>")) sdcard.SDStr(string("<end>")) CalculateEndTime sdcard.sddec(gps.Long_year) sdcard.SDStr(string("-")) if month < 10 sdcard.SDStr(string("0")) sdcard.sddec(month) else sdcard.sddec(month) sdcard.SDStr(string("-")) if day < 10 sdcard.SDStr(string("0")) sdcard.sddec(day) else sdcard.sddec(day) sdcard.SDStr(string("T")) if endhour < 10 sdcard.SDStr(string("0")) sdcard.sddec(endhour) else sdcard.sddec(endhour) sdcard.SDStr(string(":")) if endminute < 10 sdcard.SDStr(string("0")) sdcard.sddec(endminute) else sdcard.sddec(endminute) sdcard.SDStr(string(":")) if endsecond < 10 sdcard.SDStr(string("0")) sdcard.sddec(endsecond) else sdcard.sddec(endsecond) sdcard.SDStr(string("Z</end>")) sdcard.SDStr(string("</TimeSpan>",13,10)) Pub CalculateEndTime if (second + 20) > 60 if (minute + 1) > 60 endhour := hour + 1 endminute := 0 endsecond := (second + 20) - 60 else endhour := hour endminute := minute + 1 endsecond := (second + 20) - 60 else endhour := hour endminute := minute endsecond := second + 20 Pub PickIcon if elcheck == 1 ' level case rtcheck 1: sdcard.SDStr(string("<styleUrl>#levelNIcon</styleUrl>",13,10)) 2: sdcard.SDStr(string("<styleUrl>#levelNEIcon</styleUrl>",13,10)) 3: sdcard.SDStr(string("<styleUrl>#levelEIcon</styleUrl>",13,10)) 4: sdcard.SDStr(string("<styleUrl>#levelSEIcon</styleUrl>",13,10)) 5: sdcard.SDStr(string("<styleUrl>#levelSIcon</styleUrl>",13,10)) 6: sdcard.SDStr(string("<styleUrl>#levelSWIcon</styleUrl>",13,10)) 7: sdcard.SDStr(string("<styleUrl>#levelWIcon</styleUrl>",13,10)) 8: sdcard.SDStr(string("<styleUrl>#levelNWIcon</styleUrl>",13,10)) elseif ElCheck == 2 ' downhill case rtcheck 1: sdcard.SDStr(string("<styleUrl>#downhillNIcon</styleUrl>",13,10)) 2: sdcard.SDStr(string("<styleUrl>#downhillNEIcon</styleUrl>",13,10)) 3: sdcard.SDStr(string("<styleUrl>#downhillEIcon</styleUrl>",13,10)) 4: sdcard.SDStr(string("<styleUrl>#downhillSEIcon</styleUrl>",13,10)) 5: sdcard.SDStr(string("<styleUrl>#downhillSIcon</styleUrl>",13,10)) 6: sdcard.SDStr(string("<styleUrl>#downhillSWIcon</styleUrl>",13,10)) 7: sdcard.SDStr(string("<styleUrl>#downhillWIcon</styleUrl>",13,10)) 8: sdcard.SDStr(string("<styleUrl>#downhillNWIcon</styleUrl>",13,10)) elseif ElCheck == 3 ' uphill case rtcheck 1: sdcard.SDStr(string("<styleUrl>#uphillNIcon</styleUrl>",13,10)) 2: sdcard.SDStr(string("<styleUrl>#uphillNEIcon</styleUrl>",13,10)) 3: sdcard.SDStr(string("<styleUrl>#uphillEIcon</styleUrl>",13,10)) 4: sdcard.SDStr(string("<styleUrl>#uphillSEIcon</styleUrl>",13,10)) 5: sdcard.SDStr(string("<styleUrl>#uphillSIcon</styleUrl>",13,10)) 6: sdcard.SDStr(string("<styleUrl>#uphillSWIcon</styleUrl>",13,10)) 7: sdcard.SDStr(string("<styleUrl>#uphillWIcon</styleUrl>",13,10)) 8: sdcard.SDStr(string("<styleUrl>#uphillNWIcon</styleUrl>",13,10)) Pub Styles sdcard.SDStr(string("<Style id='levelNIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/levelN.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='levelNEIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/levelNE.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='levelEIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/levelE.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='levelSEIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/levelSE.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='levelSIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/levelS.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='levelSWIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/levelSW.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='levelWIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/levelW.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='levelNWIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/levelNW.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='uphillNIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/uphillN.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='uphillNEIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/uphillNE.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='uphillEIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/uphillE.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='uphillSEIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/uphillSE.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='uphillSIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/uphillS.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='uphillSWIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/uphillSW.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='uphillWIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/uphillW.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='uphillNWIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/uphillNW.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='downhillNIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/downhillN.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='downhillNEIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/downhillNE.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='downhillEIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/downhillE.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='downhillSEIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/downhillSE.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='downhillSIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/downhillS.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='downhillSWIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/downhillSW.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='downhillWIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/downhillW.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='downhillNWIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/downNW.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10)) sdcard.SDStr(string("<Style id='stopIcon'>",13,10)) sdcard.SDStr(string("<IconStyle>",13,10)) sdcard.SDStr(string("<scale>1</scale>",13,10)) sdcard.SDStr(string("<Icon>",13,10)) sdcard.SDStr(string("<href>http://www.ragtopvideo.com/me/stop.png</href>",13,10)) sdcard.SDStr(string("</Icon>",13,10)) sdcard.SDStr(string("</IconStyle>",13,10)) sdcard.SDStr(string("</Style>",13,10))
Comments
Nice demo a little bit rough but very functional.
Keep up the good work.
Thank You
Which keeps me from closing the file, losing hours of data. Got to rewrite that.