Linuxでシリアル通信(RS232C)

公開日: : 最終更新日:2011/05/30 Linux

記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

組込みI/Oインタフェース基礎講座

組込みI/Oインタフェース基礎講座

パソコンプログラム(シリアル通信)を読んでみる。

  • Twitterもやってますので、フォローお願いします。@akio0911
  • Facebookもやってます。akio0911

Linuxでシリアル通信(RS232C) 同期・カノニカルデータ受信

Linuxで同期・カノニカルデータ受信

シリアル入力としては、同期・非同期とともに、カノニカル・非カノニカルの選択をすることができます。

同期:入力がうまくいくまでread文がブロックされる(デフォルト)。

非同期:read文は即座に終了。読み込みが完了したときにプログラムにシグナルが送られる。

カノニカル:入力は行単位で行われる(デフォルト)。

非カノニカル:read毎に決まった文字数を扱う。決まった文字数のキャラクタを受信するときなどに使用。

Linuxで同期・カノニカルデータ受信


if((fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY ))==-1){
/* O_RDWR:読み書き両用 O_NOCTTY:tty制御をしない */
perror(MODEMDEVICE);
exit(-1);
}

while (STOP==FALSE) { /* 終了条件が満たされるまでループ */
res = read(fd,buf,255);
buf[--res]=0; /* 文字列の終端をセットする */
printf(":%s:%d\n", buf, res);
if (buf[0]=='z') STOP=TRUE;
}

close(fd); /* COM1のシリアルポートを閉じる */

Linuxでシリアル通信(RS232C) 同期・非カノニカルデータ受信

Linuxで同期・非カノニカルデータ受信


if((fd=open(MODEMDEVICE, O_RDWR | O_NOCTTY))== -1){
/* O_RDWR:読み書き両用 O_NOCTTY:tty制御をしない */

perror(MODEMDEVICE);
exit(-1);
}

while(STOP==FALSE){
res=read(fd, buf, 255);
for(i=0; i<res; i++){
if(buf[i]=='z'){
STOP=TRUE;
break;
}
printf("%c", buf[i]);
if((i%4)==0){
printf("\n");
}
}
}

close(fd); /* COM1のシリアルポートを閉じる */

iPhoneの充電にはこちらをどうぞ

SANYO USB出力付きリチウムイオンバッテリー (専用高容量リチウムイオン電池使用) KBC-L2AS

SANYO USB出力付きリチウムイオンバッテリー (専用高容量リチウムイオン電池使用) KBC-L2AS

SANYO NEW eneloop スティックブースター USB出力専用ブースターセット(単3形2個セット) KBC-D1AS

SANYO NEW eneloop スティックブースター USB出力専用ブースターセット(単3形2個セット) KBC-D1AS

関連記事

サンフランシスコのピア39にあるチャウダーズでクラムチャウダーを食す!

lolipop アップルの開発者向けイベント「WWDC2014」

ミスドのカルピスドーナツとカルピスポンデリングを食べてみた!

ミスドで期間限定のカルピスコラボ商品「カルピスドーナツ」と「カルピ

十三カレー計画で牛すじカレーネギのせを食す!(大阪・十三)

「iPhoneアプリ開発キャンプ@大阪」のランチで、十三カレー計画

大阪・難波の加寿屋 法善寺でかすうどんを食す。ランチタイムはおにぎり2個まで無料!

大阪・難波の加寿屋 法善寺 (かすうどん KASUYA)で、かす

ライブドアブログで運営していた「あきお商店」を「卵は世界である」に改名しました

少し前からライブドアブログで「あきお商店」というブログをやって

→もっと見る

PAGE TOP ↑