這是我第一篇文章,因此請讓我知道,如果我不遵循正確的禮儀。Python運行Shell無需輸入
我也是Python新手,想將它合併到一個項目中。我目前有一個Emotiv腦電圖耳機,並希望從大腦信號中運行一個自制的3D打印機。爲此,通過EmoKey 2.0.0.20(參見附圖)讀取腦電圖耳機,然後EmoKey將鍵擊發送到Python Shell,Python解釋此操作,並通過COM端口將命令發送到我的Arduino運行打印機。 這看起來可能是一種間接的做事方式,但它的工作除了一個順利。讓我們假裝我認爲離開了,這被髮送到EmoKey類型'L'和鍵入Enter到Python Shell中。理論上這會使打印頭向左移動。但是,當EmoKey發送Enter時,它只會在Shell中創建一個新行,但它不會實際執行。然後,我必須手動按下輸入鍵,這會破壞整個點。
.getch()沒有工作,因爲我不認爲它有一個實際的鍵盤筆畫供它閱讀。下面的鏈接似乎也是有用的,但迄今爲止它還沒有奏效。
How to run a shell script without having to press enter/confirm s.th. inbetween
我的問題是:我怎樣才能讓Python執行什麼寫在shell時只喜歡L或R寫入的東西?我不認爲我可以等待擊鍵,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
感謝您將此引起我的注意,我改變了我的問題,以表示我的想法與衆不同。讓我知道是否需要更多的澄清。 – cabenso