2024年1月20日土曜日

lua/c or micropython/python pedia

-----------lua --------------------------------------

sudo apt install libssl-devですべてうまくいくようになった(ただしopensslをapt install

したりソースからビルドしたりして、いずれもapt remove,make unistallしたあとだが。。)

http,lapisも無事にインストできた(VirtualBox) sqlite3もdevいれんといかんみたい

raspberry piではうまくいかんが。。。lsqlite,socket,copasはうごいた

GitHub - LuaDist/lsqlite3: LuaSQLite 3 is a thin wrapper around the public domain SQLite3 database engine. 無事にインストできた exampleもうごいた

sudo apt instasll lua-copas and curl --http0.9 http://localhost:8000 以下のサイト成功

Lua Copasを使ってみる - コピペプログラマーのブログ (hatenablog.com) OK

https://densan-labs.net/tech/lua/chapter6.html#id13 でグローバル変数で数字は浮動小数点になってしまうので  printf("SIZE : %d\n", lua_tointeger(L, -1)); はエラーとなる

printf("%f\n",lua_tonumber(L,-1))でないとエラーとなる

同様に以下の変更が必要

/ sample.lua using cfunc l_add as add
// x =10 // Lua stackにつまれる
// y =5   // Lua stackにつまれ
// result = add(x, y) // add(x,y)の結果がLua stack につまれ、その結果がresultにポップされる
// print("x + y は " .. result .. " です")

int l_add(lua_State* L)
{
  int x = luaL_checknumber(L,-2); // checkint->checknumber
  int y = luaL_checknumber(L,-1); // as above
  int result = x + y;
  printf("%d + %d is calculated\n",x,y);
  lua_pushnumber(L,result); // int計算しても浮動小数点でつまれる
  return 1;
}

int main(void){

//  int x = 10, y = 5; // no meaning code, never used
  lua_State* L = luaL_newstate();
  luaL_openlibs(L);//luaの標準関数を使用するため	
  lua_register(L,"add",l_add); // regsiter l_add as add in lua
  if(luaL_loadfile(L,"sample.lua") || lua_pcall(L,0,0,0)){
	  printf("sample.lua can not open\n");
    printf("error:%s\n",lua_tostring(L,-1));
    return 1;
  }
  lua_close(L);
  return 0;
}	

ーーーーーーmicropythonーーーーーーーーーーーーーーーーーーーーーーーーーー

 Quick reference for the RP2 — MicroPython latest documentation !!

以下をmain.pyでラズピコにおいて/dev/ttyACM0を解放する

import machine,time

adc0=machine.ADC(0) # 

f = 100 / 65535

while True:

  v = adc0.read_u16()*f

  print(v)

  time.sleep(0.5)

そして以下のpythonコードをpython3で実行する!

import serial

ser = serial.Serial('/dev/ttyACM0',115200,timeout=1)

try:

 while True:

  data = ser.readline()

  s = data.decode()

  print("read: ",s.strip())

except:

  ser.close


0 件のコメント:

コメントを投稿