1はじめに
Python lightアプリケーションは、MicroPythonに基づいて開発されています。MicroPythonは、Pythonのエレガントで簡潔な構文を継承し、便利な組み込みハードウェア操作ライブラリを提供します。
HaaS100は、Alibaba Cloud Intelligent IoTによって立ち上げられたIoT開発ボードとして、MicroPythonオペレーティングエンジンに適合し、さまざまな豊富なハードウェア操作インターフェイスを提供し、Alibaba CloudIoTプラットフォームとクラウドAI関連の機能を提供します。
この開発ボードを使用すると、Pythonプログラムを介して、ハードウェア制御、クラウドAI、およびクラウドの相互運用性を簡単に実装できます。
Pythonライトアプリケーションの詳細については、次のリンクを参照してください。
この記事では、Pythonライトアプリケーション開発の効率を向上させるために最適な起動方法を選択する方法を紹介します。
2.エフェクトビデオ
Pythonライトアプリケーションの起動方法
上のビデオでは、2つの実行方法が示されています。
- インタラクティブ
- ファイルの実行
次に、開発者が日常の開発に最適な起動方法を正しく選択できるように、これら2つの方法に基づいて説明を拡張します。
3.環境への準備
3.1、ハードウェア
- 1つのHaaS100開発ボード
- 電源1
- マイクロUSB1つ
- sdcard one
3.2ソフトウェア
- 最新のHaaS100オープンソースコード
- シリアルツール
4.ファームウェアの準備
光のPythonアプリケーションに従って、ある意味ですばやく開始でき、ファームウェアを直接ダウンロードし、ソースコードをダウンロードして、プログラミング操作をコンパイルすることもできます。
最終的にマシンに焼き付けられたメインプログラムの機能は次のとおりです。
- Pythonコマンドを登録する
- 着信パラメータに応じて、インタラクティブモードとファイルモードのどちらに入るかを決定します
4.1、コード分析
HaaS100の最新のオープンソースコードをダウンロードした後、application / exampleディレクトリに移動すると、Pythonライトアプリケーションのサンプルプロジェクトが表示されます。
py_engine_demoこのデモエントリ手順はappdemo.cです。このコードでは、主に2つのことが行われます。
- Pythonコマンドを登録する
- Python仮想マシンを起動します
Pythonコマンドを登録する
static struct cli_command command = {
.name = "python", /*命令名称*/
.help = "start micropython ", /*命令的帮助描述信息*/
.function = handle_identity_cmd /* 命令的实现函数*/
};
int application_start(int argc, char *argv[])
{
# 调用系统cli命令注册接口
int ret = aos_cli_register_command(&command);
if (ret) {
printf("register micropython command failed \n");
}else{
printf("register micropython command succeed \n");
}
}
Python仮想マシンを起動します
int python_main_entry(void *p)
{
//printf("global_argc = %d;global_argv = %p;%s;\n", global_argc, global_argv, __func__);
tick_t sleep_time;
sleep_time = krhino_ms_to_ticks(10); /* 10ms to ticks */
#sleep 10ms 确保新的task 在默认task之后执行
krhino_task_sleep(sleep_time); /* sleep 10ms */
mpy_thread_args* args = (mpy_thread_args*)p;
if (args == NULL)
{
printf("%s:args is illegal\n", __func__);
return -1;
}
# 启动python 虚拟机
mpy_init();
mpy_run(args->argc, args->argv);
# 退出虚拟机,释放内存
free_mpy_thread_args(args);
return 0;
}
static void handle_identity_cmd(char *pwbuf, int blen, int argc, char **argv)
{
//printf("argc = %d;argv = %p; %s;\n", argc, argv, __func__);
# 申请需要传递到新的task 相关信息的内存
mpy_thread_args* args = alloc_mpy_thread_args(argc, argv);
# 启动一个新的task,去执行python命令
aos_task_new("python_main_entry", python_main_entry, (void*)args, 1024*20);
}
4.2、コンパイル
AliOS Thingsコードのルートディレクトリで、次のコマンドを実行します
aos make py_engine_demo@haas100 -c config
aos make
コンパイル後、アウト/ py_engine_demo @ haas100 /バイナリ/ディレクトリに、それは[email protected]を生成します、 プラットフォーム/ MCU / haas1000 / /解放しながらwrite_flash_tool / ota_bin /ディレクトリに新しいファイルlittlefs.binを生成します。
4.3、燃やす
プログラミングの側面では、ライトクイックスタートのPythonアプリケーションを 参照してください。Windowsコンピュータの場合、書き込み用のファームウェアパッケージはplatform / mcu / haas1000 / release /ディレクトリにあります。
5.インタラクティブ操作
システムの電源を入れた後、パラメータなしでシリアルコマンドラインにPythonを入力し、デフォルトでインタラクティブモードに入ります。
このモードでは、Pythonコードを入力してリアルタイムで実行し、実行結果を表示できます。人間と機械の対話のように、1つの入力と1つの出力という非常に便利なため、このモードはfriendly_repoと呼ばれ、friendly_repoに対応するraw_replがあります。
- Friendly_repl
迅速なデバッグとプログラミングに便利なマンマシンダイアログモード
終了:ctrl + d
スイッチ:ctrl + aを2回押して、raw_replモードに入ります
- raw_repl
ネイティブモード、相互作用に不便、ファイルストリームの送信と実行に便利
スイッチ:ctrb + bをfriendly_replモードに切り替えます
raw_replモードでは、ファイルストリームをマシンに直接プッシュして、シリアルポートを介して実行できます。この記事のこの部分については、当面は紹介しません。
6.ファイルの実行
ファイルの実行は、次の2つの状況に分けられます。
- ファイルはHaaSデバイス上にあります
- ファイルはコンピューター(PC)にあります
6.1.HaaS機器でファイルを実行する
現在、HaaS100ファイルシステムでは、ファイルは組み込みの/ dataパーティションまたは外部の/ sdcardに配置できます。
データ
/ dataパーティション上のファイルは、コンパイルフェーズで事前に作成されます。利点は、常に存在することです。欠点は、更新または変更した場合、コンパイルまたは書き込みが必要になることです。/ platform / mcu / haas1000 / prebuild / data /は、データパーティションのより多くのディレクトリです。通常、このディレクトリ内のすべてのファイルはlittlefs.binにコンパイルされ、システム内で/ data / +特定のパスを介してアクセスされます。
デフォルトでは、/ dataディレクトリには2つのサブディレクトリが含まれています
- / data / lib
Python公式ライブラリディレクトリ、変更しないでください
- / data / python
実行可能なPythonケースのソースファイル
SDカード
デバイス上のSDカードのデフォルトパスは/ sdcardです。データと比較すると、フラッシュする必要がなく、スペースが十分に大きいという利点があります。PCで直接編集し、SDカードに保存してから、デバイスを接続します(現在、ホットプラグはサポートされていません。接続後、マシンを再起動する必要があります)
6.2、PCでファイルを実行します
PC上でのファイルの実行は、ファイルストリーミングの実行とファイルのダウンロードの実行の2つの方法に分けることもできます。ファイルフローの実行はより複雑で、一連のツールサポートが必要なため、この記事では当面ファイルフローの実行については紹介しません。
ファイルのダウンロードとは、PC上のファイルをデバイスのデータまたはsdcardにダウンロードし、ダウンロードしたファイルをPythonで実行することです。現在、HaaS100デバイスはすでにtftp機能をサポートしているため、PCからデバイスにtftp経由でファイルをダウンロードできます。tftp機能の方法は次のとおりです。
- デバイス側のネットワーク(ssidとパスワードの置き換えに注意してください)
python / data / python / network / ConnectWifi。py 「SSID」 「パスワード」
接続が成功すると、デバイスのIPアドレスがログに出力されます
- デバイスでtftpサーバーを起動します
tftpサーバーの起動
- PCとデバイスは同じLANに接続されており、PCがデバイスのIPにpingを送信できるようになっています。
PC側でtftpクライアントを起動し、putコマンドを使用してPCファイルをデバイス側の指定されたパスに渡します(グラフィカルツールまたはスクリプトを使用して実行できます)。
以下は簡単なスクリプトです:send_file.sh
#ip="192.168.1.173"
ip=$1
filename=$2
#filename="test.py"
tftp ${ip} << !
binary
put ${filename} ${ip}:/sdcard/${filename}
quit
デバイスのIPが192.168.1.173であるとすると、マシンにプッシュする必要のある/ sdcardファイルはtest.pyであり、コンピューター端末に入力します。
bash send_file.sh 192.168.1.173 test.py
開発者サポート
MicroPythonは、Pythonの習得しやすく使いやすい機能を継承すると同時に、組み込みハードウェアに基づく基本的なライブラリパッケージを提供するため、開発者はインタラクティブな環境を通じてリアルタイムで組み込み開発を簡単に実行でき、組み込みを作成できます。シンプルで便利な開発。
MicroPython組み込み開発の詳細については、コードをスキャンしてDingding開発者グループに参加するか、WeChatでコードをスキャンしてHaaSテクノロジーコミュニティの公式アカウントをフォローしてください。