COM3でリッスンしているArduinoマイクロコントローラーがあります。arduino IDEとシリアルモニターを使用すると、データの送受信に問題なく機能します。
Pythonとの間でデータを送受信したいのですが、その方法がすぐにはわかりません。(実質的に簡単であれば、C#でも問題ありません。)
arduino_serial.pyを見つけましたが、Unixでのみ機能します。幸い、Ubuntu10.10VBoxをセットアップしています。ただし、そのVMがシリアルポートにアクセスできるかどうか、またはアクセスするために特別な手順が必要かどうかはわかりません。
私はまた、かなり正当に見えるpySerialを見つけました。ただし、使い方もわかりません。シリアルポート名が必要です。これらの有効な値を確認するにはどうすればよいですか?
たとえばpySerial
、次のコマンドを使用して、「名前付きポートを「19200,8、N、1」、1秒のタイムアウトで開く」ことができると述べています。
>>> ser = serial.Serial('/dev/ttyS1', 19200, timeout=1)
/dev/ttyS1
しかし、それが有効なポート名であることがどうやってわかるのかわかりません。
これを始めるための良いドキュメントはありますか?
更新:arduino_serialでUbuntuを使用していますが、それでも問題が発生します。
このプログラムはArduinoで実行されています:
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
Serial.print((char)Serial.read());
}
}
と呼ばれるポートtty0
が利用可能であることがわかります。
foo@bar:~/baz$ dmesg | grep tty
[ 0.000000] console [tty0] enabled
次に、接続しようとしarduino_serial
ます:
foo@bar:~/baz$ sudo python
[sudo] password for foo:
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import arduino_serial
>>> sp = arduino_serial.SerialPort("/dev/tty0", 9600)
>>> sp.write("foo")
>>> sp.read_until("\n")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "arduino_serial.py", line 107, in read_until
n = os.read(self.fd, 1)
OSError: [Errno 11] Resource temporarily unavailable
なぜこのエラーが発生するのですか?私は何が間違っているのですか?