【发布时间】:2016-08-14 01:19:48
【问题描述】:
这是我第一次在 stackoverflow 上发帖,如果我没有遵守正确的礼仪,请告诉我。
我也是 Python 新手,想将它整合到一个项目中。我目前有一个 Emotiv EEG 耳机,并想根据大脑信号运行一台自制的 3-D 打印机。为此,EmoKey 2.0.0.20 读取 EEG 耳机(见附图),然后 EmoKey 将击键发送到 Python Shell,Python 对此进行解释并通过 COM PORT 向我的 Arduino 运行打印机发送命令。 这似乎是一种间接的做事方式,但除了一个障碍外,它确实有效。让我们假装我认为左边,这被发送到 EmoKey 类型“L”和击键进入 Python Shell。从理论上讲,这会将打印头向左移动。但是,当 EmoKey 发送 Enter 时,它只会在 Shell 中创建一个新行,它实际上并没有执行。然后我必须用手按回车键,这会破坏整个观点。
.getch() 没有工作,因为我认为没有实际的击键可以读取。下面的链接似乎也很有用,但到目前为止还没有工作。
How to run a shell script without having to press enter/confirm s.th. inbetween
我的问题是:当只编写 L 或 R 之类的内容时,如何让 Python 执行 shell 中编写的内容?我认为我不能让它等待击键,Python 必须等待并在看到特定命令时自动执行。
我知道这可能与下面的链接重复。但是,.getch 到目前为止还没有与 EmoKey 一起使用(也许这只是我的一个错误)。另外,我不想找到一种方法让我的 Python 脚本读取放入 shell 中的内容。虽然为了简单和原型设计,我只使用“L”和“R”命令开始了这个项目,但我将开始使用 G 代码,以便可以与其他打印机或 CNC 设备通信。这是 .getch 在我的情况下不起作用的另一个原因,因为它只抓取一个字符(单个 G 代码命令将有几个字符长)。 Python read a single character from the user
我使用的是 Windows 10 和 Python 2.7.11。
import serial
ser = 0
def init_serial():
COMNUM = 3 #Enter Your COM Port Number Here.
global ser #Must be declared in Each Function
ser = serial.Serial()
ser.baudrate = 9600
ser.port = COMNUM - 1 #COM Port Name Start from 0
#ser.port = '/dev/ttyUSB0'
#Specify the TimeOut in seconds, so that SerialPort
#Doesn't hangs
ser.timeout = 10
ser.open() #Opens SerialPort
# print port open or closed
if ser.isOpen():
print 'Open:' + ser.portstr
init_serial()
while 1:
temp = raw_input('Send command + Enter:\r\n')
ser.write(temp) #Writes to the SerialPort
#bytes = ser.readline() #Read from Serial Port
#print 'Response: ' + bytes #Print What is Read from Port
【问题讨论】:
-
感谢您让我注意到这一点,我已经更改了我的问题以表示我认为它有何不同。如果需要更多说明,请告诉我。