首页 > 解决方案 > Python 3.7 和 3.4 GPS3 模块上的 WinError10057

问题描述

我正在研究 GPS3 Python 3.7 库,运行以下基本代码:Estou estudando a biblioteca GPS3 do python 3.7, rodando esse código simples:


skt, dts = gps3.GPSDSocket(), gps3.DataStream()

skt.connect()
skt.watch()
for dt in skt:
    if dt:
        dts.unpack(dt)
        print(skt.TPV['alt'],skt.TPV['lat'])

我得到以下输出:
Eu tive a seguinte saída:

GPS3 gpsd connection at '192.168.0.13' on port '2947' failed

GPS3 send command fail with [WinError 10057] Uma solicitação de envio ou recebimento de dados não foi permitida porque o soquete não está conectado e (durante o envio em um soquete de datagrama usando-se uma chamada sendto) não foi fornecido um endereço

我已经尝试在 python 3.4 上运行此代码,并且得到了完全相同的输出
Eu já tentei rodar esse código no python 3.4 e tive a mesma mensagem。

有人知道这有什么解决方案吗?或者知道一些更好的python兼容框架来实现这个功能?
Alguém sabe a solução para isso?Ou conhece algum framework melhor para essa função que seja compatível com python?

标签: pythonpython-3.xsocketsgpsgpsd

解决方案


“skt.connect()”行尝试连接到 GPSd,但根据您收到的诊断“在端口 '2947' 上的 '192.168.0.13' 处的 GPS3 gpsd 连接失败”判断,该尝试失败。这可能是因为 GPSd 服务器没有在该 IP 地址和端口上侦听,或者有防火墙挡住了,或者由于许多其他原因。

出于某种原因,无法连接到 GPSd 不会引发异常,即使我认为它应该(所以这可以说是 Python GPS 库中的一个错误)。所以你的代码继续运行。

"skt.watch()" 行尝试等待新数据到达 GPSd 的套接字,但由于前面的错误,该套接字从未打开,因此无法等待。因此此调用失败,Windows 错误代码为 10057。

总之,解决方案是确保您的代码可以访问 GPSd 服务器,并确保 Python GPS 库和您的代码都包含足够的错误检测并在致命错误条件下抛出异常。


推荐阅读