通过pySerial发送命令的问题

时间:2010-06-25 11:27:57

标签: python serial-port pyserial

我正试图通过串口与自制卡通信,因此使用pySerial。在Hyperterminal中,一切正常。我可以写:

$ audio on

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

ser = serial.Serial("COM1", 38400)
ser.write("audio on\r\n")
没有任何反应。但是我可以读取传入的数据,因此通信没有问题。如果我将\ r \ n更改为\ n或\ r \ n,我无能为力。

编辑:有时我实际上得到了反馈:当发送与HyperTerminal相同的命令时,没有这样的命令。设置也与HyperTerminal完全相同。

解决: 为了使它工作,我必须发送一个和一个字符,并用\ r。

结束传输

3 个答案:

答案 0 :(得分:2)

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

查看是否存在无法通过的字符,或者是否存在模式。另一种可能性是,所有东西实际上都是从端口出来,而你的电路板正在丢弃字符。

答案 1 :(得分:0)

  1. 三重检查设备的波特率确实是38400
  2. 三重检查奇偶校验,停止位等
  3. 请注意远距离串行传输的信号衰减(可能不是您的问题)
  4. 如果以上所有结账尝试将字符串放入字节数组并通过write命令发送。只是一个猜测。

答案 2 :(得分:0)

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

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