1

キーストロークをマシンに送信する必要があるタスクがあり、同じことを達成するために、2 つのマシンがあり、そのうちの 1 つはホスト マシン (Python スクリプトを実行) で、もう 1 つはターゲット マシン (キーストロークを送信する必要がある) です。COM1 で「L3 Systems Inc の KeyAT デバイス」を使用しています。

問題は、キーストロークを送信できないことです。以下は実行中のコードです。

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 = "COM1"
#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")
        ser.write("~~~~~~~~~~\r")
        ser.write("~:04\r")
        # ser.write('\x03')

        #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 "

誰でも助けてください

ありがとう、ヴィプル

4

1 に答える 1

0

唯一の問題は、ser.readline() が binary を返すことです。それを string: str(response) に変換する必要があるため、完全に機能します!

于 2014-11-26T09:14:04.707 に答える