在python中向函数传递字符串

2024-06-08 22:09:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用一个变量将字符串传递给序列号。序列号函数。以下是我想要的:

port = serial.Serial("/dev/ttyAMA0", baudrate=9600,bytesize=serial.SEVENBITS,stopbits=serial.STOPBITS_ONE,parity=serial.PARITY_EVEN,timeout=3.0)

但是,如果我试图将字符串放入像这样的变量中,然后用变量调用函数,就会得到一个错误。在

^{pr2}$

错误如下:

Traceback (most recent call last): File "./cncserver.py", line 34, in port = serial.Serial(serialString) File "/usr/lib/python2.7/dist-packages/serial/serialutil.py", line 260, in init self.open() File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 276, in open raise SerialException("could not open port %s: %s" % (self._port, msg)) serial.serialutil.SerialException: could not open port "/dev/ttyAMA0",baudrate=9600,bytesize=serial.SEVENBITS,stopbits=serial.STOPBITS_ONE,parity=serial.PARITY_EVEN,timeout=3.0: [Errno 2] No such file or directory: '"/dev/ttyAMA0",baudrate=9600,bytesize=serial.SEVENBITS,stopbits=serial.STOPBITS_ONE,parity=serial.PARITY_EVEN,timeout=3.0'

我猜这是因为字符串中的文件路径没有被正确引用,但是我已经花了足够的时间试图弄明白,有人能帮我吗?在

谢谢, 洛恩

这是我修改后的代码:

#parameter settings of the serial port on the PI must match the control
serialPort = "/dev/ttyAMA0"
serialBaudRate = 9600
serialByteSize = serial.SEVENBITS
serialStopBits = serial.STOPBITS_ONE
serialParity = serial.PARITY_EVEN
serialTimeout = 3.0

port = serial.Serial(serialPort,serialBaudRate,serialByteSize,serialStopBits,serialParity,serialTimeout)

以下是新错误:

Traceback (most recent call last): File "./cncserver.py", line 39, in port = serial.Serial(serialPort,serialBaudRate,serialByteSize,serialStopBits,serialParity,serialTimeout) File "/usr/lib/python2.7/dist-packages/serial/serialutil.py", line 250, in init self.parity = parity File "/usr/lib/python2.7/dist-packages/serial/serialutil.py", line 344, in setParity if parity not in self.PARITIES: raise ValueError("Not a valid parity: %r" % (parity,)) ValueError: Not a valid parity: 1


Tags: inpydevportlineserialonefile
1条回答
网友
1楼 · 发布于 2024-06-08 22:09:17
port = serial.Serial("/dev/ttyAMA0", baudrate=9600,bytesize=serial.SEVENBITS,stopbits=serial.STOPBITS_ONE,parity=serial.PARITY_EVEN,timeout=3.0)

不等于

^{pr2}$

这不是字符串,而是作为键对值传递的函数参数。在

"/dev/ttyAMA0", baudrate=9600,bytesize=serial.SEVENBITS,stopbits=serial.STOPBITS_ONE,parity=serial.PARITY_EVEN,timeout=3.0

向函数发送6个不同的参数::-

  1. /dev/ttyAMA0

  2. 波特率为9600

  3. 字节化为七位连环

  4. 停止位组件串行停止位

  5. 奇偶校验组件串行奇偶校验

  6. 超时为3.0

    '"/dev/ttyAMA0",baudrate=9600,bytesize=serial.SEVENBITS,stopbits=serial.STOPBITS_ONE,parity=serial.PARITY_EVEN,timeout=3.0'

只发送一个参数作为

  1. “/dev/ttyAMA0”,波特率=9600,字节大小=七位连环,停止位=串行停止位,奇偶校验=串行奇偶校验,超时=3.0'

至于你想做什么

初始化:

args = ("/dev/ttyAMA0",)
kwargs= {'baudrate':9600,'bytesize':serial.SEVENBITS,'stopbits':serial.STOPBITS_ONE,'parity':serial.PARITY_EVEN,'timeout':3.0}

你想打到哪里就打电话给他们

port = serial.Serial(*args, **kwargs)

相关问题 更多 >