0

我正在使用 Windows 环境和 Arduino。我有一个python脚本,不是我写的,它使用linux的串口。由于我在 Windows 上工作,我应该转换此代码以使其在 Windows 上工作以进行配置,然后使用连接在 pc 上的 Arduino 使用的串行端口。我的端口是 COM15.i 使用 windows 7 32 位。我的 python 发行版是 2.7.5,我已经安装了 32 位的 pyserial 模块。感兴趣的代码如下:

def __init__(self,
             port=DEFAULT_DEVICE,
             bps=DEFAULT_DEVICE_SPEED_BPS,
             interval=DEFAULT_INTERVAL):

    self.unpack = None
    self.interval = interval
    self.ser = serial.Serial(baudrate=bps,
                             parity=serial.PARITY_NONE,
                             stopbits=serial.STOPBITS_ONE,
                             bytesize=serial.EIGHTBITS)

    devs = glob.glob(port + "*")

    for dev in devs:
        logging.debug("scanning %s", dev)
        self.ser.port = dev
        self.ser.open()
        time.sleep(2)
        self.configure()
        self.send_cmds(["#P%u" % self.interval])
        logging.debug("attaching to port %s!", dev)
        return

raise RuntimeError("unable to configure serial port")

“DEFAULT_DEVICE”变量是定义串行端口的变量。它被定义为:

DEFAULT_DEVICE = '/dev/ttyACM'  

我想我应该简单地在 windows 中以串行格式修改这个变量,以使脚本工作并正确配置串行。在网上搜索我发现简单地说:

DEFAULT_DEVICE = 'COM15'

它应该工作。我已经尝试过这种方式,但是在启动代码时,我得到了代码中定义的 raise RuntimeError("unable to configure serial port") 。对这个问题有任何想法吗?也许我给 DEFAULT_DEVICE 变量的格式不正确,或者我应该修改上面代码中的其他内容。谢谢你的每一个帮助。

4

1 回答 1

0

如果您只需要 COM15,我会简化它并从那里取出 for 循环。下面的代码有效吗?如果没有,Windows 上的某些东西就挂了。

port = DEFAULT_DEVICE #'COM15'
ser = serial.Serial()
ser.port = port
ser.baudrate = DEFAULT_DEVICE_SPEED_BPS
ser.parity = serial.PARITY_NONE
ser.bytesize = serial.EIGHTBITS
ser.stopbits = serial.STOPBITS_ONE

ser.open()
ser.write("go\n")
ser.close()
于 2014-05-12T14:06:22.353 回答