你好stackoverflow社区,我一直在做一个个人项目,我需要一些帮助。我有一个RaspberryPi,我用它通过usb到串行连接存储来自PC的消息。目前,我可以使用Putty通过COM端口3(请求用户id/密码)连接到RPi,并给我一个shell(ttyAMA0)。我的最终目标是用python编写一段代码来监听来自PC的通信(也用python编写),这样当我键入一条消息(即“hello world”)时,它将发送给COM3上的RPi,RPi将接收它并将其保存到文件中。在
我的方法可能是错误的(显然,因为它不起作用),但这是我目前所掌握的:
这个Python脚本在RPi上运行(我通过网络连接(SSH)登录),它正在通过ttyAMA0监听来自PC的消息
import serial
import time
def readlineCR(port):
rv = ""
while True:
ch = port.read()
rv += ch
if ch=="\r' or ch=='';
return rv
port = serial.Serial("/dev/ttyAMA0", baudrate=115200, timeout = 3.0)
while True:
rcv = readlineCR(port)
print 'message received: ' + repr(rcv)
此Python脚本正在PC上运行
^{pr2}$如有任何建议,我们将不胜感激!在
我不得不在命令行.txt文件,这样就不会提示我使用串行控制台。不需要尝试传递凭据。在
参考文献: http://elinux.org/Serial_port_programming
是的,你必须注释掉告诉raspi使用ttyAMA0的行。 请看,默认情况下,终端绑定到ttyAMA0,因此您不能将其用于其他任何用途。我的意思是,即使你用编程的方式和它“对话”,你也会用操作系统“说话”,而不是用你的Python进程。 在“/etc/inittab”底部的某个地方,您将看到有问题的行。 当您注释掉它,并重新启动时,您将能够使用它作为普通的COM端口与pyserial(从两端)。虽然我会在你的地方小心,因为正常的RS232规格给出10V和输出引脚在raspi是3.5V,如果我没有严重错误。它可能工作正常,也可能是一个灾难后,你离开它一段时间,或它只是无法工作更长的电缆。 你需要一些集成电路,比如maxcom或者其他什么来调节电压。或者,只要使用两个usb2串行转换器,一个在PC上,另一个在raspi上,你不需要做任何特殊的事情来工作。在
如果我没搞错(无法在这里测试),那么您没有在根目录末尾发送
\n
,并且密码(ser.write()
没有像print()
那样添加它们),因此您没有正确登录。在顺便说一句,让脚本等待每个提示不会有什么影响——如果您在RPi之前启动程序,登录将丢失。在
编辑:如果这不起作用,尝试运行a serial line sniffer或运行Wireshark并检查USB协议(更困难),这样可以监视到底发生了什么。在
相关问题 更多 >
编程相关推荐