2009-03-24 16 views
74

क्या कोई मुझे एक पूर्ण पायथन नमूना कोड दिखा सकता है जो pyserial का उपयोग करता है, मेरे पास पैकेज है और मैं सोच रहा हूं कि एटी कमांड कैसे भेजना है और उन्हें वापस पढ़ना है! अधिक उदाहरणpySerial पैकेज का उपयोग करने के पूर्ण उदाहरण

उत्तर

44
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 

उपयोग http://pyserial.wiki.sourceforge.net/pySerial यह एक बहुत अच्छा इंटरफ़ेस की तरह लगता है। यह डिवाइस/रेडियो/जो कुछ भी आप कर रहे हैं, के एटी कमांड के विनिर्देश को दोबारा जांचने के लायक हो सकते हैं।

विशेष रूप से, कुछ को कमांड मोड में प्रवेश करने के लिए पहले और/या एटी कमांड के बाद कुछ मौन की आवश्यकता होती है। मुझे कुछ ऐसे लोगों का सामना करना पड़ा है जो बिना किसी देरी के प्रतिक्रिया के पठन पसंद नहीं करते हैं।

+0

कि लिंक अब टूट गया है। नया एक: http://pythonhosted.org/pyserial/ – MarredCheese

76

ब्लॉग पोस्ट 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 
+8

मुझे इस कोड को चलाने के दौरान 'serial.serialutil.SerialException: पोर्ट पहले से खुला है' त्रुटि मिली है। मैं इस पर निश्चित नहीं हूं लेकिन मेरा मानना ​​है कि सीरियल पोर्ट स्वचालित रूप से खोला जाता है जब इसे स्पष्ट रूप से परिभाषित किया जाता है जैसा आपने 'सेर' के साथ किया है। 'Ser.open()' लाइन पर टिप्पणी करने के बाद यह काम किया। – user3817250

+0

यह टिप्पणी उद्धारकर्ता है। –

+1

@ user3817250: वैकल्पिक रूप से केवल 'ser.open() ' –

20

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 " 
संबंधित मुद्दे