Problems with sending commands over pySerial

偶尔善良 提交于 2020-01-06 06:05:09

问题


I'm trying to talk to a home made card over a serial port, and is therefor using pySerial. In Hyperterminal, everything works fine. I can write:

$ audio on

and the audio is enabled, but if I use

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

nothing happens. I can read incoming data however, so it's not something wrong with the communication. I doesn't help if I change \r\n to just \n or \r either.

EDIT: Sometime I actually get the feedback: No such command when sending the exact same command as works from HyperTerminal. The setup is also the exact same as in HyperTerminal.

Solved: To make it work, I had to send one and one character, and ending the transmission with \r.


回答1:


Get an oscilloscope (you've got one, right?) and watch the serial line. Send one character per second through it and see what comes up on the scope (set it to trigger on the start bit). Serial port bits are in the order: start, LSB .. MSB, parity, stop.

See if there are characters that don't get through, or if there's a pattern. Another possibility is that everything is actually making it out the port, and your board is dropping characters.




回答2:


  1. Triple check that the baud rate of the device is indeed 38400
  2. Triple check parity, stop bits, etc
  3. Be aware of signal degradation for serial transmissions over long distances (probably not your issue)

If all the above checkout try putting the string into a byte array and sending that through the write command. Just a guess.




回答3:


Sending characters via Hyperterminal deliver characters at the speed you type them. Sending characters through pyserial they are delivered as a continuous stream. The receiver (especially at high baud rates) could drop them, depending on the nature of the receiver.

Also, when you send commands to an interpreter, you only need the \r terminator (without the \n), (this is all that is sent by hyperterm, normally). HOWEVER, if you are just displaying the values, you may need the \n to generate the new line.



来源:https://stackoverflow.com/questions/3117580/problems-with-sending-commands-over-pyserial

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!