반응형
pySerial 패키지 사용의 전체 예제
누군가가 pyserial 을 사용하는 전체 파이썬 샘플 코드를 보여줄 수 있습니까? 패키지를 가지고 있으며 AT 명령을 보내고 다시 읽는 방법이 궁금합니다!
블로그 게시물 Python에서 직렬 RS232 연결
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
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
더 많은 예를 보려면 https://pythonhosted.org/pyserial/ 사용
#!/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 "
나는 pyserial을 사용하지 않았지만 https://pyserial.readthedocs.io/en/latest/shortintro.html 의 API 문서에 따르면 매우 멋진 인터페이스처럼 보입니다. 장치 / 라디오 / 당신이 다루는 모든 AT 명령에 대한 사양을 다시 확인하는 것이 좋습니다.
Specifically, some require some period of silence before and/or after the AT command for it to enter into command mode. I have encountered some which do not like reads of the response without some delay first.
참고URL : https://stackoverflow.com/questions/676172/full-examples-of-using-pyserial-package
반응형
'developer tip' 카테고리의 다른 글
Postgres 9.3에서 json 필드에 인덱스를 만드는 방법 (0) | 2020.09.01 |
---|---|
React.js : contentEditable에 대한 onChange 이벤트 (0) | 2020.09.01 |
jQuery를 사용한 원형 차트 (0) | 2020.09.01 |
Python 용 시각적 프로파일 러가 있습니까? (0) | 2020.09.01 |
Java unchecked : varargs 매개 변수에 대해 확인되지 않은 일반 배열 생성 (0) | 2020.09.01 |