-1

我正在编写一个程序,该程序打开并将通过串行端口发送的数据记录到文本文件中。我目前正在添加功能以允许在运行时重新配置串行端口。我提示用户一次选择要更改的变量,以便我自己保持简单(我也会欣赏优雅的解决方案)。

创建串行实例 (serial.Serial()) 的 pyserial 函数具有以下参数:

import serial
ser = serial.Serial(port=0, baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0, writeTimeout=None, dsrdtr=None, interCharTimeout=None) #default values shown

我注意到虽然大多数是 int() 参数,但有些不是,即“超时”。

我知道 usingint(raw_input("for the int() type variables))可以让我安全地分配 int 变量,但是默认为 None 的变量需要一个input()函数来正确分配可能的 None 值。

我在其他地方读到 input() 通常不被推荐,因为它有可能被利用(关于 eval() 的东西?)。那么我应该如何处理这些输入?即使用 serial.Serial() where writeTimout = str(None) 会引发错误。

谢谢!

4

1 回答 1

0

最安全的方法就是将用户的输入作为字符串接受,然后对其进行解析。即让用户输入键=值对:

baudrate = 9600
parity = N

然后通过拆分“=”并剥离两侧来解析这些对。使用字符串查找表分配变量(baudrate字符串映射到baudratevar,依此类推)。这样,您可以以None任何方式处理值。

这种方法简单安全。input如果用户输入不是有效的 Python,则会引发异常,而您可能不希望这样。

于 2010-02-09T18:08:13.577 回答