2016-02-25 3 views
0

В настоящее время я работаю над некоторым кодом для одного из моих классов, который показан здесь (изменено имя/адрес, чтобы скрыть имена).Ошибка кода, когда одно устройство не найдено рядом с PyBluez

# coding=utf:8 
#————————————————————————Attendance Checker Start————————————————————————# 
import bluetooth 
import time 

#-----Function Definition Start-----# 
def student_check(index): 
    result = bluetooth.lookup_name(blue_address_list[index], timeout=1) 

    if (result is not None): 
     return True 
    else: 
     return False 
#-----Function Definition End-----# 


#————————Defined Dictionary Start————————# 
blue_student_list = ['Name1', 'Name2', 'Name3', 'Name4', 
        'Name5', 'Name6', 'Name7', 'Name8', 
        'Name9'] 
blue_address_list = ['Address1', 'Address2', 'Address3', 'Address4', 'Address5', 'Address6', 'Address7', 'Address8', 'Address9'] 
#—————————Defined Dictionary End—————————# 

#———————————————Print Method Start———————————————# 

print ' ' 
time.sleep(1) 
print 'Checking who is here on ' + time.strftime('%b %d, %Y', time.gmtime()) 
print ' ' 
time.sleep(1) 

for i in range(0, len(blue_address_list)): 
    if (student_check(i)): 
     print blue_student_list[i] + ': Present ' 
    else: 
     print blue_student_list[i] + ': Absent ' 

print 'Script Completed' 

#————————————————Print Method End————————————————# 

#—————————————————————————Attendance Checker End—————————————————————————# 

Моя проблема в том, когда начинается скрипт, я получаю этот вывод.

Checking who is here on Feb 24, 2016 

Name1: Present 
Name2: Absent 
Name3: Absent 
Name4: Absent 
Name5: Absent 
Name6: Absent 
Name7: Absent 
Name8: Absent 
Name9: Absent 

Script Completed 

Моя проблема с этим не в том, чтобы они отсутствовали. У меня есть другое устройство в паре под именем7, которое говорит, что отсутствует, несмотря ни на что. Я считаю, что он фактически проверяет первый и терпит неудачу, когда один из них отсутствует. Причина, по которой я думаю, это потому, что все они отсутствуют в то же самое время, у нее нет никакой задержки, в отличие от первой, которая имеет задержку при проверке ближайшего устройства.

+0

Не используйте '! = None'; use 'is not None'. – zondo

+0

Изменен код для этого, еще не повезло. @zondo – dylan

+1

'blue_address_list .__ sizeof __()' возвращает размер списка в памяти в байтах. Возможно, вам нужен 'range (0, len (blue_address_list))' или словарь, который сопоставляет адреса с именами, поэтому вы можете передать адрес непосредственно в 'student_check', а затем использовать адрес для поиска имени при отображении результатов. –

ответ

1

_ _sizeof__ возвращает внутренний размер в байтах для данного объекта, а не количество элементов. Я думаю, вы должны использовать вместо него len(blue_address_list).

Редактировать: увеличение таймаута решит проблему, кажется bluetooth.lookup_name не может ответить на заданное время.

+0

Я действительно вставил в свой старый код, у которого не было исправления. Обновлено Q сейчас. @FatmaT – dylan

+0

Вы пытались увеличить таймаут, который может быть причиной. – FatmaT

+0

В этом была проблема, я увеличил таймаут на «result = bluetooth.lookup_name (blue_address_list [index], timeout = 1)» и установил таймаут на 5, и теперь он исправлен. Благодаря! Отредактируйте свой ответ, и я отметю его решение. @FatmaT – dylan

Смежные вопросы