我正在使用B210 USRP from Ettus Research,由于某种原因,它一直在降低GPS锁定。我想定期轮询GPS锁定状态并在运行时将其保存到文件中。
基本设计是在gnuradio-companion中生成的,其中USRP源块绑定到File Sink块。从那里开始修改python,以检查self.usrp.get_mboard_sensor("gps_locked",0).to_bool()
函数__init__()
上GPSDO循环中的GPS锁定。
我已将下面的功能添加到课程中以读取GPS数据,以便我可以从其他进程访问它。
def getGPS(self,gps_field):
return self.usrp.get_mboard_sensor(gps_field,0).value
当我从另一个进程调用上面的函数时,它第一次运行但是然后产生以下错误:
Process Process-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "./experiment.py", line 291, in monitorGPS
locked = tb.getGPS('gps_locked')
File "./experiment.py", line 158, in getGPS
return self.usrp.get_mboard_sensor(gps_field,0).value
File "/usr/local/lib/python2.7/dist-packages/gnuradio/uhd/uhd_swig.py", line 3493, in get_mboard_sensor
return _uhd_swig.usrp_sink_sptr_get_mboard_sensor(self, name, mboard)
RuntimeError: ValueError: locked(): unable to determine GPS lock status
在运行数据收集时是否可以访问GPS信息?如果是,我在哪里出错?
CNC中 事实证明,使用线程而不是多处理允许我无误地访问GPS信息。我仍然想知道是否有更好的方法来解决这个问题。