python - 从 txt 加载变量

标签 python database error-handling serial-port

我在使用以下代码时遇到问题:

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 (most recent call last): File "C:\Users\Mikkel\Desktop\Python Scripts\CV_and_Screeningv100.py", line 24, in ser = serial.Serial(Port, 9600) File "C:\Users\Mikkel\AppData\Local\Programs\Python\Python35\lib\site-packages\serial\serialwin32.py", line 31, in init super(Serial, self).init(*args, **kwargs) File "C:\Users\Mikkel\AppData\Local\Programs\Python\Python35\lib\site-packages\serial\serialutil.py", line 182, in init self.open() File "C:\Users\Mikkel\AppData\Local\Programs\Python\Python35\lib\site-packages\serial\serialwin32.py", line 62, in open raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError())) serial.serialutil.SerialException: could not open port 'COM11\n':
FileNotFoundError(2, 'The system cannot find the file specified.', None, 2)

我正在从名为“config.txt”的 txt 文件中加载数据,它似乎是

端口=行[1]

ser = serial.Serial(Port,9600)

这就是问题所在。我使用了错误的格式吗?我试图引入“str”、“init”和“float”,但没有任何效果。 lines[1]上的数据是COM11,也就是当前端口。

最佳答案

检查错误日志 有写无法打开 COM11\n 所以你必须删除换行符 (\n)。

示例:Port.strip()

关于python - 从 txt 加载变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39318065/

相关文章:

python - 可以让 setuptools extras_require 覆盖 install_requires 的要求吗?

python - 什么时候使用 StringIO,而不是加入字符串列表?

database - 即使将 unique 设置为 true,Sequelize 也允许非唯一的列条目?

sql - 运行命令行 SQLite 查询并退出

ruby-on-rails - 我找不到我的rails line_items Controller 创建操作错误?

python - 为什么这个 python 字典会使用 setdefault() 乱序创建?

database - 将关系 R 分解为 1NF 后存在的最小表数?

vbscript - VBScript-使用错误处理来确定任务是否存在

vba - VBA : Search, save and replace by rows according to conditions

javascript - 如何应用ajax获取下拉列表中的数据?