トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS   ログイン

認知ロボティクス研究室>ゼミのお話>アルマジロゼミ>Linux組み込みボードでのプログラミング

概要

準備

開発環境のインストール

SSH経由でログインできることを確認

配線の変更

プログラミング

Hello World!を出力

01:#include <sys/types.h>
02:#include <sys/stat.h>
03:#include <sys/ioctl.h>
04:#include <fcntl.h>
05:#include <termios.h>
06:#include <unistd.h>
07:#include <stdio.h>
08:#include <stdlib.h>
09:#include <string.h>
10:
11:/* シリアルインターフェースに対応するデバイスファイル */
12:#define SERIAL_PORT     "/dev/ttyAM1"
13:
14:int main(){
15:
16:  /* シリアルインターフェースのオープン */
17:  /* O_RDWR: 入出力用にオープン */
18:  /* O_NOCTTY: ノイズ等による不意のctrl-cを防ぐため,tty制御なし */
19:  /* シリアルインターフェースをint型変数"fd"の名前で扱えるように */
20:  int fd;
21:  fd = open(SERIAL_PORT, O_RDWR | O_NOCTTY);
22:  if(fd < 0){
23:    printf("%s doesn't open it\n",SERIAL_PORT);
24:    return -1;
25:  }
26:
27:  /* シリアルポートの設定を行う変数を宣言 */
28:  struct termios oldtio, newtio;
29:  /* 現在の設定を oldtio に保存 */
30:  tcgetattr(fd, &oldtio);
31:  /* 今回使用する設定 newtio に現在の設定 oldtio をコピー */
32:  newtio = oldtio;
33:
34:  /* 入出力スピードの設定 */
35:  /* 以下の方法1または方法2で設定.どちらかでよい */
36:
37:  /* 方法1 */
38:  cfsetispeed(&newtio, B115200); /* 入力スピード設定 */
39:  cfsetospeed(&newtio, B115200); /* 出力スピード設定 */
40:
41:  /* 方法2 */
42:  cfsetspeed(&newtio, B115200); /* 入出力スピード設定 */
43:
44:  /* 27行目-42行目までの設定を有効にする */
45:  tcflush(fd, TCIFLUSH);
46:  tcsetattr(fd, TCSANOW, &newtio); /* 設定を有効に */
47:
48:  /* 通信処理:シリアルデバイスに出力 */
49:  char buf[255];
50:  strcpy(buf,"hello");
51:  write(fd, buf , sizeof(buf)); /* write関数:送信処理 */
52:
53:  /* デバイスの設定を戻す */
54:  tcsetattr(fd, TCSANOW, &oldtio);
55:  close(fd);
56:  return 0;
57:}

プログラムの説明

参考

シリアル通信に関する重要な部分の説明

struct termiosの説明

入力フラグ

出力フラグ

制御フラグ

ローカルフラグ

struct termiosの使い方

シリアルデバイスにおける入力処理の概念

入力方式

処理方式

Armadilloでの処理


添付ファイル: filecon6obsrv.png 904件 [詳細] filecon7control.png 880件 [詳細] filesample.c 901件 [詳細] filepicsay-1280997322.jpg 861件 [詳細] filepicsay-1280997383.jpg 804件 [詳細] filesample_line.c 459件 [詳細]

Last-modified: 2023-03-29 (水) 10:47:55