2016-11-09 53 views
1

Im玩弄Raspberry Pi,Breakout BoardGSM模塊。我在串行讀取數據時遇到問題。它看起來很不尋常,很多空白行和各種奇怪的條目都來自終端(ssh登錄字段提示)。我只是試圖讀取AT命令的輸入響應。爲我的GSM閱讀AT Command manual,響應非常具體,所以我期待閱讀只是尋找響應。我是新來的串行接口,所以任何有關最佳實踐的建議也將不勝感激。使用pyserial寫入和讀取來自GSM模塊的AT命令數據

#!/usr/bin/python 

import time 
import serial 
import traceback 
import netifaces as ni 
import RPi.GPIO as GPIO 


def resetModule(resetModulePin): 
    GPIO.output(resetModulePin, GPIO.HIGH) 
    time.sleep(0.5) 
    GPIO.output(resetModulePin, GPIO.LOW) 
    time.sleep(0.1) 


def switch(onModulePin): 
    GPIO.output(onModulePin, GPIO.HIGH) 
    time.sleep(2) 
    GPIO.output(onModulePin, GPIO.LOW) 


def writeAT(): 
    i = 0 
    while True: 
     ser.flushInput() 
     ser.flush() 
     out = '' 
     ser.write('AT\r') 
     time.sleep(1) 
     if ser.inWaiting() > 0: 
      out += ser.read(12) 
      print 'GSM Is Up' 
      return out 
     else: 
      i += 1 
     if i > 3: 
      print 'GSM Down' 
      print 'Resetting Module' 
      resetModule(resetModulePin) 
      time.sleep(5) 
      print 'Turning On GSM' 
      switch(onModulePin) 
      time.sleep(5) 
      i = 0 



try: 
    resetModulePin = 15 
    onModulePin = 13 

    GPIO.setmode(GPIO.BOARD) 
    GPIO.setup(onModulePin , GPIO.OUT) 
    GPIO.setup(resetModulePin, GPIO.OUT) 

    ser = serial.Serial(port='/dev/ttyAMA0', baudrate=115200) 

    ser.isOpen() 
    answers = ['yes', 'y'] 
    while True: 
     out = writeAT() 
     if out != '': 
      print out 
      break 
    question = raw_input('Do you want to powerdown GSM?:').lower() 
    if question in answers: 
     print 'Powering Off GSM' 
     switch(onModulePin) 
     ser.close() 
    GPIO.cleanup() 
except KeyboardInterrupt, e: 
    GPIO.cleanup() 
except Exception,e : 
    traceback.print_exc() 
    GPIO.cleanup() 

OUTPUT(注意空行)#Debugging

[email protected]:~/Desktop $ sudo python Newpy 
GSM Down 
Resetting Module 
Turning On GSM 
GSM Is Up 



Do you want to powerdown GSM?: 

回答

0

嘗試ser.write('AAAAAAAT')this。顯然,GSM中斷板上的SIM908會嘗試自動檢測波特率,並且必須爲此提供一些額外的數據。

編輯或嘗試this (post of Tue Nov 25, 2014 11:41 pm) —檢查SIM908上「充電」跳線的設置。

+0

我特別設置了波特率,但是我會試一試。 – iNoob

+0

@iNoob聽起來不錯!我看到你正在專門設置RPi上的波特率,但這並不意味着GSM具有相同的設置。當我讀到你的症狀時,我首先想到的是「波特率不匹配!」所以我檢查了谷歌,看看它是否發生在其他人身上。 – cxw

+0

我仍然獲得奇數輸出'GSM向下 設模塊 開啓GSM GSM是最多 IIIIIIIIIIII 你想關機GSM:' – iNoob