[英]Write to serial when keyboard key is pressed or released
I am writing a Python script that will talk to an Arduino using serial. 我正在编写一个Python脚本,它将使用串行与Arduino对话。 The Arduino will implement a simple musical keyboard. Arduino将实现一个简单的音乐键盘。
So the desired behavior is: 因此,所需的行为是:
For single character input from the keyboard read this article . 对于从键盘输入的单个字符,请阅读本文 。
If you really want to get gritty, it's better to make a small GUI with pygtk or so. 如果您真的想变得坚韧不拔,最好使用pygtk左右制作一个小的GUI。 There you have easy access to keypress, keyrelease events. 在那里,您可以轻松访问按键,按键释放事件。 It can be done with very little code. 只需很少的代码即可完成。
On the serial port side, PySerial comes to mind - this makes it easier to change the baudrate etc. to adapt to the Arduino. 在串行端口方面,PySerial浮现在脑海-这使更改波特率等更容易以适应Arduino。
Are you trying to send MIDI commands? 您是否要发送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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.