Advanced Robot Control System  5.1-REV.51SF170515
UDPTransmitter.hh
[詳解]
1 // UDP送信器クラス
2 // 2016/08/24 Yuki YOKOKURA
3 //
4 // 指定したIPアドレスおよびPort番号へUDPで配列変数値を飛ばすクラス
5 //
6 // 注意!:このクラスはエンディアン依存である。異なるエンディアン同士の端末では通信できない!
7 //
8 // Copyright (C) 2011-2016 Yuki YOKOKURA
9 // This program is free software;
10 // you can redistribute it and/or modify it under the terms of the GNU General Public License
11 // as published by the Free Software Foundation; either version 3 of the License, or any later version.
12 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
13 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14 // See the GNU General Public License for more details <http://www.gnu.org/licenses/>.
15 // In addition, you can negotiate about other options of licenses instead of GPL.
16 // If you would like to get other licenses, please contact us <yokokura(a)vos.nagaokaut.ac.jp>.
17 
18 #ifndef UDPTRANS
19 #define UDPTRANS
20 
21 namespace ARCS { // ARCS名前空間
23  public:
24  // 送信データの型の設定用定義
25  enum VarType {
26  UDP_INT16_T, // int16_t型
27  UDP_INT32_T, // int32_t型
28  UDP_UINT16_T, // uint16_t型
29  UDP_UINT32_T, // uint32_t型
30  UDP_DOUBLE // double型
31  };
32  // コンストラクタ (関数オーバーロード: 宛先のみ指定する場合)
33  // IPaddress_dest : 宛先IPアドレス, PortNum_dest : 宛先Port番号
34  // TypeOfVar : 送信する変数の型(ヘッダの定義を参照せよ), NumOfVar : 送信する変数の数
35  UDPTransmitter(const char* IPaddress, const unsigned short PortNum, VarType TypeOfVar, unsigned int NumOfVar);
36  // コンストラクタ (関数オーバーロード: 発信元を指定する場合)
37  // IPaddress_dept : 発信元IPアドレス, PortNum_dept : 発信元Port番号
38  // IPaddress_dest : 宛先IPアドレス, PortNum_dest : 宛先Port番号
39  // TypeOfVar : 送信する変数の型, NumOfVar : 送信する変数の数
40  UDPTransmitter(const char* IPaddress_dept, const unsigned short PortNum_dept,
41  const char* IPaddress_dest, const unsigned short PortNum_dest, VarType TypeOfVar, unsigned int NumOfVar);
42  ~UDPTransmitter(); // デストラクタ
43  void SetNumOfVar(unsigned int NumOfVar); // 送信する変数の数を再設定する関数 注意:コンストラクタのNumOfVarを超えてはならない!
44  // オーバーロードここから (そのうちテンプレートで書きなおす予定)
45  // charデータを送信する関数
46  // Data : 送信データ, Length : 送信データのバイト数
47  void Transmit(const char* Data, unsigned int Length);
48  // int16_tデータを送信する関数 Data : 送信データ
49  volatile bool Transmit(int16_t* Data);
50  // int32_tデータを送信する関数 Data : 送信データ
51  volatile bool Transmit(int32_t* Data);
52  // uint16_tデータを送信する関数 Data : 送信データ
53  volatile bool Transmit(uint16_t* Data);
54  // uint32_tデータを送信する関数 Data : 送信データ
55  volatile bool Transmit(uint32_t* Data);
56  // doubleデータを送信する関数 Data : 送信データ
57  volatile bool Transmit(double* Data);
58  // オーバーロードここまで
59 
60  private:
61  UDPTransmitter(const UDPTransmitter&); // コピーコンストラクタ使用禁止
62  const UDPTransmitter& operator=(const UDPTransmitter&); // 代入演算子使用禁止
63  volatile bool SendTo(void); // 実際に送信を実行する関数
64  int sock; // ソケットファイルディスクリプタ
65  struct sockaddr_in addr_dest; // 宛先ソケット構造体
66  struct sockaddr_in addr_dept; // 発信元ソケット構造体
67  VarType VariableType; // 送信するデータの型
68  char* TransData; // 送信バイナリデータ
69  size_t TransBytes; // 送信バイナリデータのバイト数
70  static size_t CalcTransBytes(VarType TypeOfVar, unsigned int NumOfVar); // 送信するデータの型からバイト数を計算する関数
71  };
72 }
73 
74 #endif
75 
struct sockaddr_in addr_dept
Definition: UDPTransmitter.hh:66
UDPTransmitter(const char *IPaddress, const unsigned short PortNum, VarType TypeOfVar, unsigned int NumOfVar)
Definition: UDPTransmitter.cc:29
VarType
Definition: UDPTransmitter.hh:25
Definition: UDPTransmitter.hh:27
void SetNumOfVar(unsigned int NumOfVar)
Definition: UDPTransmitter.cc:118
Definition: ControlFunctions.hh:17
char * TransData
Definition: UDPTransmitter.hh:68
~UDPTransmitter()
Definition: UDPTransmitter.cc:76
struct sockaddr_in addr_dest
Definition: UDPTransmitter.hh:65
Definition: UDPTransmitter.hh:29
VarType VariableType
Definition: UDPTransmitter.hh:67
const UDPTransmitter & operator=(const UDPTransmitter &)
volatile bool SendTo(void)
Definition: UDPTransmitter.cc:83
Definition: UDPTransmitter.hh:26
Definition: UDPTransmitter.hh:30
void Transmit(const char *Data, unsigned int Length)
Definition: UDPTransmitter.cc:125
size_t TransBytes
Definition: UDPTransmitter.hh:69
Definition: UDPTransmitter.hh:22
int sock
Definition: UDPTransmitter.hh:64
static size_t CalcTransBytes(VarType TypeOfVar, unsigned int NumOfVar)
Definition: UDPTransmitter.cc:91
Definition: UDPTransmitter.hh:28