利用pyserial从gsmmodu读写AT命令数据

2024-10-04 03:26:27 发布

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

我在玩覆盆子派,Breakout Board和{a2}模块。串行读取数据有问题。它看起来非常特别,有很多空白行和各种奇怪的条目,看起来好像来自终端(ssh登录字段提示符)。我只是想读取AT命令的输入响应。阅读我的GSM的AT Command manual,响应是非常具体的,所以我只想阅读我正在寻找的响应。我是新的串行接口这样,所以任何关于最佳实践的建议也将不胜感激。在

#!/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()

输出(注空行)→调试

^{pr2}$

Tags: importoutputgpioiftimedefsleepout
1条回答
网友
1楼 · 发布于 2024-10-04 03:26:27

this尝试ser.write('AAAAAAAT')。显然,GSM分线板上的SIM908试图自动检测波特率,你必须给它一些额外的数据才能这样做。在

编辑或尝试this (post of Tue Nov 25, 2014 11:41 pm)-检查SIM908上“充电”跳线的设置。在

相关问题 更多 >