【问题标题】:Problems with sending commands over pySerial通过 pySerial 发送命令的问题
【发布时间】:2010-06-25 11:27:56
【问题描述】:

我正在尝试通过串行端口与自制卡通信,因此使用 pySerial。在超级终端中,一切正常。我会写:

$ audio on

音频已启用,但如果我使用

ser = serial.Serial("COM1", 38400)
ser.write("audio on\r\n")

什么都没有发生。但是,我可以读取传入的数据,因此通信没有问题。如果我将 \r\n 更改为 \n 或 \r 也无济于事。

编辑:有时我实际上得到反馈:发送与超级终端完全相同的命令时没有这样的命令。设置也与超级终端完全相同。

已解决: 为了让它工作,我必须发送一个和一个字符,并用 \r 结束传输。

【问题讨论】:

    标签: python serial-port pyserial


    【解决方案1】:

    拿一个示波器(你有一个,对吗?)并观察串行线路。每秒通过它发送一个字符,然后查看示波器上出现的内容(将其设置为在起始位上触发)。串口位的顺序是:开始、LSB .. MSB、奇偶校验、停止。

    查看是否有未通过的字符,或者是否有模式。另一种可能性是所有东西实际上都在输出端口,而您的电路板正在丢失字符。

    【讨论】:

      【解决方案2】:
      1. 三重检查设备的波特率确实是 38400
      2. 三重校验奇偶校验、停止位等
      3. 注意长距离串行传输的信号衰减(可能不是您的问题)

      如果上述所有检查尝试将字符串放入字节数组并通过写入命令发送。只是猜测。

      【讨论】:

        【解决方案3】:

        通过超级终端发送字符会以您键入的速度传送字符。通过 pyserial 发送字符,它们作为连续流传递。接收器(尤其是在高波特率下)可能会丢弃它们,具体取决于接收器的性质。

        此外,当您向解释器发送命令时,您只需要 \r 终止符(没有 \n),(通常这是由 hyperterm 发送的全部内容)。但是,如果您只是显示值,则可能需要 \n 来生成新行。

        【讨论】:

          猜你喜欢
          • 2021-01-07
          • 1970-01-01
          • 1970-01-01
          • 2021-11-14
          • 2013-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多