我正在用一些覆盆子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上的指示灯将亮起。
谢谢!
答案 0 :(得分:0)
Python非常挑剔缩进,因为它使用缩进来对代码块进行分组。似乎代码使用4个空格(或制表符)进行缩进,除了第30行到第35行,它只有两个空格。确保缩进在整个代码中保持一致,它应该可以解决您的问题。
更新:发现新错误时,请确保您是否使用空格或制表符。浏览代码的每一行,每个标签使用4个空格,或确保它使用标签来达到正确的缩进。
有关修复缩进的更多信息:How to fix python indentation 另请查看:http://www.annedawson.net/Python_Spaces_Indentation.html
在修复此代码时,请尝试使用Google搜索以获取有关缩进和Python的更多信息。