我正在编写一个程序,打开并将通过串口发送的数据记录到文本文件中。我目前正在添加允许在运行时重新配置串行端口的功能。我提示用户选择一次更改一个变量,以便让自己保持简单(我也会欣赏优雅的解决方案)。
创建串行实例的pyserial函数(serial.Serial())具有以下参数:
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()参数,但有些不是,即“超时”。
我知道使用int(raw_input("for the int() type variables))
会让我安全地分配int变量,但默认情况下使用None的变量需要input()
函数来正确分配可能的None值。
我在其他地方读过,通常不建议使用input(),因为它有可能被利用(关于eval()的东西?)。那我该如何处理这些投入呢?即使用serial.Serial(),其中writeTimout = str(None)会引发错误。
谢谢!
答案 0 :(得分:0)
最安全的方法是将用户的输入作为字符串接受,然后解析它。即让用户输入key = value对:
baudrate = 9600
parity = N
然后通过拆分'='并剥离两边来解析这些对。使用字符串查找表分配变量(baudrate
字符串映射到baudrate
var,依此类推)。这样您就可以以任何方式处理None
值。
这种方法简单而安全。如果用户输入不是有效的Python,input
将引发异常,您可能不希望这样做。