全て データ構造 ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義
データ構造 | 列挙型 | 関数
include/c/urg_connection.h

通信の処理 [詳細]

#include "urg_serial.h"
#include "urg_tcpclient.h"

ソースコードを見る。

データ構造

struct  urg_connection_t
 通信リソース [詳細]

列挙型

enum  { URG_CONNECTION_TIMEOUT = -1 }
 定数定義 [詳細]
enum  urg_connection_type_t { URG_SERIAL, URG_ETHERNET }
 通信タイプ [詳細]

関数

int connection_open (urg_connection_t *connection, urg_connection_type_t connection_type, const char *device, long baudrate_or_port)
 接続
void connection_close (urg_connection_t *connection)
 切断
int connection_set_baudrate (urg_connection_t *connection, long baudrate)
 ボーレートを設定する
int connection_write (urg_connection_t *connection, const char *data, int size)
 送信
int connection_read (urg_connection_t *connection, char *data, int max_size, int timeout)
 受信
int connection_readline (urg_connection_t *connection, char *data, int max_size, int timeout)
 改行文字までの受信

説明

通信の処理

作者:
Satofumi KAMIMURA
Id:
urg_connection.h,v e5d1719877a2 2015/05/07 04:12:14 jun

列挙型

anonymous enum

定数定義

列挙型の値:
URG_CONNECTION_TIMEOUT 

タイムアウトが発生したときの戻り値

通信タイプ

列挙型の値:
URG_SERIAL 

シリアル, USB 接続

URG_ETHERNET 

イーサーネット接続


関数

void connection_close ( urg_connection_t connection)

切断

デバイスとの接続を切断する。

引数:
[in,out]connection通信リソース
  connection_close(&connection); 
参照:
connection_open()
int connection_open ( urg_connection_t connection,
urg_connection_type_t  connection_type,
const char *  device,
long  baudrate_or_port 
)

接続

指定されたデバイスに接続する。

引数:
[in,out]connection通信リソース
[in]connection_type接続タイプ
[in]device接続名
[in]baudrate_or_portボーレート / ポート番号
戻り値:
0正常
<0エラー

connection_type には

  • URG_SERIAL ... シリアル通信
    • URG_ETHERNET .. イーサーネット通信

を指定する。

device, baudrate_or_port の指定は connection_type により指定できる値が異なる。 例えば、シリアル通信の場合は以下のようになる。

Example

  connection_t connection;
  if (! connection_open(&connection, URG_SERIAL, "COM1", 115200)) {
      return 1;
  } 

And, in case of ethernet connection:

Example

  connection_t connection;
  if (! connection_open(&connection, URG_ETHERNET, "192.168.0.10", 10940)) {
      return 1;
  } 
参照:
connection_close()
int connection_read ( urg_connection_t connection,
char *  data,
int  max_size,
int  timeout 
)

受信

データを受信する。

引数:
[in,out]connection通信リソース
[in]data受信データを格納するバッファ
[in]max_size受信データを格納できるバイト数
[in]timeoutタイムアウト時間 [msec]
戻り値:
>=0受信データ数
<0エラー

timeout に負の値を指定した場合、タイムアウトは発生しない。

1 文字も受信しなかったときは URG_CONNECTION_TIMEOUT を返す。

Example

enum {
    BUFFER_SIZE = 256,
    TIMEOUT_MSEC = 1000,
};
char buffer[BUFFER_SIZE];
n = connection_read(&connection, buffer, BUFFER_SIZE, TIMEOUT_MSEC); 
参照:
connection_write(), connection_readline()
int connection_readline ( urg_connection_t connection,
char *  data,
int  max_size,
int  timeout 
)

改行文字までの受信

改行文字までのデータを受信する。

引数:
[in,out]connection通信リソース
[in]data受信データを格納するバッファ
[in]max_size受信データを格納できるバイト数
[in]timeoutタイムアウト時間 [msec]
戻り値:
>=0受信データ数
<0エラー

data には、'\0' 終端された文字列が max_size を越えないバイト数だけ格納される。 つまり、受信できる文字のバイト数は、最大で max_size - 1 となる。

改行文字は '\r' または '\n' とする。

受信した最初の文字が改行の場合は、0 を返し、1 文字も受信しなかったときは URG_CONNECTION_TIMEOUT を返す。

参照:
connection_write(), connection_read()
int connection_write ( urg_connection_t connection,
const char *  data,
int  size 
)

送信

データを送信する。

引数:
[in,out]connection通信リソース
[in]data送信データ
[in]size送信バイト数
戻り値:
>=0送信データ数
<0エラー

Example

  n = connection_write(&connection, "QT\n", 3); 
参照:
connection_read(), connection_readline()