The Holux M-241 is a nice unit, but it looks like it cannot store waypoints while you're recording a track.
In fact, if you set it to display latitude and longitude, every time you press enter it stores a track point with the current location. However, after downloading the data with gpsbabel, they are indistinguishable from all the other track points.
If you are not taking a track, this is sufficient: your track will be made by all the waypoints you recorded.
Together with Riccio, another M-241 user, we noticed that if you are taking a track, with one trackpoint per second, then when you press enter in the lat/lon screen you get two track points in the same second: one from the logger, and one from your keypress.
The duplicate timestamp is just enough information to be able to distinguish a waypoint. Here is a little python script that will add a waypoint every time there are two trackpoints with the same timestamp.
#!/usr/bin/python
import xml.dom.minidom
from xml.dom.minidom import Node
import sys
def get_text(node):
res = ""
for n in node.childNodes:
if n.nodeType == Node.TEXT_NODE:
res += n.data
return res.strip()
def get_val(node, name):
for n in node.childNodes:
if n.nodeName == name:
return get_text(n)
return None
doc = xml.dom.minidom.parse(sys.argv[1])
# Scan the document looking for duplicate timestamps
wpt = []
last_ts = None
for node in doc.getElementsByTagName("trkpt"):
ts = get_val(node, "time")
if last_ts != None and last_ts == ts:
wpt.append(node)
last_ts = ts
# Add the nodes with duplicate timestamps as waypoints
if len(wpt) > 0:
for i in wpt:
node = doc.createElement("wpt")
for a in i.attributes.values():
node.setAttribute(a.name, a.value)
for n in i.childNodes:
node.appendChild(n.cloneNode(True))
doc.documentElement.appendChild(node)
doc.writexml(sys.stdout)