예제 #1
0
def gpsLoop(inParams):
    #log path
    savePath, printLive = inParams
    #setup gps device
    #wait for gps attach?
    gps = GPS()
    gps.openPhidget()
    gps.waitForAttach(10000)
    print "GPS attached"
    #set up logging:
    gpsLog = open(savePath+'/Gps.log','w')

    #change handler
    def gpsChangeHandler1(e):
        gps_time = gps.getTime().toString()
        gps_date = gps.getDate().toString()
        gps_lat = gps.getLatitude()
        gps_lon = gps.getLongitude()
        gps_alt = gps.getAltitude()    
        gps_heading = gps.getHeading()
        gps_vel = gps.getVelocity()
        time1 = str(datetime.datetime.now())
        dataElems = [time1, gps_time, gps_date, gps_lat, gps_lon,gps_alt,gps_heading,gps_vel]
        dataElems = [str(x) for x in dataElems]
        return ','.join(dataElems)+'\n', (gps_lat, gps_lon, gps_alt)
        #(','.join(dataElems)+'\n')
        #gpsLog.flush()

            
    #gps.setOnPositionChangeHandler(gpsChangeHandler1)

    data, xyzPos = gpsChangeHandler1(1)
    gpsLog.write("sysTime, gpsTime, gpsDate, Lat, Lon, Alt, Heading, Velocity\n")
    gpsLog.write(data)
    logCounter = 0
    while True:
        logCounter = logCounter+1
        #tune sleep timer to image capture rate...
        time.sleep(0.18)
        data, xyzPos = gpsChangeHandler1(1)
        gpsLog.write(data)
        if logCounter%10==0:
            gpsLog.flush()
예제 #2
0
def gpsLoop(inParams):
    #log path
    savePath, printLive = inParams
    #setup gps device
    #wait for gps attach?
    gps = GPS()
    gps.openPhidget()
    gps.waitForAttach(10000)
    print "GPS attached"
    #set up logging:
    gpsLog = open(savePath+'/Gps.log','w')

    #change handler
    def gpsChangeHandler1(e):
        gps_time = gps.getTime().toString()
        gps_lat = gps.getLatitude()
        gps_lon = gps.getLongitude()
        gps_alt = gps.getAltitude()    
        gps_heading = gps.getHeading()
        gps_vel = gps.getVelocity()
        time1 = str(datetime.datetime.now())
        dataElems = [time1, gps_time, gps_lat, gps_lon,gps_alt,gps_heading,gps_vel]
        dataElems = [str(x) for x in dataElems]
        return ','.join(dataElems)+'\n', (gps_lat, gps_lon, gps_alt)
        #(','.join(dataElems)+'\n')
        #gpsLog.flush()

            
    #gps.setOnPositionChangeHandler(gpsChangeHandler1)

    data, xyzPos = gpsChangeHandler1(1)
    gpsLog.write(data)
    while True:
        time.sleep(0.1)
        newData, newXyz = gpsChangeHandler1(1)
        if xyzPos == newXyz:
            pass
        else:
            #log new data
            print "position changed", newXyz
            xyzPos = newXyz
            gpsLog.write(newData)
            gpsLog.flush()
예제 #3
0
    #gps.enableLogging(PhidgetLogLevel.PHIDGET_LOG_VERBOSE, "phidgetlog.log")

    gps.setOnAttachHandler(GPSAttached)
    gps.setOnDetachHandler(GPSDetached)
    gps.setOnErrorhandler(GPSError)
    gps.setOnPositionChangeHandler(GPSPositionChanged)
    gps.setOnPositionFixStatusChangeHandler(GPSPositionFixStatusChanged)
except PhidgetException as e:
    print("Phidget Exception %i: %s" % (e.code, e.details))
    print("Exiting....")
    exit(1)

print("Opening phidget object....")

try:
    gps.openPhidget()
except PhidgetException as e:
    print("Phidget Exception %i: %s" % (e.code, e.details))
    print("Exiting....")
    exit(1)

print("Waiting for attach....")

try:
    gps.waitForAttach(10000)
except PhidgetException as e:
    print("Phidget Exception %i: %s" % (e.code, e.details))
    try:
        gps.closePhidget()
    except PhidgetException as e:
        print("Phidget Exception %i: %s" % (e.code, e.details))
예제 #4
0
파일: gps_logger.py 프로젝트: cyface/boxbot
    try:
        gps.closePhidget()
    except PhidgetException as e:
        print("Phidget Exception %i: %s" % (e.code, e.details))
        print("Exiting....")
        exit(1)
    print("Done.")
    exit(0)


atexit.register(clean_up)

gps = None
try:
    gps = GPS()
    gps.openPhidget()
    gps.waitForAttach(10000)
except PhidgetException as e:
    print("Phidget Exception %i: %s" % (e.code, e.details))
    exit(1)

print("Date,Time,Lat,Long,Altitude,Velocity,Heading")

while True:
    try:
        print("{0},{1},{2},{3},{4},{5},{6}".format(
            gps.getDate().toString(),
            gps.getTime().toString(),
            gps.getLatitude(),
            gps.getLongitude(),
            gps.getAltitude(),
예제 #5
0
파일: GPS.py 프로젝트: njligames/SBCLogger
def AttachGPS(databasepath, serialNumber):
	def onAttachHandler(event):
		logString = "GPS Attached " + str(event.device.getSerialNum())
		#print(logString)
		DisplayAttachedDeviceInfo(event.device)

	def onDetachHandler(event):
		logString = "GPS Detached " + str(event.device.getSerialNum())
		#print(logString)
		DisplayDetachedDeviceInfo(event.device)

		event.device.closePhidget()

	def onErrorHandler(event):
		logString = "GPS Error " + str(event.device.getSerialNum()) + ", Error: " + event.description
		print(logString)

		DisplayErrorDeviceInfo(event.device)
		
	def onServerConnectHandler(event):
		logString = "GPS Server Connect " + str(event.device.getSerialNum())
		#print(logString)

	def onServerDisconnectHandler(event):
		logString = "GPS Server Disconnect " + str(event.device.getSerialNum())
		#print(logString)

	def positionChangeHandler(event):
		logString = "GPS Position Changed"
		#print(logString)

		try:
			conn = sqlite3.connect(databasepath)

			conn.execute("INSERT INTO GPS_POSITIONCHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)",
					(event.device.getSerialNum(), event.index, event.position))

			conn.commit()
			conn.close()
		except sqlite3.Error as e:
			print "An error occurred:", e.args[0]

	def positionFixStatusChangeHandler(event):
		logString = "GPS Position Fix Status Changed"
		#print(logString)

		try:
			conn = sqlite3.connect(databasepath)

			conn.execute("INSERT INTO GPS_POSITIONFIXSTATUSCHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)",
					(event.device.getSerialNum(), event.index, event.position))

			conn.commit()
			conn.close()
		except sqlite3.Error as e:
			print "An error occurred:", e.args[0]

	try:
		p = GPS()

		p.setOnAttachHandler(onAttachHandler)
		p.setOnDetachHandler(onDetachHandler)
		p.setOnErrorhandler(onErrorHandler)
		p.setOnServerConnectHandler(onServerConnectHandler)
		p.setOnServerDisconnectHandler(onServerDisconnectHandler)

		p.setOnPositionChangeHandler(positionChangeHandler)
		p.setOnPositionFixStatusChangeHandler(positionFixStatusChangeHandler)

		p.openPhidget(serialNumber)

	except PhidgetException as e:
		print("Phidget Exception %i: %s" % (e.code, e.details))
		print("Exiting...")
		exit(1)
예제 #6
0
def AttachGPS(databasepath, serialNumber):
    def onAttachHandler(event):
        logString = "GPS Attached " + str(event.device.getSerialNum())
        #print(logString)
        DisplayAttachedDeviceInfo(event.device)

    def onDetachHandler(event):
        logString = "GPS Detached " + str(event.device.getSerialNum())
        #print(logString)
        DisplayDetachedDeviceInfo(event.device)

        event.device.closePhidget()

    def onErrorHandler(event):
        logString = "GPS Error " + str(
            event.device.getSerialNum()) + ", Error: " + event.description
        print(logString)

        DisplayErrorDeviceInfo(event.device)

    def onServerConnectHandler(event):
        logString = "GPS Server Connect " + str(event.device.getSerialNum())
        #print(logString)

    def onServerDisconnectHandler(event):
        logString = "GPS Server Disconnect " + str(event.device.getSerialNum())
        #print(logString)

    def positionChangeHandler(event):
        logString = "GPS Position Changed"
        #print(logString)

        try:
            conn = sqlite3.connect(databasepath)

            conn.execute(
                "INSERT INTO GPS_POSITIONCHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)",
                (event.device.getSerialNum(), event.index, event.position))

            conn.commit()
            conn.close()
        except sqlite3.Error as e:
            print "An error occurred:", e.args[0]

    def positionFixStatusChangeHandler(event):
        logString = "GPS Position Fix Status Changed"
        #print(logString)

        try:
            conn = sqlite3.connect(databasepath)

            conn.execute(
                "INSERT INTO GPS_POSITIONFIXSTATUSCHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)",
                (event.device.getSerialNum(), event.index, event.position))

            conn.commit()
            conn.close()
        except sqlite3.Error as e:
            print "An error occurred:", e.args[0]

    try:
        p = GPS()

        p.setOnAttachHandler(onAttachHandler)
        p.setOnDetachHandler(onDetachHandler)
        p.setOnErrorhandler(onErrorHandler)
        p.setOnServerConnectHandler(onServerConnectHandler)
        p.setOnServerDisconnectHandler(onServerDisconnectHandler)

        p.setOnPositionChangeHandler(positionChangeHandler)
        p.setOnPositionFixStatusChangeHandler(positionFixStatusChangeHandler)

        p.openPhidget(serialNumber)

    except PhidgetException as e:
        print("Phidget Exception %i: %s" % (e.code, e.details))
        print("Exiting...")
        exit(1)
예제 #7
0
파일: __init__.py 프로젝트: cyface/boxbot
class GPSPhidgets(GPSDevice):
    """
    This class implements the GPS facade for the Phidgets GPS.
    """

    phidget = None  # Holds reference to Phidget device, populated from activate

    def get_current_latitude(self):
        try:
            self.latitude = self.phidget.getLatitude()
        except PhidgetException as e:
            print("Phidget Exception %i: %s" % (e.code, e.details))
        return self.latitude

    def get_current_longitude(self):
        try:
            self.longitude = self.phidget.getLongitude()
        except PhidgetException as e:
            print("Phidget Exception %i: %s" % (e.code, e.details))
        return self.longitude

    def get_current_velocity(self):
        """Returns the current GPS-derived speed in miles per hour"""
        try:
            self.velocity = self.phidget.getVelocity()
        except PhidgetException as e:
            print("Phidget Exception %i: %s" % (e.code, e.details))
        return self.velocity

    def get_current_altitude(self):
        """Returns the current altitude in decimal feet"""
        try:
            self.altitude = self.phidget.getAltitude()
        except PhidgetException as e:
            print("Phidget Exception %i: %s" % (e.code, e.details))
        return self.altitude

    def get_current_heading(self):
        """Returns the current GPS-derived heading in degrees"""
        try:
            self.heading = self.phidget.getHeading()
        except PhidgetException as e:
            print("Phidget Exception %i: %s" % (e.code, e.details))
        return self.heading

    def get_time(self):
        """Returns a datetime.time object with the current time from the GPS"""
        try:
            phidget_time = self.phidget.getTime()
            self.time = datetime.time(phidget_time.tm_hour, phidget_time.tm_min, phidget_time.tm_sec, phidget_time.tm_ms)
        except PhidgetException as e:
            print("Phidget Exception %i: %s" % (e.code, e.details))
        return self.time

    def get_date(self):
        """Returns a datetime.date object with the current date from the GPS"""
        try:
            phidget_date = self.phidget.getDate()
            self.date = datetime.date(phidget_date.tm_year, phidget_date.tm_mon, phidget_date.tm_mday)
        except PhidgetException as e:
            print("Phidget Exception %i: %s" % (e.code, e.details))
        return self.date

    def get_datetime(self):
        """Returns a datetime.datetime object with the current date and time from the GPS"""
        try:
            self.date_time = datetime.datetime.combine(self.get_date(), self.get_time())
        except PhidgetException as e:
            print("Phidget Exception %i: %s" % (e.code, e.details))
        return self.date_time

    def is_ready(self):
        """Returns True if the GPS is ready to return data (on, booted, sat lock, etc.)"""
        fix_status = self.phidget.getPositionFixStatus()
        if not fix_status:
            self.ready = False
        return self.ready

    def activate(self):
        """Phidget GPS Must be attached via USB cable and powered before calling, sets is_ready() to True when done"""

        try:
            self.phidget = GPS()
            self.phidget.openPhidget()
        except RuntimeError as e:
            print("Runtime Exception: %s" % e.details)

        try:
            self.phidget.waitForAttach(10000)
        except PhidgetException as e:
            print("Phidget Exception %i: %s" % (e.code, e.details))
            try:
                self.phidget.closePhidget()
            except PhidgetException as e:
                print("Phidget Exception %i: %s" % (e.code, e.details))

        self.ready = True

    def deactivate(self):
        """Tells the GPS to shut down, sets is_ready() to False when done"""
        self.phidget.closePhidget()
        self.ready = False