2016-02-21 1 views
-1

У меня есть этот код, который работает и устанавливает GPIOS 7,11,13,15 к моему Raspberry Pi 2HIGH или LOW, так что я могу обратиться к 16 мультиплексора канала соответственно, а затем считывает аналоговое напряжение через и MCP3002 SPI, и возвращается, если было нажатие клавиши или ключ выпущен, плюс который был ключом. Вот код:Как я могу назвать эти переменные в основном?

def findpress(keypressed, keyreleased, key): 
    x=0 
    while True: 
     binary_x="{0:04b}".format(x) 
     GPIO.output(7, binary_x[0]) 
     GPIO.output(11, binary_x[1]) 
     GPIO.output(13, binary_x[2]) 
     GPIO.output(15, Binary_x[3]) 
     channeldata_1 = read_mcp3002(0) # get CH0 input 
     channeldata_2 = read_mcp3002(0) # get CH0 input 
     channeldata_3 = read_mcp3002(0) # get CH0 input 
     channeldata = (channeldata_1+channeldata_2+channeldata_3)/3 
     # 
     # Voltage = (CHX data * (V-ref [= 3300 mV] * 2 [= 1:2 input divider])/1024 [= 10bit resolution] 
     # 
     voltage = int(round(((channeldata * vref * 2)/resolution),0))+ calibration 
     if DEBUG : print("Data (bin) {0:010b}".format(channeldata)) 
     if x==15 :  # some problem with this sensor so i had to go and twicked the thresshold 
      voltage = voltage - 500 
     if voltage<=2500 and keyreleased==True: 
      return keypressed=True 
      return key=x+1 
     if voltage<=2500 and keyreleased==False 
      return keypressed=True 
      return key=x+1 
     if voltage>2500 and keypressed==True: 
      x=x+1 
      return keyreleased==True 
     if x == 15: 
      x=0 

Как я могу назвать эти переменные в main?

+1

* Как я могу назвать эти переменные в основном? * << WHICH переменные? Кроме того, вы можете захотеть показать некоторые из ваших «основных» процедур или любой другой процедуры, вызывающей этот ... –

+0

это моя проблема! У меня есть нажатые клавиши, keyreleased и ключевые переменные, возвращаемые этой функцией. Правильно ? как я могу спросить их в основном? –

+0

скажем, если нажата клавиша == Правда? –

ответ

0

Вы принимаете три аргумента до Эта функция, предположительно от Основная процедура.

Использование кортежа распаковке, просто возвращает кортеж:

print(foo(1, 2, 3)) # should print: 2, 4, 0 

# unpacking the tuple like so: 
x, y, z = foo(1,2,3) 
print x, y, z 

def foo(x, y, z): 
    x +=1 
    y +=2 
    z = 0 

В своем коде вы можете просто вернуть некоторую комбинацию как:

return keypressed, keyreleased, key 

Обратите внимание, что несколько операторов возврата, как это не будет выполнять, как вы ожидать, а не возвращать два значения в последовательности, он просто остановится после первого return:

 return keypressed=True 
     return key=x+1   # This statement will NOT execute 

Заметим также, что такого рода обозначений вы сейчас реализующего собирается сделать оценку и вернуть truthy значение:

return keypressed=False # returns True if keypressed==False else False 

Если это ваше намерение, то в порядке, но в противном случае вы должны сделать ваши задания перед заявлениями о возврате. Работа вашего кода и, в частности, ваши заявления о возврате выглядят так, как будто они не имеют смысла, и я не собираюсь их устранять.