我正在尝试通过串行端口与自制的卡交谈,因此使用仅在辅助端口。在高端,一切正常。我可以写:

$ audio on

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

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

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

编辑:有时候我实际上会得到反馈:发送与Hyperternal的工作完全相同的命令时没有这样的命令。该设置也与高端中完全相同。

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

有帮助吗?

解决方案

获取示波器(您有一个,对吗?)并观看串行线。每秒发送一个字符,然后查看范围上出现的内容(将其设置为启动位置)。串行端口位按顺序:开始,LSB .. MSB,奇偶校验,停止。

查看是否有字符无法通过,或者是否有模式。另一种可能性是,一切实际上都将其列入端口,而您的董事会正在删除字符。

其他提示

  1. 三重检查设备的波特率确实是38400
  2. 三重检查奇偶校验,停车位等
  3. 请注意长距离串行传输的信号降解(可能不是您的问题)

如果以上所有结帐尝试将字符串放入字节数组中,并通过写入命令将其发送。只是一个猜测。

通过超端发送字符以您输入的速度传递字符。通过催眠来发送字符,它们作为连续流传递。根据接收器的性质,接收器(尤其是在高波特率下)可能会降低它们。

另外,当您将命令发送到解释器时,您只需要 r terminator(无 n)(这就是由超级术语发送的所有内容,通常是通常的)。但是,如果您只是显示值,则可能需要 n来生成新行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top