I keep getting issues trying to do a serial thing. I'm copying the lines from another script that kind of works okay.
Objective: Send serial modem commands to a Raspberry Pi Hat.
root@UPS-pico:/home/binary/GIT/Raspbery_PI_Scripts/Waveshare-GSM-GPRS-GNSS_HAT# python3.6 waveshare_init.py
Objective: Send serial modem commands to a Raspberry Pi Hat.
root@UPS-pico:/home/binary/GIT/Raspbery_PI_Scripts/Waveshare-GSM-GPRS-GNSS_HAT# python3.6 waveshare_init.py
Error:waveshare_init.py:7: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(7, GPIO.IN)
on
Traceback (most recent call last):
File "waveshare_init.py", line 20, in <module>
ser.write(W_buff[0])
File "/usr/local/lib/python3.6/dist-packages/serial/serialposix.py", line 532, in write
d = to_bytes(data)
File "/usr/local/lib/python3.6/dist-packages/serial/serialutil.py", line 63, in to_bytes
raise TypeError('unicode strings are not supported, please encode to bytes: {!r}'.format(seq))
TypeError: unicode strings are not supported, please encode to bytes: 'AT+CGNSSEQ="RMC"\r\n'The script I'm working on.import RPi.GPIO as GPIO
import serial
import time
ser = serial.Serial("/dev/ttyS0", 115200)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN)
GPIO.setup(7, GPIO.OUT)
GPIO.setwarnings(False)
pin7 = GPIO.input(7)
W_buff = ["AT+CGNSSEQ=\"RMC\"\r\n", "AT+CGNSINF\r\n"]
if pin7 == 1:
pin7mode = "off"
GPIO.output(7, GPIO.LOW)
time.sleep(4)
elif pin7 == 0:
pin7mode = "on"
print(pin7mode)
ser.write(W_buff[0])
ser.flushInput()
GPIO.cleanup()The script that kind of works...#!/usr/bin/python3.6
import serial
import time
ser = serial.Serial("/dev/ttyS0",115200)
W_buff = ["AT+CGNSPWR=1\r\n", "AT+CGNSSEQ=\"RMC\"\r\n","AT+CGNSINF\r\n", "AT+CGNSURC=2\r\n", "AT+CGNSTST=1\r\n"]
ser.write(W_buff[0])
ser.flushInput()
data = ""
num = 0
try:
while True:
while ser.inWaiting() > 0:
data += ser.read(ser.inWaiting())
if data != "":
print(data)
time.sleep(0.5)
ser.write(W_buff[num+1])
num =num +1
if num == 4:
time.sleep(0.5)
ser.write(W_buff[4])
data = ""
except keyboardInterrupt:
if ser != None:
ser.close()
