All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Pages
Data Structures | Enumerations | Functions
urg_connection.h File Reference

通信の処理 More...

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

Go to the source code of this file.

Data Structures

struct  urg_connection_t
 通信リソース More...
 

Enumerations

enum  { URG_CONNECTION_TIMEOUT = -1 }
 定数定義 More...
 
enum  urg_connection_type_t { URG_SERIAL, URG_ETHERNET }
 通信タイプ More...
 

Functions

int connection_open (urg_connection_t *connection, urg_connection_type_t connection_type, const char *device, long baudrate_or_port)
 接続 More...
 
void connection_close (urg_connection_t *connection)
 切断 More...
 
int connection_set_baudrate (urg_connection_t *connection, long baudrate)
 
int connection_write (urg_connection_t *connection, const char *data, int size)
 送信 More...
 
int connection_read (urg_connection_t *connection, char *data, int max_size, int timeout)
 受信 More...
 
int connection_readline (urg_connection_t *connection, char *data, int max_size, int timeout)
 改行文字までの受信 More...
 

Detailed Description

通信の処理

Author
Satofumi KAMIMURA
Id:
urg_connection.h,v 1d233c7a2240 2011/02/19 03:08:45 Satofumi

Enumeration Type Documentation

anonymous enum

定数定義

Enumerator
URG_CONNECTION_TIMEOUT 

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

通信タイプ

Enumerator
URG_SERIAL 

シリアル, USB 接続

URG_ETHERNET 

イーサーネット接続

Function Documentation

int connection_open ( urg_connection_t connection,
urg_connection_type_t  connection_type,
const char *  device,
long  baudrate_or_port 
)

接続

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

Parameters
[in,out]connection通信リソース
[in]connection_type接続タイプ
[in]device接続名
[in]baudrate_or_portボーレート / ポート番号
Return values
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;
}

また、イーサーネット通信の場合は以下のようになる。

Example

connection_t connection;
if (! connection_open(&connection, URG_ETHERNET, "192.168.0.10", 10940)) {
return 1;
}
See Also
connection_close()
void connection_close ( urg_connection_t connection)

切断

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

Parameters
[in,out]connection通信リソース
connection_close(&connection);
See Also
connection_open()
int connection_set_baudrate ( urg_connection_t connection,
long  baudrate 
)

ボーレートを設定する

int connection_write ( urg_connection_t connection,
const char *  data,
int  size 
)

送信

データを送信する。

Parameters
[in,out]connection通信リソース
[in]data送信データ
[in]size送信バイト数
Return values
>=0送信データ数
<0エラー

Example

n = connection_write(&connection, "QT\n", 3);
See Also
connection_read(), connection_readline()
int connection_read ( urg_connection_t connection,
char *  data,
int  max_size,
int  timeout 
)

受信

データを受信する。

Parameters
[in,out]connection通信リソース
[in]data受信データを格納するバッファ
[in]max_size受信データを格納できるバイト数
[in]timeoutタイムアウト時間 [msec]
Return values
>=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);
See Also
connection_write(), connection_readline()
int connection_readline ( urg_connection_t connection,
char *  data,
int  max_size,
int  timeout 
)

改行文字までの受信

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

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

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

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

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

See Also
connection_write(), connection_read()