3
USB를 통해 Telegesis ZigBee 모듈 (ETRX3 USB 스틱)이 연결된 라즈베리 PI B +가 있습니다. 사용 명령 :파이썬에서 직렬 포트에 쓰는 방법 ttyUSB0는 해석 된 명령일까요?
debian:~# stty -F /dev/ttyUSB0 -raw ispeed 19200 ospeed 19200
debian:~# cat < /dev/ttyUSB0 &
debian:~# echo "ATI" > /dev/ttyUSB0
지그비 모듈은 ATI 명령을 실행하고 나는 올바른 출력을 볼 수 있습니다
Telegesis ETRX357
R308C
OK
내가 파이썬 스크립트와 함께하고 싶은 같은 일을. 화면
ATI
에 같은
#!/usr/bin/env python
# based on tutorials:
# http://www.roman10.net/serial-port-communication-in-python/
# http://www.brettdangerfield.com/post/raspberrypi_tempature_monitor_project/
import serial, time
SERIALPORT = "/dev/ttyUSB0"
BAUDRATE = 19200
ser = serial.Serial(SERIALPORT, BAUDRATE)
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 = 0 #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 = 0 #timeout for write
print 'Starting Up Serial Monitor'
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
ser.write("ATI")
print("write data: ATI")
time.sleep(0.5)
numberOfLine = 0
while True:
response = ser.readline()
print("read data: " + response)
numberOfLine = numberOfLine + 1
if (numberOfLine >= 5):
break
ser.close()
except Exception, e:
print "error communicating...: " + str(e)
else:
print "cannot open serial port "
얻을 결과를하지만 난 쉘 명령의 등, 지그비 (ZigBee) 모듈에 의해 실행되는 명령을 할 : 나는 코드를 파이썬 스크립트를 작성되었습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
ser.timeout = None