2016-09-04 6 views
2

У меня возникли проблемы со следующим кодом:Загрузка переменные из TXT

f=open('config.txt') 
lines=f.readlines() 
print(lines[1]) 
print(lines[3]) 
print(lines[5]) 
print(lines[7]) 
print(lines[9]) 
print(lines[11]) 

#Import and define 
import serial 
import time 
time.sleep(5) 

#Settings 
Port = lines[1] 
TargetMaxVoltage = float(lines[3]) 
TargetStartVoltage = float(lines[5]) 
TargetIntervalVoltage = float(lines[7]) 
DelayTime = float(lines[9]) 
LogInterval = float(lines[11]) 
CV = True 

ser = serial.Serial(Port, 9600) 
TargetStartVoltageLock = TargetStartVoltage 


#Starting Settings 
ser.write(b'>Start\r\n') 
ser.write(b'>VoSet 0.5\r\n') 

time.sleep(1) 

ser.write(b'>expMode 1\r\n') 
ser.write(b'>runTime 1000000000\r\n') 
ser.write(b'>stDly 1000000000\r\n') 
ser.write(b'>IoSet 1\r\n') 
ser.write(b'>Imax 50\r\n') 
ser.write(b'>Imin 1\r\n') 
ser.write(b'>FarEfc 1\r\n') 
ser.write(b'>MolMax 9999\r\n') 

LogTimeInterval = ">logIntv "+str(format(LogInterval, '.4f'))+"\r\n" 
ser.write(LogTimeInterval.encode('utf-8')) 

time.sleep(5) 


#Running Method None CV Screening 
while (TargetStartVoltage != TargetMaxVoltage and CV == False): 
    DataSend = ">VoSet "+str(format(TargetStartVoltage, '.2f'))+"\r\n" 
    print (DataSend) 
    ser.write(DataSend.encode('utf-8')) 
    TargetStartVoltage += TargetIntervalVoltage 
    time.sleep(DelayTime) 


#Running Method CV Screening 
CVComplete = False 
while (TargetStartVoltage <= TargetMaxVoltage and CV == True and CVComplete  != True): 
    DataSend = ">VoSet "+str(format(TargetStartVoltage, '.2f'))+"\r\n" 
    print (DataSend) 
    ser.write(DataSend.encode('utf-8')) 
    TargetStartVoltage += TargetIntervalVoltage 
    time.sleep(DelayTime) 
else: 
    TargetStartVoltage -= 2*TargetIntervalVoltage 
    while(TargetStartVoltageLock <= TargetStartVoltage and CV == True and CVComplete != True): 
     DataSend = ">VoSet "+str(format(TargetStartVoltage, '.2f'))+"\r\n" 
     print (DataSend) 
     ser.write(DataSend.encode('utf-8')) 
     TargetStartVoltage -= TargetIntervalVoltage 
     time.sleep(DelayTime) 
    else: 
     CVComplete = True 

    ser.close() 

И я получаю следующее сообщение об ошибке:

Traceback (самые последний вызов последнего): Файл «C : \ Users \ Mikkel \ Desktop \ Python Scripts \ CV_and_Screeningv100.py ", строка 24, в ser = serial.Serial (порт, 9600) Файл" C: \ Users \ Mikkel \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ serial \ serialwin32.py ", строка 31, в описание товара init super (Serial, self). init (* args, ** kwargs) Файл «C: \ Users \ Mikkel \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ serial \ serialutil.py", Строка 182, в init self.open() Файл «C: \ Users \ Mikkel \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ serial \ serialwin32.py", строка 62, в открывшемся повышении SerialException ("can не открывать порт {! r}: {! r} ". format (self.portstr, ctypes.WinError())) serial.serialutil.SerialException: не удалось открыть порт 'COM11 \ n':
FileNotFoundError (2 , 'Система не может найти указанный файл.', Нет, 2)

Я загрузки данных из текстового файла под названием «config.txt», и кажется, что это

Port = lines[1]

или

ser = serial.Serial(Port,9600) 

, которые являются проблемой. Я использую неправильный формат? Я попытался ввести «str», «init» и «float», но ничего не работает. Данные на линиях [1] - это COM11, который является текущим портом.

+0

Вы не можете использовать 'txt' линии напрямую, питон будет автоматически сортируется это. Добавьте строку идентификации для каждого значения. Например: 'Port # com11 #' и 'a = {e.split (" # ") [0]: e.split (" # ") [1] для e в строках}; 'может вызывать' a ["Port"] 'as port_name. – dsgdfg

+0

Отображение определения порта в «Диспетчере устройств» или можно найти вручную. [Здесь] (http://stackoverflow.com/questions/12090503/listing-available-com-ports-with-python) – dsgdfg

ответ

0

Оформить регистрацию в журнале ошибок записана не открывается COM11\n, поэтому вам нужно удалить новую строку (\n).

Пример: Port.strip()

+1

Изменить ответ для 'lines = [e.strip() для e в строках]' – dsgdfg

+0

Добавление полосы после того, как порт работал отлично! – Troldtoft

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