0

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

$ audio on

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

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

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

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

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

4

3 回答 3

2

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

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

于 2010-06-25T12:23:01.123 回答
0
  1. 三重检查设备的波特率确实是 38400
  2. 三重校验奇偶校验、停止位等
  3. 请注意长距离串行传输的信号衰减(可能不是您的问题)

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

于 2010-06-25T12:31:42.167 回答
0

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

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

于 2014-04-12T20:48:43.287 回答