2012-01-25 3 views
2

シリアルポートから読み込む必要があります。指定されたボーレート、パリティ、データビット、ストップビットでシリアルポートを開く必要があります。android-serialport-apiライブラリを使用してAndroidのシリアルポートのパリティ、ストップビット、データビットを設定するにはどうすればいいですか?

私はandroid-serialport-apiをチェックしましたが、これらの設定で初期化する方法はありません。

誰でもこれを解決する方法を知ることができますか?

ご意見やご提案は非常に役に立ちます。

ありがとうございます。

答えて

2

ボーレートはjavaのSerialPortクラスのコンストラクタで設定できます。

他のパラメータを設定するには、jniコードの中に設定する方法しかありませんでした。 android-serialport-apiプロジェクトには、基礎となるドライバと通信するc-sourcesを持つフォルダjniがあります。ここでtermios構造体を設定できます。 など。行を追加することでパリティを有効にすることができます cfg.c_cflag | = PARENB; termiosのインターフェイスの他のパラメータを設定する方法

説明はここで見つけることができます: http://en.wikibooks.org/wiki/Serial_Programming/termios

あなたがCコード内の変更を行ったら、あなたは、Android NDKでコンパイルする必要があります。 まずAndroidのWebサイトからndkをダウンロードし、android-serialport-apiディレクトリのndk-build programmから起動します。これにより、Cコードがコンパイルされ、必要なライブラリが生成されます。

説明はここで見つけることができます: http://developer.android.com/sdk/ndk/index.html

2

私は偶数パリティを有効にするには、このような方法をとっています:

 
----------------------- bionic/libc/include/termios.h ------------------------ 
+static __inline__ void cfmakepareven(struct termios *s) 
+{ 
+ s->c_iflag &= ~(IGNPAR | PARMRK); 
+ s->c_iflag |= INPCK; 
+ s->c_cflag |= PARENB; 
+ s->c_cflag &= ~PARODD; 
+} 
+ 

--------------- frameworks/base/core/jni/android_serial_port.cpp --------------- 
     cfmakeraw(&cfg); 
     cfsetispeed(&cfg, speed); 
     cfsetospeed(&cfg, speed); 
+  cfmakepareven(&cfg); 

     if (tcsetattr(fd, TCSANOW, &cfg)) 
     { 

私はあなたはそれが働いて得ることを願っています。

+0

私にとっては、最後の2つのみ:| = PARENBと&=〜PARODD – djdance

関連する問題