2015-05-23 155 views
0

我在寫一個Python腳本,它將使用串口與Arduino進行通信。 Arduino將實現一個簡單的音樂鍵盤。當鍵盤按鍵被按下或釋放時寫入串口

因此所需的行爲是:

  • 當我按我的電腦鍵盤上的按鍵,有些字節通過串行發送;
  • 當我按住按鍵時,什麼都不發送;
  • 當我釋放該密鑰時,發送另一個給定的字節。

回答

1

對於來自鍵盤的單字符輸入讀取this article

如果你真的想要堅韌不拔,最好用pygtk製作一個小GUI。您可以輕鬆訪問按鍵,keyrelease事件。它可以用很少的代碼完成。

在串口方面,PySerial讓人想起 - 這使得更容易改變波特率等來適應Arduino。

你想發送MIDI命令嗎?

import pygtk 
import gtk 

class MainWindow(gtk.Window): 
    def __init__(self, debug = None): 
     gtk.Window.__init__(self) 
     self.connect("delete-event", self.on_delete_event) 
     self.set_size_request(400, 300) 

     bff = gtk.TextBuffer() 
     self.txtview = gtk.TextView(bff) 
     self.add(self.txtview) 

     self.connect("key-press-event", self.on_key_press) 
     self.connect("key-release-event", self.on_key_release) 

    def on_key_press(self, key, event): 
     # Send something 
     print("Key pressed") 
     pass 

    def on_key_release(self, key, event): 
     # Send something 
     print("Key released") 
     pass 

    def on_delete_event(self, win, data): 
     gtk.main_quit() 

    def run(self): 
     self.show_all() 
     gtk.mainloop() 



def main(): 
    # Do you PySerial initializing here 
    w = MainWindow() 
    w.run() 
    return 0 

if __name__ == '__main__': 
    main() 
+0

我結束了使用PyGame,但Gtk將相當於我認爲。經過思考和閱讀後,使用UI工具包最終成爲最熱門的方法。而我發送的不是MIDI,儘管意圖非常相似。 – heltonbiker