ソフトウェア

  • 単語カードアプリの制作
    Flashcard App フラッシュカードアプリを作成しました。英単語などを覚えるツールとしてレンタルサーバで動作するWebアプリです。私はiPhoneからアクセスして勉強しています。単語登録はMySQLへ直接登録する必要があります。 Screen shots 利用方法は橙色の面に表示された問題を見て回答をイメージします。そしてタップすると裏側の緑色の面が表示されるので答え合わせをします。さらにタップすると次の問題が橙色の面に表示されます。設定は左上のメニューをタップして出題の種類を選択します。 Condition 動作環境 項目 内容 サーバ さくらインターネット 契約プラン レンタルサーバ スタンダード ライブラリ jquery データベース MySQL インターフェース cgi cgi処理 python3.7 ファイル構成 Filename 内容 flashcard.html メインページ flashcard.js jqueryでユーザーインターフェース処理 flashcard.cgi pythonでデータベース処理 flashcard.css 装飾 データベース データベースのレコード定義はシンプルに下記としました。 CREATE TABLE IF NOT EXISTS `FlashCard` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `side_a` TEXT, `side_b` TEXT, ...
  • Benchmark M1 processor
    Benchmark 自分が管理しているPCで計算処理のベンチマークを実施した。実行サンプルはnumpyで作成した4.5M要素の演算と探索を行いコンター図を出力するプログラムである。 1位 MacBook Pro 2021 Apple M1 Pro RAM 32GB ARM64 計算時間 2 min 56 s 2位 MacBook Pro 2021 Apple M1 Pro RAM 32GB Rosetta 計算時間 4 min 46 s 3位 Windows10 desktop 2020 Xeon 4GHz RAM 32GB 計算時間 5 min 11 s 4位 Windows10 note 2020 Core i5 ...
  • Raspberry Pi Cmd Launcher
    Raspberry Pi Cmd Launcher Raspberry Piにキャラクタ液晶とプッシュスイッチを組み合わせてランチャーを製作する。 スイッチは左ボタンと右ボタンとエンターボタンの3つとする。液晶に表示されたメニューから左右ボタンで希望のコマンドを選択しエンターボタンで実行する。ユーザフィードバックはピエゾ素子で音を発生。 Hardware 液晶はi2c接続の2行8桁のものを使用する。秋月電子で販売中のバスリピーター付きのLCD(AQM0802A)。 スイッチは小さなプッシュ型でエンターボタンは少し大きめのものを選んだ。家庭内在庫品だ。 graph LR subgraph Raspberry Pi i2c pwm ...
  • Raspberry Pi に Beep音を実装する
    Beep sound on Raspberry Pi ラズパイにBeep音を実装したい。起動完了やアラート発生時にピッ・プーーと鳴らすのだ。 Hardware Hardware PWMを利用した実装例です。 Schematic BOM Name Type Spec. Piezo sounder Murata PKM13EPYH4000-A0 Dia.13mm, t6.9mm, 30Vp-p max. Transister Rohm DTC143E NPN Digital Tr. Rb=4.7kΩ, Rbe=4.7kΩ Resister Carbon film 10kΩ 0.1W Software Hardware PWMを利用した実装例です。 Source code python3 PIGPIOモジュールを使用しました。beep(0) でピポッです。 これから動作確認します。(^^;) import pigpio BEEP_PORT = 13 BEEP_DUTY = 500000 pi = pigpio.pi() def beep(pattern_id=0): ...
  • LIFEGAME
    LIFEGAME Python, Numpy, Curses の組み合わせでライフゲームを製作した。練習問題ですね。 cursesでconsoleのwindowサイズを取得、それに合わせてnumpy.arrayを作成しbufferとする。初期画面はnumpyのrandomで生成、世代更新はnumpyのsumを利用した。画面更新はbufferをスキャンして1つ1つ書き換え。ここは改良の余地がありそう。 #!/usr/bin/env python3 import numpy as np import curses as cs import time class lifegame: def __init__(self, ny, nx): self.field = np.zeros([ny, ...
  • リアルタイムふうOS キャラクタ表示LCDドライバ
    RTF-OS LCD driver LCD初期化タスクとドライバタスクの初期化 #define N_LCD_MSG 32 /* LCDコマンドバッファのバイト数 */ flag_type *flag_lcd_init; ...
  • リアルタイムふうOS キャラクタ表示LCDドライバ
    RTF-OS LCD driver MSC Real Time Foo OS を使用したLCDドライバの作例。ドライバ本体タスクと初期化シーケンスを実行するタスクの2つのタスクで構成する。利用するタスク(メインタスクと表記)から初期化タスクを呼び出すことで起動する。lcd_mainタスクは初期化が完了すると不要となる。 API 名称 処理内容 init_lcd LCD関連タスク、イベントフラグ、メールボックスの初期化 lcd_clear 表示をクリアする lcd_home カーソルをホームポジションに移動する lcd_print_str カーソル位置に文字列を表示する lcd_print_dec4s 16ビット符号付きバイナリデータを4桁の十進数とで表示する。負数は"-"を付加。 lcd_print_dec4 16ビットバイナリデータを4桁の十進数で表示する lcd_print_dec3 8ビットバイナリデータを3桁の十進数で表示する lcd_print_dec2 8ビットバイナリデータを2桁の十進数で表示する lcd_print_dec1 8ビットバイナリデータを1桁の十進数で表示する lcd_set_pos カーソルをx,y座標に移動する print カーソル位置に文字列を表示する。失敗なら再試行、成功なら状態遷移する。 locate カーソルをx,y座標に移動する。失敗なら再試行、成功なら状態遷移する。 home カーソルをホームポジションに移動する。失敗なら再試行、成功なら状態遷移する。 clear 表示をクリアする。失敗なら再試行、成功なら状態遷移する。
  • リアルタイムふうOS 全体の構成とAPI
    全体の構成とAPI リアルタイムOSの勉強のために作成したフレームワークです。タスクが移り行く様はなかなかおもしろかった。 Over view 全体の構成図を下記に示す。1つのモジュールは1つの初期化ルーチンと1つ以上のタスクを持つ。各タスクの同期はOSが仲介する。 API タスク制御と時間管理に関するAPI 名称 処理内容 init_os OSの初期化 task_main メインルーチン無限ループ create_tcb ユーザタスクを登録するTCBを作成 start_task タスクを実行待ちリストに登録する start_task_i 割込みルーチン用のstart_task処理 exit_task タスクを終了するTCBを解放 exit_task_i 割込みルーチン用のexit_task処理 get_trg 状態遷移した理由を取得 delay_task 実行を指定時間だけ中断する set_timeout 実行を指定時間だけ中断する(delay_taskと同じ) clear_timeout 中断後の再開をキャンセルする timer_1ms_int 1ms周期タイマ割込みで行う処理(タイムアウト判定) slice_task 実行を中断しCPUを解放する set_next_state 次の状態遷移変数値を設定 イベントフラグに関するAPI 名称 処理内容 create_flag イベントフラグFLAGを作成 set_flag イベントが発生する(フラグがTRUE)まで待つ set_flag_i イベントを発生(フラグをTRUEに設定) clear_flag 割込みルーチン用のset_flag処理 clear_flag_i イベントを消去(フラグをFALSEに設定) wait_flag 割込みルーチン用のclear_flag処理 セマフォに関するAPI 名称 処理内容 create_sem セマフォSEMを作成 signal_sem セマフォwait動作(リソースが空くまで待つ) wait_sem セマフォにsignal動作(リソースを1つ解放する) メールボックスに関するAPI 名称 処理内容 create_mbx メールボックスMBXを作成 send_msg メールボックスにメッセージが受信されるまで待つ send_msg_i メールボックスにメッセージを送信 wait_msg 割込みルーチン用のsend_msg処理 get_msg メッセージを取得 get_msglen メッセージの長さを取得
  • リアルタイムふうOS データ構造
    Data structure Task Control Block: TCB struct st_tcb { struct st_tcb *link; struct st_tcb *back_link; void (*entry)( ...
  • リアルタイムふうOS 時間管理
    Time management タイマ関連処理 タイムアウト待ち登録:TimerQへ登録 時間経過待ちタスクのリストへ登録する。待ち時間の短い順でソートされる。 void link_timer_q( tcb_type *tcb, uint16 time ) { uint16 sum_time, time_z1; tcb_type *scan; ...
  • リアルタイムふうOS タスクの書式
    How to write a task Example of the task rouchine Module initialize tcb_type *tcb_sample1; tcb_type *tcb_sample2; flag_type *flag; void init_sample( void ) /* 初期化ルーチン */ { ...
  • リアルタイムふうOS 初期化とメインルーチン
    Initialization and Mainrouchine General flowchart OS Initialization void init_os( void ) { que_type *que; que = &TimerQ; TimerQ.link = (tcb_type *)que; ...