使用Python通过seri与Raspberry Pi通信

2024-04-27 12:23:05 发布

您现在位置:Python中文网/ 问答频道 /正文

你好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}$

如有任何建议,我们将不胜感激!在


Tags: import脚本true消息portserialchstackoverflow
3条回答

我不得不在命令行.txt文件,这样就不会提示我使用串行控制台。不需要尝试传递凭据。在

参考文献: http://elinux.org/Serial_port_programming

是的,你必须注释掉告诉raspi使用ttyAMA0的行。 请看,默认情况下,终端绑定到ttyAMA0,因此您不能将其用于其他任何用途。我的意思是,即使你用编程的方式和它“对话”,你也会用操作系统“说话”,而不是用你的Python进程。 在“/etc/inittab”底部的某个地方,您将看到有问题的行。 当您注释掉它,并重新启动时,您将能够使用它作为普通的COM端口与pyserial(从两端)。虽然我会在你的地方小心,因为正常的RS232规格给出10V和输出引脚在raspi是3.5V,如果我没有严重错误。它可能工作正常,也可能是一个灾难后,你离开它一段时间,或它只是无法工作更长的电缆。 你需要一些集成电路,比如maxcom或者其他什么来调节电压。或者,只要使用两个usb2串行转换器,一个在PC上,另一个在raspi上,你不需要做任何特殊的事情来工作。在

^{1}$

如果我没搞错(无法在这里测试),那么您没有在根目录末尾发送\n,并且密码(ser.write()没有像print()那样添加它们),因此您没有正确登录。在

顺便说一句,让脚本等待每个提示不会有什么影响——如果您在RPi之前启动程序,登录将丢失。在

编辑:如果这不起作用,尝试运行a serial line sniffer或运行Wireshark并检查USB协议(更困难),这样可以监视到底发生了什么。在

相关问题 更多 >