【问题标题】:Sending data to PLC over serial port in Raspberry Pi using python使用python通过Raspberry Pi中的串口向PLC发送数据
【发布时间】:2013-08-16 22:33:11
【问题描述】:

我在 Debian 安装的 Raspberry Pi 上运行我的 LX 终端。我有一个通过 USB 连接到我的 Raspberry Pi 的 PLC。我想从我的终端使用 python 发送 ASCII 我什至安装了 Python Serial 但我不知道如何使用它。这是我一直在 python 中尝试的代码。我知道串行端口可以工作,因为我使用基于 Linux 的 minicom 将 dsata 发送到 plc 并且它工作正常。今天使用 python 它并没有按照我想要的那样工作

用户 ~$python

>>>import serial
>>>ser =  serial.Serial('/dev/ttyUSB0')
>>>ser.portstr
'/dev/ttyUSB0'
>>>ser

我做错了什么? 任何帮助将不胜感激

【问题讨论】:

  • serial.Serial 需要波特率。对于我的 Rpi3,我使用 - ser=serial.Serial("/dev/TTYUSB0",9600) - 然后我可以使用 - linein=ser.readline() - 我确信 ser 中也有类似的 writeline 方法,但是我没用过。

标签: python serial-port debian raspberry-pi plc


【解决方案1】:
import serial
ser =  serial.Serial('/dev/ttyUSB0', 4800)
while 1:
    inp = raw_input("Enter the data to send or enter 'exit' to exit:")
    if inp=='exit':
        break
    else:
        ser.write(inp)

这段代码以 4800 的波特率与 ttyUSB0 通信。确保您使用的波特率与您的监听器配置监听的波特率相同。

它将用户输入作为字符串并通过串行发送。这发生在一个循环中,直到用户输入退出。

还要确保您在侦听端只运行一个从串行读取的进程,或者其中只有一个将从串行读取,或者它们都将读取其中的一部分。

希望这会有所帮助:)

【讨论】:

  • 我的 PLC 的波特率固定为 57600。我收到此错误:>>> ser = serial.Serial('/dev/ttyUSB0',57600) Traceback(最近一次调用最后一次):文件“”,第 1 行,在 文件“/usr/lib/python2.7/dist-packages/serial/serialutil.py”,第 260 行,在 init 中。 open() 文件 "/usr/lib/python2.7/dist-packages/serial/serialposix.py", 第 276 行, 在 open raise SerialException("could not open port %s: %s" % (self._port, msg))serial.serialutil.SerialException:无法打开端口/dev/ttyUSB0:[Errno 2]没有这样的文件或目录:'/dev/ttyUSB0'
  • /dev/ 是我的系统名称。而不是 /dev/ttyUSB0 你应该使用你的设备的路径。
  • 点赞。对于端口,使用-> ls /dev/ttyUSB* apt-get install minicom minicom -b 57600 -o -D /dev /ttyUSB0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 2022-10-25
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
相关资源
最近更新 更多