LoginSignup
6
3

More than 5 years have passed since last update.

5. iOS(Swift4.0)用のECHONET Liteプロトコルライブラリ

Last updated at Posted at 2017-08-21

 iOS用のECHONET Liteプロトコルライブラリを作ったので,その使い方を説明します。

  • Xcode 9.4.1 の情報に更新したよ。
  • 誤字脱字を修正したよ。

とりいそぎ,簡単にね。
ちなみにオープンソースでMITライセンスだよ。みんな安心。

内部はGCDAsyncUdpSocketに依存しています。
(GCDAsyncUdpSocketはPublic domainということになっているよ)

1. Xcode でProjectの準備

  • Xcode
  • File, New, Project
  • iOS, Single View Application, Next
  • Product Name: ELSwiftTest, Next

こんな感じ?

スクリーンショット 2017-08-21 12.00.40.png

  • (どこでもいーけど,今回は/DocumentsにXcodeというフォルダを作って選択してCreate)
  • File, Save
  • Xcode, Quit Xcode

2. Podfile準備

  • プロジェクトのフォルダがこんな感じになってるとして,

スクリーンショット 2017-08-21 12.09.07.png

  • スクショの位置(xcodeprojと同じ位置)にPodfileを新規に作成して
  • 下記をテキストでPodfileに記述
use_frameworks!

target 'ELSwiftTest' do
  pod 'ELSwift'
  pod 'CocoaAsyncSocket'
end
  • terminal開いて
$ cd ~/Documents/Xcode/ELSwiftTest/
$ pod setup
$ pod update
  • ELSwiftTest.xcworkspaceというファイルができているので,今後はこちらをつかって開発していく。

3. Demo作ってみる

具体的なXcodeとSwiftでのプログラミングは別の資料をみていただくとして・・・
こんな感じでGUIと,オブジェクトハンドルとの対応をつくって

スクリーンショット 2017-08-21 12.29.10.png

プログラムはこんな感じに修正.

import UIKit
import ELSwift

class ViewController: UIViewController {

    @IBOutlet weak var logView: UITextView!
    @IBOutlet weak var btnSearch: UIButton!
    let objectList:[String] = ["05ff01"]

    override func viewDidLoad() {
        super.viewDidLoad()
        logView.text = ""

        do {
            try ELSwift.initialize( objectList, { rinfo, els, err in
                if let error = err {
                    print (error)
                    return
                }

                if let elsv = els {
                    let seoj = elsv.SEOJ
                    let esv = elsv.ESV
                    let detail = elsv.DETAIL
                    self.logView.text = "ip:\(rinfo.address), seoj:\(seoj), esv:\(esv), datail:\(detail)" + "\n" + self.logView.text
                }
            }, 4)
        }catch let error{
            print( error )
        }

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func btnSearchDown(_ sender: Any) {
        ELSwift.search()
    }

}

もしかするとこのタイミングではimport文のところで

Cannot load underlying module for 'ELSwift'

というエラーが出てしまいますが、一旦「⌘+B」でコンパイルすると消えると思います。
もしかしたらwarningも下記のUDP関係でちょっとでます。多分平気,きになる人は直して。

Parameters of 'udpSocket(_:didReceive:fromAddress:withFilterContext:)' have different optionality than expected by protocol 'GCDAsyncUdpSocketDelegate'

4. 動かす。

シミュレータでの結果はこんな感じ。
通信するのでダイアログで警告でるけど許可してね。

Simulator Screen Shot 2017.08.21 12.41.10.png

5. SwiftとかXcodeとかが使いにくいことを再認識する。

ここ,つらいとこ

 6. よくあるエラーとその対策

ここもつらいとこ

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3