Python pySerial 错误
Python pySerial error
我正在尝试为 arduino 制作一个程序,也使用 Python 2.7 和 pySerial 将推文放在液晶显示器上我唯一的问题是 Python 代码它给我一个错误
我的代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tweepy
import serial
import time
from datetime import datetime
import pytz
import signal
import sys
def exit_handler(signal, frame):
global s
print 'You pressed Ctrl+C!'
print 'Closing properly'
s.write(chr(10))
s.close()
sys.exit(0)
s = serial.Serial("/dev/ttyACM0" ,9600, timeout=10)
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)
tweets = api.user_timeline(count = 1)
print "Wait a moment please"
signal.signal(signal.SIGINT, exit_handler)
time.sleep(4)
tweet = tweets[0].text
while len(tweet) < 26:
tweet = tweet + " "
#Adjust to local timezone
eastern = pytz.timezone('US/Eastern')
utc = pytz.timezone('UTC')
tweet_time = utc.normalize(utc.localize(tweets[0].created_at))
tweet_time_local = str(tweet_time.astimezone(eastern))
s.write(chr(13))
s.write(tweet[0:16])
s.write(chr(10))
# We need a small delay
time.sleep(0.1)
s.write(tweet[16:26])
time.sleep(0.1)
s.write(" ")
time.sleep(0.1)
s.write(tweet_time_local[11:16])
s.close()
错误
Traceback (most recent call last):
File "twitter_lcd.py", line 23, in <module>
s = serial.Serial("/dev/ttyACM0" ,9600, timeout=10)
File "build/bdist.cygwin-2.4.1-x86_64/egg/serial/serialutil.py", line 180,
File "build/bdist.cygwin-2.4.1-x86_64/egg/serial/serialposix.py", line 294, e in open
serial.serialutil.SerialException: [Errno 2] could not open port /dev/ttyACM0: [Errno 2] No such file or directory: '/dev/ttyACM0'
感谢任何帮助
- Windows 10
- Arduino Uno R3
你的部分代码是从一个例子中得到的吗?因为“/dev/ttyACM0”通常是 mac 会使用的 COM 端口。插入你的arduino,打开arduino IDE,进入'tools',进入'boards',然后select arduino/genuino uno。然后再次打开 'tools' 并进入 'port' 您应该会看到类似 'COM4' 或 'COM2' 的内容。然后替换:
s = serial.Serial("/dev/ttyACM0" ,9600, timeout=10)
和
s = serial.Serial("Whatever you see there" ,9600, timeout=10)
编辑:您必须插入 arduino,我在没有插入的情况下尝试了代码,但一旦插入,它就起作用了。
编辑:查看您的 arduino 代码,您正在为 LCD 使用引脚 1 和 0,但这些是 arduino 用于串行通信(RX 和 TX)的引脚,因此请尝试更改 LCD 减速线从 1 和 0 到另外两个引脚。这可能会有所帮助。
希望对您有所帮助!
-戴夫
我正在尝试为 arduino 制作一个程序,也使用 Python 2.7 和 pySerial 将推文放在液晶显示器上我唯一的问题是 Python 代码它给我一个错误 我的代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tweepy
import serial
import time
from datetime import datetime
import pytz
import signal
import sys
def exit_handler(signal, frame):
global s
print 'You pressed Ctrl+C!'
print 'Closing properly'
s.write(chr(10))
s.close()
sys.exit(0)
s = serial.Serial("/dev/ttyACM0" ,9600, timeout=10)
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)
tweets = api.user_timeline(count = 1)
print "Wait a moment please"
signal.signal(signal.SIGINT, exit_handler)
time.sleep(4)
tweet = tweets[0].text
while len(tweet) < 26:
tweet = tweet + " "
#Adjust to local timezone
eastern = pytz.timezone('US/Eastern')
utc = pytz.timezone('UTC')
tweet_time = utc.normalize(utc.localize(tweets[0].created_at))
tweet_time_local = str(tweet_time.astimezone(eastern))
s.write(chr(13))
s.write(tweet[0:16])
s.write(chr(10))
# We need a small delay
time.sleep(0.1)
s.write(tweet[16:26])
time.sleep(0.1)
s.write(" ")
time.sleep(0.1)
s.write(tweet_time_local[11:16])
s.close()
错误
Traceback (most recent call last):
File "twitter_lcd.py", line 23, in <module>
s = serial.Serial("/dev/ttyACM0" ,9600, timeout=10)
File "build/bdist.cygwin-2.4.1-x86_64/egg/serial/serialutil.py", line 180,
File "build/bdist.cygwin-2.4.1-x86_64/egg/serial/serialposix.py", line 294, e in open
serial.serialutil.SerialException: [Errno 2] could not open port /dev/ttyACM0: [Errno 2] No such file or directory: '/dev/ttyACM0'
感谢任何帮助
- Windows 10
- Arduino Uno R3
你的部分代码是从一个例子中得到的吗?因为“/dev/ttyACM0”通常是 mac 会使用的 COM 端口。插入你的arduino,打开arduino IDE,进入'tools',进入'boards',然后select arduino/genuino uno。然后再次打开 'tools' 并进入 'port' 您应该会看到类似 'COM4' 或 'COM2' 的内容。然后替换:
s = serial.Serial("/dev/ttyACM0" ,9600, timeout=10)
和
s = serial.Serial("Whatever you see there" ,9600, timeout=10)
编辑:您必须插入 arduino,我在没有插入的情况下尝试了代码,但一旦插入,它就起作用了。
编辑:查看您的 arduino 代码,您正在为 LCD 使用引脚 1 和 0,但这些是 arduino 用于串行通信(RX 和 TX)的引脚,因此请尝试更改 LCD 减速线从 1 和 0 到另外两个引脚。这可能会有所帮助。
希望对您有所帮助!
-戴夫