【问题标题】:Error on Python serial importing in CygwinCygwin 中的 Python 串行导入错误
【发布时间】:2015-04-09 04:01:58
【问题描述】:

当我想使用串行库时,我得到这个错误:

$ ./console.py Traceback(最近一次调用最后一次):文件 “./console.py”,第 7 行,在 导入串行 ImportError:没有名为串行的模块

我在 Windows7 中有 Cygwin

$ uname -a CYGWIN_NT-6.1 ES-T20019350 1.7.24(0.269/5/3) 2013-08-15 11:59 x86_64 Cygwin

而我的 Python 版本是 3:

Python 3.2.5(默认,2013 年 7 月 30 日,20:11:30)

谁能告诉我怎样才能让连续剧正常工作?我将需要它来向我的串行端口运行串行流量:

#!/usr/bin/python3
# =======================================
# establish communication using python
# =======================================

import time
import serial

# 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/ttyS3"
#ser.port = "/dev/ttyS2"

ser.baudrate = 115200
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 = 2     #timeout for write

try:
    ser.open()
except getopt.GetoptError as e:
        print ("error openning 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("ac_spi_slash 3\x0D")
                print("ac_spi_slash 3 sent\x0D")
                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 getopt.GetoptError as e1:
                print ("error communicating...: ",str(e1));
else:
        print ("cannot open serial port ")

【问题讨论】:

标签: serial-port cygwin python-3.2


【解决方案1】:

我最近正在处理这个问题,你可能也有同样的问题。

这个线程指出了一个问题,即使用 python.org 安装程序的标准安装 python 不能很好地与 cygwin 配合使用,即使你正确设置了路径变量: Using Windows Python from Cygwin

我的解决方案是允许 cygwin 安装程序进行单独的 python 安装: cygwin setup.exe -> 然后选择'python:Python语言解释器'

然后抓取 pyserial 库(通常只是一个名为“serial”的文件夹)并复制到 C:\cygwin\lib\pythonX.X\site-packages\

这样交互模式就起作用了,pyserial 包可以在标准的 cygwin 搜索路径中找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多