Python检查使用Raspberry Pi的Internet连接

时间:2014-04-17 21:00:22

标签: python raspberry-pi internet-connection

我正在用一些覆盆子pi为我家建造一个安全摄像头系统。每个相机系统具有的一个功能是显示互联网连接的灯。为此,我使用了python check to see if host is connected to network中的代码并将其修改为。

#! /usr/bin/python

import socket
import fcntl
import struct
import RPi.GPIO as GPIO
import time
pinNum = 8
GPIO.setmode(GPIO.BCM) #numbering scheme that corresponds to breakout board and pin layout
GPIO.setup(pinNum,GPIO.OUT) #replace pinNum with whatever pin you used, this sets up that pin as an output
#set LED to flash forever

def check_connection():

    ifaces = ['eth0','wlan0']
    connected = []

    i = 0
    for ifname in ifaces:

        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        try:
            socket.inet_ntoa(fcntl.ioctl(
                    s.fileno(),
                    0x8915,  # SIOCGIFADDR
                    struct.pack('256s', ifname[:15])
            )[20:24])
            connected.append(ifname)
            print "%s is connected" % ifname 
            while True:
                GPIO.output(pinNum,GPIO.HIGH)
                time.sleep(0.5)
                GPIO.output(pinNum,GPIO.LOW)
                time.sleep(0.5)
                GPIO.output(pinNum,GPIO.LOW)
                time.sleep(2.0)

        except:
            print "%s is not connected" % ifname

        i += 1

    return connected

connected_ifaces = check_connection()

然而,当我通过我的Pi运行代码时,错误显示为:

pi@raspberrypi ~/Desktop $     while True:
>               ^
> TabError: inconsistent use of tabs and spaces in indentation
> ^C

有人知道这个问题吗?抱歉,如果它是基本的,我是Python编程的新手。简而言之,我希望当存在互联网连接时,引脚8上的指示灯将亮起。

谢谢!

1 个答案:

答案 0 :(得分:0)

Python非常挑剔缩进,因为它使用缩进来对代码块进行分组。似乎代码使用4个空格(或制表符)进行缩进,除了第30行到第35行,它只有两个空格。确保缩进在整个代码中保持一致,它应该可以解决您的问题。

更新:发现新错误时,请确保您是否使用空格或制表符。浏览代码的每一行,每个标签使用4个空格,或确保它使用标签来达到正确的缩进。

有关修复缩进的更多信息:How to fix python indentation 另请查看:http://www.annedawson.net/Python_Spaces_Indentation.html

在修复此代码时,请尝试使用Google搜索以获取有关缩进和Python的更多信息。