2017-01-30 7 views
-1

Я использую следующий кодPython ошибка «целое требуется»

# simpleSerialSend.py 
import sys 
import serial 
import time 
PORT = 'COM4' # The port my Arduino is on, on my WinXP box. 

def main(val=5): 
    # Open a connection to the serial port. This will reset the Arduino, and 
    # make the LED flash once: 
    ser = serial.Serial(PORT) 

    # Must given Arduino time to rest. 
    # Any time less than this does not seem to work... 
    time.sleep(1.5) 

    # Now we can start sending data to it: 
    written = ser.write(val) 
    ser.close() 
    print ("Bytes Written to port:", written) 
    print ("Value written to port: '%s'"%val) 

if __name__ == '__main__': 
    args = sys.argv 
    try: 
     main(args[1]) 
    except IndexError: 
     main() 

и я вроде новичок в Python. Итак, ошибка, которую я получаю, похожа на описание, указанное целым числом. Я запускаю его в своем cmd со следующим правилом: c: \ pyModules \ simpleSerialSend.py 5 Он работает нормально, только я получаю сообщение об ошибке. Что делает код, это отправка переменной в arduino, так что свет мигает. Код arduino правильный.

+0

Ваш вопрос будет легче читать, если вы скомпилировали свой код, удалив пустую строку между каждым заявлением. Кроме того, ваш отступ сломан. Трудно сказать, сколько кода принадлежит 'main'. –

+0

Попробуйте изменить 'main (args [1])' to 'main (int (args [1]))' – eyllanesc

+0

Когда вы получаете сообщение об ошибке в Python, лучше всего вставить * trace * traceback, так как он часто говорит точно, что и где вы поступили не так. –

ответ

1

Аргументы вступают как str. Таким образом, решение вашей проблемы на самом деле просто преобразовать строку в int

main(int(args[1])) # assuming args[1] is a parsable numeric string 

Кроме того, возможно, взглянуть на argparse.

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