Czy ktoś może mi pokazać pełny kod przykładowy python, który używa pyserial, mam pakiet i zastanawiam się, jak wysłać polecenia AT i przeczytać je z powrotem!Pełne przykłady użycia pakietu pySerial
Odpowiedz
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
użycie http://pyserial.wiki.sourceforge.net/pySerial więcej przykładów
Nie używałem pyserial ale na podstawie dokumentacji API w http://pyserial.wiki.sourceforge.net/pySerial wydaje się bardzo ładny interfejs. Może warto podwójnie sprawdzić specyfikację poleceń AT urządzenia/radia/cokolwiek, z czym masz do czynienia.
W szczególności, niektóre wymagają pewnego okresu milczenia przed i/lub po poleceniu AT, aby wejść w tryb poleceń. Napotkałem niektóre, które nie lubią odczytów odpowiedzi bez pewnego opóźnienia.
Blog po 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
Po uruchomieniu tego kodu otrzymałem komunikat o błędzie "serial.serialutil.SerialException: Port is already open". Nie jestem tego pewien, ale uważam, że port szeregowy jest automatycznie otwierany, gdy jest zdefiniowany jawnie tak jak w przypadku 'ser'. Po skomentowaniu linii 'ser.open()' zadziałało. – user3817250
Ta uwaga jest zbawicielem. –
@ user3817250: Alternatywnie po prostu zrób if-case wokół '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. MVC Przykłady użycia var
- 2. Przykłady nietrywialnego użycia fexpr
- 3. Jakie są przykłady użycia Nokogiri?
- 4. Gdzie mogę znaleźć przykłady użycia bsddb?
- 5. Przykłady użycia niektórych metod opcji Scala
- 6. Dobre przykłady użycia Finalizerów w C#
- 7. Python/PySerial i użycie procesora
- 8. Co to jest OSGi i jakie są przykłady jego użycia?
- 9. Czy są jakieś podstawowe przykłady użycia Rack :: Session :: Cookie?
- 10. Czy ktoś ma dobre przykłady użycia mutagenu do pisania plików?
- 11. Co to są niektóre dobre przykłady użycia Datagrid WPF?
- 12. pyserial non-blocking przeczytać pętlę
- 13. Używanie pySerial z Pythonem 3.3
- 14. Przykłady JFace w Eclipse jak przykłady SWT?
- 15. Przykłady Bison Java
- 16. Wyłączyć DTR w pyserial z kodu
- 17. pyserial nie gra dobrze z portem wirtualnym
- 18. PySerial: Korupcja danych w pierwszych 256 bajtach
- 19. Czy Pyserial może działać z ukrytymi urządzeniami?
- 20. Używanie pyserial do wysyłania danych binarnych
- 21. Dane binarne z pyserial (port szeregowy Pythona)
- 22. Za pomocą PySerial można czekać na dane?
- 23. przykłady JGraphT
- 24. Błąd braku pakietu NuGet podczas próby użycia Serwera TFS
- 25. Wyszukiwanie pełne tekstu?
- 26. Pełne indeksowanie wiersza polecenia?
- 27. "Pełne" auto w Coq
- 28. Pełne wyjście skryptu powłoki
- 29. Uzyskaj pełne informacje zwrotne.
- 30. Przykłady oauth1 używając google-API-java-OAuth
Ten link jest teraz złamane. Nowa: http://pythonhosted.org/pyserial/ – MarredCheese