2015-12-15 83 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()