0

我在 Raspberry Pi 上运行 python 2.7 代码,它从 Arduino 接收串行数据,对其进行处理,然后通过 wifi 链接将其发送到 Windows 盒子。Pi 连接到以客户端桥接模式运行的 Linksys 路由器,并且该路由器通过 wifi 连接到 Windows 盒子所连接的另一个 Linksys 路由器。Pi 中的代码在某些(显然)随机间隔内运行良好,然后 Pi 变得无法从 Windows 框中访问。

我在 Windows 机器上运行 PUTTY 以连接到 Pi,当发生故障时,我收到一条消息,说存在网络错误并且 Pi 无法访问。从 Windows 机器 ping Pi 可以正常工作,直到出现错误,此时它会产生“来自 192.168.0.129 的回复:无法访问目标主机”。Pi 所连接的客户端网桥路由器仍然可以访问。

我将 Pi 上的网络代码包装在异常处理程序中,当它失败时,它会显示以下内容:

以太网问题:
回溯(最近一次调用最后):文件“garage.py”,第 108 行,模块
s.connect((host, port))
文件“/usr/lib/python2.7/socket.py”,行224,在 meth
返回 getattr(self._sock,name)(*args)
错误:[Errno 113] 没有到主机的路由
None

相关的python代码如下:

import socket
import traceback
host = '192.168.0.129'  
port = 31415

在设置中,并在处理串行数据后:

try:
    bline = strline.encode('utf-8')
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host, port))
    s.send(bline)
    s.close()
except:
    print "Ethernet problem: "
    print traceback.print_exc()

其中 strline 包含处理后的数据。正如我所说,这在失败之前或多或少地运行了几个小时。有任何想法吗?

编辑:当 PUTTY 失败时,其错误消息是“网络错误:软件导致连接中止”。

编辑:当界面关闭时,我在 dmesg 中看到:

[2013 年 11 月 6 日星期三 16:53:15] smsc95xx 1-1.1:1.0:eth0:链接
断开 [2013 年 11 月 6 日星期三 16:53:17] smsc95xx 1-1.1:1.0:eth0:链接,100Mbps,全双工, lpa 0x45E1

在 Pi 启动后大约 4 小时。这遵循 sys.exit() 的异常。

4

0 回答 0