1

我有一个任务,我必须将击键发送到一台机器并实现相同的操作,我有两台机器,其中一台是主机(运行 python 脚本),另一台是目标机器(我必须发送击键)。我在 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 ,您需要将其转换为字符串:str(response),所以它会完美运行!

于 2014-11-26T09:14:04.707 回答