通过pySerial发送命令的问题
问题描述:
我试图通过串口与自制的卡交谈,并因此使用pySerial。在超级终端中,一切正常。我可以这样写:通过pySerial发送命令的问题
$ audio on
和音频已启用,但如果我用
ser = serial.Serial("COM1", 38400)
ser.write("audio on\r\n")
没有任何反应。但是,我可以读取传入的数据,所以通信没有问题。如果我将\ r \ n更改为\ n或\ r,我也无济于事。
编辑:有时我实际上得到的反馈:当发送完全相同的命令作为超级终端的作品时没有这样的命令。该设置也与超级终端中的完全相同。
解决: 为了使它工作,我必须发送一个和一个字符,并以\ r结束传输。
答
获取示波器(你有一个,对吧?)并观察串行线路,每秒发送一个字符并查看示波器上的内容(将其设置为在起始位上触发)串行端口位的顺序为:开始,LSB,MSB,奇偶校验,停止。
查看是否有不打通字符,或者如果有一个模式,另一种可能是,一切都做了真正出来的端口,您的板下降字符。
答
尝试指定连接的其他参数(波特率除外),如位奇偶校验(我记得还有其他的参数)。
我有pyserial同样的问题,但那是两年前(即我不记得我是如何解决它:()。
答
- 三重检查设备的波特率的确38400
- 三重检查奇偶校验,停止位等
- 要注意长距离串行传输信号衰减(可能不是你的问题)
如果以上所有结帐尝试将字符串放入字节数组并通过写入命令发送。只是一个猜测。
答
通过超级终端发送字符以您输入的速度发送字符。通过pyserial发送字符,它们作为连续流传送。接收器(特别是在高波特率下)可能会降低它们,这取决于接收器的性质。另外,当你向解释器发送命令时,你只需要\ r结束符(不包括\ n),(这是通常由hyperterm发送的全部内容)。但是,如果您只是显示这些值,则可能需要\ n来生成新行。
在我的代码中,我指定了端口,波特率,奇偶校验和超时。我只写了一个简短的例子。不过,我确实看到我有时会得到一些回应,但并非总是如此。这很奇怪。在发送消息之前,我也尝试刷新输出,但即使如此,我也得到完全不同的输出。事实上,即使我发送的命令来自超级终端,我实际上也会从设备中收到'没有这样的命令'的消息。 – martiert 2010-06-25 12:07:09