2015-12-15 51 views
4

我试图通过串行端口发送文件(在这种情况下是.jpg图像)。通过Python的串行端口发送文件

目前,它的工作原理是调用外部脚本:

subprocess.Popen(['./sendFile.sh','myImage.jpg']).communicate() 

其中sendFile.sh是:

cp /home/pi/$1 /dev/ttyAMA0 

这种方法可行,但由于某种原因不稳定。有时我的Python程序在传输文件后停止。

我想知道是否有办法在Python中做到这一点,而不是调用脚本来获取帮助?我搜索了XMODEM,但似乎两端都必须安装它。我正在将图像发送到GPRS芯片,该芯片不允许我修改任何代码。所以安装东西到接收端是不可能的。

+1

您是否尝试过打开设备特殊文件('的/ dev/ttyAMA0')和写作呢? – mpez0

+0

我确实有一些初始化来设置端口和波特率,我可以用'serial.write(someString)'将字符串写入它。据推测,我可以像这样传输文件,但我无法找到语法。 – RRWW

+0

'shutil.copyfileobj(打开('/ home/pi/myImage.jpg','rb'),serial_obj)'在你的情况下工作吗? (注意:使用'with'语句并关闭真实代码中的文件)。 – jfs

回答

1
import serial 
s = serial.Serial("/dev/ttyAMA0") 
s.write(open("target.txt","rb").read()) 
0

您可以使用os.open直接打开一个开发:

f = os.open('/dev/ttyAMA0', os.O_RDWR) 
f.write(open("myImage.jpg").read)) 
f.close()