CocoaAsyncSocket使用のTCPクライアントiOS App

GCDソケットを利用してTCPクライアントの構築を行う際、最も基本な設定をメモしておきます。

1、Githubより、CocoaAsyncSocketをダウンロードしておきます。

2、GCDAsyncSocket.h、GCDAsyncSocket.mをxcodeプロジェクトに取りこみます。

3、ターゲットviewcontollerにヘッダファイルをインポートして、宣言しておきます。

#import "GCDAsyncSocket.h"
@interface ViewController (){
 GCDAsyncSocket *asyncSocket;
}

4、ソケットを初期化して、接続を行います。

asyncSocket=[[GCDAsyncSocket alloc] initWithDelegate:self
delegateQueue:dispatch_get_main_queue()];
NSError *error = nil;
uint16_t portno = [[[self port] text] intValue];
if (![asyncSocket connectToHost:[ipaddress text] onPort:
portno error:&error]){...}
else{...}
}

5、ソケットからデータを取り込みます。

[asyncSocket readDataWithTimeout:-1.0 tag:0];

6、ソケットへデータを書きこみます。

[asyncSocket writeData:requestData withTimeout:-1 tag:0];

withTimeout:-1 は、ライムアウトなしと意味します。

7、ソケットイベントハンドラもいくつか取りこみます。

- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:
(NSString *)host port:(UInt16)portno {...}
- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:
(long)tag {...}
- (void)socket:(GCDAsyncSocket *)sock didReadData:
(NSData *)data withTag:(long)tag{...}
- (void)socketDidDisconnect:(GCDAsyncSocket *)sock 
withError:(NSError *)err {...}

ロボット翔-電子部品ストアで、SLAM LIDARなどのロボット部品、ドローン、センサモジュールを販売しています。

モノづくり試作、研究開発に提案する、ロボット翔-電子部品ストアロボット、SlamLidar、センサ、Arduino、Bluetooth/Zigbee/WiFi/RFIDモジュールが品揃えています。どうぞご利用下さい

Android AppにGPS機能実装の例

画面遷移

o2o-app
o2o-app

画面遷移するためのソースサンプル

1、遷移元画面 Listview.java

import com.soarcloud.O2O.Browser;
findButton.setOnClickListener(new View.OnClickListener() {  
  public void onClick(View v) { 
    Intent in = new Intent(getApplicationContext(), Browser.class);
    startActivity(in);	
  }  
});

続きを読む Android AppにGPS機能実装の例

モノづくり試作、研究開発に提案する、ロボット翔-電子部品ストアロボット、SlamLidar、センサ、Arduino、Bluetooth/Zigbee/WiFi/RFIDモジュールが品揃えています。どうぞご利用下さい

Fluentedを使ってセンサデータの収集、クラウドへ転送

サーバ側Fluented設定

## built-in TCP input
## $ echo <json> | fluent-cat <tag>
<source>
 type forward
 port 24224
</source>
<match sensor.test>
 type mongo
 database sensor
 collection test
 host localhost
 port 27017
 disable_collection_check true
 capped
 capped_size 2048m
</match>
<match gyro.test>
 type mongo
 database gyro
 collection test
 host localhost
 port 27017
 disable_collection_check true
 capped
 capped_size 2048m
</match>

センサデータ収集転送側Fluentd設定

coming soon

ロボット翔-電子部品ストアで、SLAM LIDARなどのロボット部品、ドローン、センサモジュールを販売しています。

モノづくり試作、研究開発に提案する、ロボット翔-電子部品ストアロボット、SlamLidar、センサ、Arduino、Bluetooth/Zigbee/WiFi/RFIDモジュールが品揃えています。どうぞご利用下さい

WordPressでサイト構築に最も基本的plugin、ツール等

 

プラグイン新規追加画面でプラグインを検索してインストールを行えます。

1、SEO用タグtitle、description、descriptionをページ毎設定できます。ページ一覧でも変更可能に。
All In One SEO Pack
2、捜索エンジン用xmlファイルを自動的に作成してくれます。
Google XML Sitemaps
3、テーブルを入力だけで作れます。ただセルの幅設定はできないようです。
TablePress
4、可愛いアイコンフォント、ショートコード をテキストに埋め込めば設置完了します。
Font Awesome Icons
続きを読む WordPressでサイト構築に最も基本的plugin、ツール等

モノづくり試作、研究開発に提案する、ロボット翔-電子部品ストアロボット、SlamLidar、センサ、Arduino、Bluetooth/Zigbee/WiFi/RFIDモジュールが品揃えています。どうぞご利用下さい

加速度センサに連動してCUBEを回転させるApp(Unity3D使用)

1、PCを加速度センサにシリアルにて接続して、ControlObjectByGsensorUnity.cs をunity3d のcube objectにattachして、再生します。
ControlObjectByGsensorUnity.cs

using System;
using System.IO.Ports;
using System.Threading;
using UnityEngine;

public class ControlObjectByGsensorUnity: MonoBehaviour {
	private const string SERIAL_PORT = "COM5";
	private const int SERIAL_BAUD_RATE = 9600;
	private const int SERIAL_TIMEOUT = 100;

	private Thread _readThread;
	private static SerialPort _serialPort;
	private static bool _continue;

	//private static Quaternion _handQuaternion = new Quaternion();
    private static float x,y,z;

	void Start() {
		_readThread = new Thread(Read);
		_serialPort = new SerialPort(SERIAL_PORT, SERIAL_BAUD_RATE);
		_serialPort.ReadTimeout = SERIAL_TIMEOUT;
		_serialPort.Open();
		_continue = true;
		_readThread.Start();
	}

	void Update() {
		transform.rotation = Quaternion.AngleAxis(y, Vector3.forward) * Quaternion.AngleAxis(x, Vector3.right);
	}

	void OnApplicationQuit() {
		_continue = false;
		_readThread.Join();
		_serialPort.Close();
	}

	private static void Read() {
		string[] values;
		while (_continue) {
		 if (_serialPort.IsOpen) {
		  try {
		   values = _serialPort.ReadLine().Split('\t');
		   if (values[0] != "\t") {
			x = float.Parse(values[0]);
			y = float.Parse(values[1]);
		   }
		  } catch (TimeoutException) {
		  }
		 }
		 Thread.Sleep(1);
		}
	}
}

2、加速度センサを傾けてみて、Cubeが動けば成功です。動かない場合は、Arduino本体のリセットボタンを押してみます。

3、3軸加速度センサは、重力加速度によるx、y軸の分量により傾斜を計算するもので、水平面に沿う回転は検知できません。水平面の回転を検知したい場合、他のセンサを組み合わせるかまたはAll in oneのセンサ例えば9軸センサを使う方法があると思います。のち9軸センサの使う実験に関するブログを公開します。

2015-6-24追記:
4、シリアルケーブル(USB)を外して、センサからPC/UnityへUDP或いはTCPにて接続して、cubeの回転動作が確認できています。
5、更に、センサからAndroid/Unity、iPad/UnityへUDP或いはTCPにて接続して、cubeの回転動作が確認できています。TCP接続と比べて、UDP接続は若干、遅延が少なくなるように見受けています(遅延時間の計測は相当難しいので、省いています)。
6、ビデオ(ジャイロセンサ~WiFi~UNity3D App)、ジャイロセンサを使っていますので、unityアプリCUBEの傾斜は多少ずれているように見えます。

ロボット翔-電子部品ストアで、SLAM LIDARなどのロボット部品、ドローン、センサモジュールを販売しています。

モノづくり試作、研究開発に提案する、ロボット翔-電子部品ストアロボット、SlamLidar、センサ、Arduino、Bluetooth/Zigbee/WiFi/RFIDモジュールが品揃えています。どうぞご利用下さい