備忘録

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

WiringPi Serial Library

次はシリアル通信です。
本家は↓
https://projects.drogon.net/raspberry-pi/wiringpi/serial-library/

ちなみに実例は明日やります。

Serial Library


wiringPiは、シリアルポートを操作するライブラリを含んでいます。
オンボードのシリアルポートとして利用でき、他のUSBデバイスと特別な区別ありません。
初期のOpen関数で、デバイス名を名づけます。

使うために、プログラムに以下のファイルがインクルードされていることを確認してください

#include <wiringSerial.h>

その後、以下の関数で利用できます。


・int serialOpen (char *device, int baud) ;

 Open関数は、シリアルデバイスの初期化と、バンドレート(転送レート)を設定します。
 シリアルポートは、デコードなしで文字を取り込むrawモードに設定され、
 読み込みから10秒でタイムアウトするように設定されます。
 戻り値が-1のときはエラーが起きています。errornoと対応しています

・void serialClose (int fd) ;
引数にて与えられたデバイスを閉じます

・void serialPutchar (int fd, unsigned char c) ;
引数で与えられたデバイスに、1byteだけ送信します。

・void serialPuts (int fd, char *s) ;
シリアルデバイスにNULLで終わる文字列を送信します

・void serialPrintf (int fd, char *message, …) ;

printfをシリアルデバイスにエミュレートします

・int serialDataAvail (int fd) ;
読み込み可能な文字の数を返します。
-1のときは、エラーが出てます。

・int serialGetchar (int fd) ;

シリアルデバイスから次の文字を返します。
データがないときは-1を返し、最大10秒間コールをブロックされます

・void serialFlush (int fd) ;
受信したすべてのデータを破棄し、downが送信されるのを待ちます。
# "waiting to be send down the given device."ってどういう意味?

Note:記述子fdはLinux標準の記述子を戻します。
 標準のread()、write()関数や、システムコールにも使えます。
 E.g.大きなバイナリブロックを書き込もうとするとき、
   serialPutchar()やserialPuts()を使うのは適切でないかもしれません。
   その場合、write()関数を利用できます。

Advanced Serial Port Control
wiringSerialライブラリはシンプルな制御を意図されています。
もし高度な制御が必要であれば、それにあったアプリケーションを利用できる。
例えば、パリティ制御、モデム制御は、PiのオンボードUARTにはない機能です。
昔ながらの方法を実行する必要があります

例えば、シリアル7bit+even、パリティを追加するモードでは、
以下のようにします

#include <termios.h>

struct termios options;

tcgetattr (fd, &options) ; // Read current options
options.c_cflag &= ~CSIZE ; // Mask out size
options.c_cflag |= CS7 ; // Or in 7-bits
options.c_cflag |= PARENB ; // Enable Parity - even by default
tcsetattr (fd, &options) ; // Set new options


上記の変数'fd'は、serialOpenが返される記述子です。
設定できるオプションは、tcpgetattrをmanコマンドで見てください

man tcgetattr
スポンサーサイト
  1. 2013/05/03(金) 18:21:58|
  2. Raspberry Pi
  3. | トラックバック:0
  4. | コメント:0
<<Raspberry PiでUART、シリアル通信 | ホーム | C言語でシェルを呼ぶ>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://nanicananica.blog.fc2.com/tb.php/13-8d471118
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。