ASI 5 of 5, 接続要求を出す, port:connect(portConnector)

今度はハンドヘルドをホストにして MSP432P401R LaunchPad を接続してみる。怖いので TI-Nspire からは電源をとらない。

f:id:ti-nspire:20160716210459p:plain:w580
USB mini の OTG ケーブルはほとんどない:
USB-133A・USB-142 | Ainex
USB-133・USB-130 | Ainex

-- Tiny ASI-Connection-Listener for TI-Nspire
require "asi"
MESSAGES = {}
function on.resize()
   W = platform.window:width()
   fontSize = W/21
end

----------------------------------------------------------------------------
-- ステートリスナーを定義する(asi の準備が整ったらポートスキャンを開始する)
----------------------------------------------------------------------------
function stateListener(state)
   if state == asi.ON then
      asi.startScanning(portScanner)
   end
   MESSAGES[1] = "Listener Callback:"
   MESSAGES[2] = "       ASI state = "..state
   platform.window:invalidate()
end

----------------------------------------------------------------
-- ポートスキャナーを定義する(見つかったポートに接続要求を出す)
----------------------------------------------------------------
function portScanner(port) 
   port:connect(portConnector)
   MESSAGES[3] = "Scanner Callback:"
   MESSAGES[4] = "       port = "..tostring(port)
   MESSAGES[5] = "       port name= "..port:getName()
   MESSAGES[6] = "       port id = "..port:getIdentifier()
   MESSAGES[7] = "       port state = "..port:getState()
   platform.window:invalidate()
end

-----------------------------
-- ポートコネクターを定義する
-----------------------------
function portConnector(port, event)
   MESSAGES[8] = "Connector Callback:"
   MESSAGES[9] = "       port state = "..port:getState()
   MESSAGES[10] = "       event = "..event
   platform.window:invalidate()
end

-------------------------
-- ステートリスナーを登録する
-------------------------
function on.construction()
   asi.addStateListener(stateListener)
   platform.window:invalidate()
end

----------------------------------------------------------------
function on.paint(gc)
   local leftMargin = fontSize / 2
   local lineSpace = fontSize * 1.3
   gc:setFont("sansserif", "r", fontSize)
   for i, v in ipairs(MESSAGES) do
      gc:drawString(v, leftMargin, (i - 1) * lineSpace)
   end
end