« Socket Debugger | トップページ | BSが映らない »

2015年10月 6日 (火)

Serial DebuggerのLuaでASCII変換

早速 Lua を弄ってみます。
標準ライブラリーを使う分には、DLLを云々しなくても良いみたいです。

作成中のツールですが、大元の作者様の思想でコマンドのやりとりを文字列で行っています。
Serial Debugger に初期状態で用意されている OnReceiveイベント は、受信値を テーブル に格納します。
"AAA\r" は { 65, 65, 65, 13 } となります。
string.char はテーブルを扱えない様だし、 table.concat で結合しても "65656513" となるだけ。
自分でASCII変換する必要があります。

これ位の関数は既存の物がどこかに落ちていると思ったのに、見つかりませんでしたw

 

---------------------------------------------
-- 数値テーブルをコード変換後に文字列化
--
-- ASCIIの例
-- 入力: { 0x30, 0x31, 0x32 }
-- 返値: "012"
---------------------------------------------

function CharFromTbl(tbl)
    tblChar
= {}
   
for i=1, table.maxn(tbl) do
        tblChar
[i] = string.char(tbl[i])
   
end
   
return table.concat(tblChar)
end

 

こいつをOnReceiveイベント内で呼び出します。
例として、受信文字列の先頭に '$' を付けて返します。

---------------------------------------------
-- 受信通知
---------------------------------------------

function OnReceive(recv)
    --Logput(1,'OnReceive')

    strRecv = CharFromTbl(recv)
   
if (strRecv == "AAA\13")
   
or (strRecv == "BBB\13") then
        strResp
= "$"..strRecv
        SendData
(strResp)
   
end

   
return 0
end

 

あとは、 strRecvの比較 を必要なだけ並べればOK。
一度動く物を作れれば、この先は楽ですね。
 

|

« Socket Debugger | トップページ | BSが映らない »

算s」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Serial DebuggerのLuaでASCII変換:

« Socket Debugger | トップページ | BSが映らない »