Qualcuno può mostrarmi un codice di esempio Python completo che utilizza pyserial, ho il pacchetto e mi chiedo come inviare i comandi AT e leggerli di nuovo!Esempi completi di utilizzo del pacchetto pySerial
risposta
import serial
ser = serial.Serial(0) # open first serial port
print ser.portstr # check which port was really used
ser.write("hello") # write a string
ser.close() # close port
uso http://pyserial.wiki.sourceforge.net/pySerial per ulteriori esempi
Non ho usato pySerial ma sulla base della documentazione API a http://pyserial.wiki.sourceforge.net/pySerial sembra un'interfaccia molto piacevole. Potrebbe valere la pena ricontrollare le specifiche per i comandi AT del dispositivo/radio/qualunque cosa si tratti.
In particolare, alcuni richiedono un certo periodo di silenzio prima e/o dopo il comando AT per farlo entrare in modalità comando. Ho incontrato alcuni che non amano le letture della risposta senza alcun ritardo prima.
Blog inviare Serial RS232 connections in Python
import time
import serial
# configure the serial connections (the parameters differs on the device you are connecting to)
ser = serial.Serial(
port='/dev/ttyUSB1',
baudrate=9600,
parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_TWO,
bytesize=serial.SEVENBITS
)
ser.isOpen()
print 'Enter your commands below.\r\nInsert "exit" to leave the application.'
input=1
while 1 :
# get keyboard input
input = raw_input(">> ")
# Python 3 users
# input = input(">> ")
if input == 'exit':
ser.close()
exit()
else:
# send the character to the device
# (note that I happend a \r\n carriage return and line feed to the characters - this is requested by my device)
ser.write(input + '\r\n')
out = ''
# let's wait one second before reading output (let's give device time to answer)
time.sleep(1)
while ser.inWaiting() > 0:
out += ser.read(1)
if out != '':
print ">>" + out
Ho ricevuto un errore 'serial.serialutil.SerialException: Port è già aperto' quando si esegue questo codice. Non sono sicuro su questo, ma credo che la porta seriale venga automaticamente aperta quando è definita esplicitamente come si è fatto con 'ser'. Dopo aver commentato la riga 'ser.open()' ha funzionato. – user3817250
Questo commento è il salvatore. –
@ user3817250: In alternativa, crea un caso if in base a 'ser.open()' –
http://www.roman10.net/serial-port-communication-in-python/comment-page-1/#comment-1877
#!/usr/bin/python
import serial, time
#initialization and open the port
#possible timeout values:
# 1. None: wait forever, block call
# 2. 0: non-blocking mode, return immediately
# 3. x, x is bigger than 0, float allowed, timeout block call
ser = serial.Serial()
#ser.port = "/dev/ttyUSB0"
ser.port = "/dev/ttyUSB7"
#ser.port = "/dev/ttyS2"
ser.baudrate = 9600
ser.bytesize = serial.EIGHTBITS #number of bits per bytes
ser.parity = serial.PARITY_NONE #set parity check: no parity
ser.stopbits = serial.STOPBITS_ONE #number of stop bits
#ser.timeout = None #block read
ser.timeout = 1 #non-block read
#ser.timeout = 2 #timeout block read
ser.xonxoff = False #disable software flow control
ser.rtscts = False #disable hardware (RTS/CTS) flow control
ser.dsrdtr = False #disable hardware (DSR/DTR) flow control
ser.writeTimeout = 2 #timeout for write
try:
ser.open()
except Exception, e:
print "error open serial port: " + str(e)
exit()
if ser.isOpen():
try:
ser.flushInput() #flush input buffer, discarding all its contents
ser.flushOutput()#flush output buffer, aborting current output
#and discard all that is in buffer
#write data
ser.write("AT+CSQ")
print("write data: AT+CSQ")
time.sleep(0.5) #give the serial port sometime to receive the data
numOfLines = 0
while True:
response = ser.readline()
print("read data: " + response)
numOfLines = numOfLines + 1
if (numOfLines >= 5):
break
ser.close()
except Exception, e1:
print "error communicating...: " + str(e1)
else:
print "cannot open serial port "
- 1. Perché così pochi esempi di schemi di database completi online?
- 2. Utilizzo di Pyserial per inviare dati binari
- 3. Utilizzo di nomi completi in C++
- 4. Esempi di utilizzo di RedisStore in socket.io
- 5. Boost opzioni del programma Esempi
- 6. Esempi di utilizzo degli alberi Judy
- 7. Esempi pratici di utilizzo di NLTK
- 8. Esempi di utilizzo pratico di Boost :: MPL?
- 9. Esempi di utilizzo non triviale di fexpr
- 10. Esempi di utilizzo del plug-in di file di Ionic 2
- 11. pyserial: Nessun modulo denominato strumenti
- 12. bisogno di esempi su C++ utilizzo vettore
- 13. Buone istruzioni per principianti per la creazione di minuscoli esempi di bug completi?
- 14. Come espandere la dimensione del buffer di input di pyserial
- 15. pyserial per Python 2.7.2
- 16. PySerial - Comunicazione full duplex
- 17. Utilizzo del pacchetto di cortesia di adabost Rin
- 18. Utilizzo pacchetto com.sun.awt
- 19. Uso di pySerial con Python 3.3
- 20. Quali sono alcuni esempi di utilizzo di Datagrid di WPF?
- 21. Utilizzo del pacchetto javascript di terze parti con Meteor
- 22. Esistono esempi di base di utilizzo di Rack :: Session :: Cookie?
- 23. Esistono esempi completi che utilizzano tutti i metodi dei delegati NSURLConnection?
- 24. Dove posso trovare esempi di utilizzo di jpa orm.xml
- 25. Quali sono alcuni esempi di utilizzo di Nokogiri?
- 26. Esempi di utilizzo di Generics in .Net (C#/VB.NET)
- 27. Esempi di utilizzo per ProxyServlet di Jetty. Classe trasparente
- 28. e nomi di tabella completi
- 29. Esempi di utilizzo di tecnologie web semantiche in applicazioni del mondo reale
- 30. pySerial non-blocking ciclo leggere
Tale legame è ormai rotto. Nuovo: http://pythonhosted.org/pyserial/ – MarredCheese