我正在Raspberry Pi上运行python 2.7代码,该代码从Arduino接收串行数据,处理它,并通过wifi链接将其发送到Windows框。 Pi连接到以客户端桥接模式运行的Linksys路由器,该路由器通过wifi连接到Windows机箱所连接的另一个Linksys路由器。 Pi中的代码在某些(显然)随机间隔中运行正常,然后从Windows框中无法访问Pi。
我正在Windows机器上运行PUTTY以连接到Pi,当发生故障时,我收到一条消息,指出存在网络错误并且无法访问Pi。从Windows机器Ping到Pi工作正常,直到出现错误,此时它产生“从192.168.0.129回复:目标主机无法访问”。 Pi连接的客户端桥接路由器仍然可以访问。
我在Pi上的网络代码包含在异常处理程序中,当它失败时会显示以下内容:
以太网问题:
Traceback(最近一次调用最后一次): 在模块
中的文件“garage.py”,第108行 s.connect((主持人,港口))
文件“/usr/lib/python2.7/socket.py”,第224行,在meth
中 return getattr(self._sock,name)(* args)
错误:[Errno 113]无主机路线
无
相关的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中看到了这一点:
在Pi启动后大约4个小时。这跟在异常的sys.exit()之后。[Wed Nov 6 16:53:15 2013] smsc95xx 1-1.1:1.0:eth0:link down
[Wed Nov 6 16:53:17 2013] smsc95xx 1-1.1:1.0:eth0:link up,100Mbps,full-duplex,lpa 0x45E1