【问题标题】:OSError: [Errno 5] Input/output error on Raspberry PI GPS shield PythonOSError: [Errno 5] Raspberry PI GPS shield Python 上的输入/输出错误
【发布时间】:2021-09-26 20:50:52
【问题描述】:

我有一个 Raspberry PI 3 和一个 GSM/GPRS/GNSS HAT

我想用 Python 从设备中读取 GPS 数据。 我使用了文档中的example code,并对其进行了一些重写。 它完美地工作了几个小时,但是有一次我重新启动了 Raspberry(我之前已经重新启动过它并且工作正常),它在几次成功读取后开始抛出这个: p>

Traceback (most recent call last):
      File "/home/ubuntu/gps.py", line 90, in listenForGpsInfo
        while ser.inWaiting() > 0:
      File "/usr/lib/python3/dist-packages/serial/serialutil.py", line 594, in inWaiting
        return self.in_waiting
      File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 531, in in_waiting
        s = fcntl.ioctl(self.fd, TIOCINQ, TIOCM_zero_str)

OSError: [Errno 5] Input/output error

这是我的代码:

def listenForGpsInfo(callback):
    ser = serial.Serial("/dev/ttyS0",baudrate=115200)

    W_buff = [b"AT+CGNSPWR=1\r\n", b"AT+CGNSSEQ=\"RMC\"\r\n", b"AT+CGNSINF\r\n", b"AT+CGNSURC=2\r\n", b"AT+CGNSTST=1\r\n"]
    ser.write(W_buff[0])
    ser.flushInput()
    data = ""
    num = 0

    while True:
        time.sleep(utils.GPS_INTERVAL_IN_SECONDS)
        try:
            while ser.inWaiting() > 0:
                data += ser.read(ser.inWaiting()).decode()
                print(data)
            if data != "":
                if  num < len(W_buff)-1:
                    print(num)
                    ser.write(W_buff[num+1])
                    num =num +1
                else:
                    ser.write(W_buff[2])
                    if "+CGNSINF" in data:
                        data = str(data)
                        gpsInfo = parseGpsData(findInfoLine(data))
                        if(gpsInfo is not None):
                            callback(gpsInfo)

                
                data = ""
        except Exception as e:
            if ser != None:
                ser.close()
            traceback.print_exc()
            listenForGpsInfo(callback)
            return

这是串行命令的文档:https://www.waveshare.com/w/upload/3/3d/SIM868_GNSS_Application_Note_V1.00.pdf

我尝试了很多东西,但我无法解决它。 我尝试过的几件事:

  • 重启设备
  • 拆卸和安装防护罩
  • 仅发送AT+CGNSPWR=1\r\nAT+CGNSINF\r\n 命令
  • chmod 666 /dev/ttyS0

【问题讨论】:

    标签: python raspberry-pi gps raspberry-pi3 pyserial


    【解决方案1】:

    我在树莓派上安装了 ubuntu,当我安装树莓派操作系统时,错误消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 2023-03-15
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      相关资源
      最近更新 更多