我正在尝试通过串口与一块自制的卡进行通信,因此使用了pySerial。在超级终端中,一切工作正常。我可以写:
$ audio on并且音频已启用,但如果我使用
ser = serial.Serial("COM1", 38400)
ser.write("audio on\r\n")什么都没发生。但是,我可以读取传入的数据,所以这不是通信的问题。如果我将\r\n更改为仅\n或\r,也无济于事。
编辑:有时我实际上得到了反馈:当发送与HyperTerminal中的工作完全相同的命令时,没有这样的命令。设置也与HyperTerminal中的设置完全相同。
解决方法:要使其正常工作,我必须发送一个字符和一个字符,并以\r结束传输。
发布于 2010-06-25 20:23:01
买一个示波器(你有一个,对吧?)注意串行线。通过它每秒发送一个字符,并查看范围上发生了什么(将其设置为在起始位上触发)。串行端口位的顺序为: start、LSB.MSB,奇偶校验,停止。
看看是否有字符无法通过,或者是否有模式。另一种可能性是,所有的东西实际上都出了端口,而你的板上的字符正在丢失。
发布于 2010-06-25 20:31:42
如果上述所有操作都已完成,请尝试将字符串放入一个字节数组并通过write命令发送该字符串。只是猜测而已。
发布于 2014-04-13 04:48:43
通过超级终端发送字符时,字符的传输速度与您键入的速度相同。通过pyserial发送字符,它们以连续流的形式传送。接收器(特别是在高波特率时)可能会丢弃它们,这取决于接收器的性质。
此外,当您向解释器发送命令时,您只需要\r终止符(不带\n),(这通常是hyperterm发送的所有内容)。但是,如果只是显示值,则可能需要\n来生成新行。
https://stackoverflow.com/questions/3117580
复制相似问题