我写打开,并通过串口发送到一个文本文件中的记录数据的程序。我目前加入的功能,允许在运行时重新配置串行端口。我提示用户选择哪个变量改变一次一个,以保持它的简单为自己(我将不胜感激优雅的解决方案以及)。

这创建串行实例的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变量,但没有默认的变量将需要input()功能正确地分配可能没有价值。

我在别处读到输入()一般不推荐的,因为它具有用于被利用的潜力(一些有关的eval()?)。我应该怎么那么处理这些投入?即,使用serial.Serial()其中writeTimout = STR(无)引发错误。

谢谢!

有帮助吗?

解决方案

在最安全的方式仅仅是接受用户的作为字符串输入,然后解析它。即让用户输入键=值对:

baudrate = 9600
parity = N

然后分析这些对,通过在“=”分裂和剥离两侧。指定用字符串查找表(baudrate字符串映射到baudrate VAR等)的变量。这样,您就可以处理None值你想要的任何方式。

此方法简单,安全。 input将引发异常,如果用户输入不合法的Python,你可能不希望这样。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top