e-tipsmemo

ごった煮

Rust

Tauriでlife game (Rust & React)

Tauriが来そうな気がするので、なんか書いてみる。 Github GitHub - katakanan/tauri_life_game TauriではGUIのフロントエンドをいろいろなフレームワークで書ける。 Vanilla yew React Vue とかいろいろだが、プロジェクトを生成するときの選択肢によって、…

Tauriを使ってみる(だけ)

GUI開発をしたいので、面倒なものをいれるよりは、Windows上でやったほうがいい気がしたのでWindowsで行う。 WSL2上では、fish-shellを使っているのでnodejsを入れるのがめんどくさい 準備 Rustを入れる。 Rust をインストール - Rustプログラミング言語node…

Rust memmap2 LED blinking with Zynq

ZyboにUbuntu22.04のファイルシステムを入れて起動した。 PL部分にはAXI GPIOがつながっておりLEDが接続されている。 rotors.tar.goのファイルシステムにはdevmemがインストールされいた。 しかしUbuntuには入っていなかったのでdevmem2.cをどこからかダウン…

Ubuntu 22.04 LTS on Zynq with Petalinux

前回Zynqにpetalinuxで生成されたいろいろなものを書き込んで 起動できた記事を書いた。しかしrootfsがbusyboxベースであったので、使い勝手が悪いんじゃないかと思い Ubuntuやその他軽量なものを入れられるかを試してみる。 (petalinuxはあんまり関係なかっ…

NES Emulator in Rust : 5.1 Sprite timing

e-tipsmemo.hatenablog.com 以前にBackgroundが実装されていたがその時にSpriteも実装していた。(前後関係がおかしいままであるが) Sprite描写の実装は参考サイトとは少し違う (参考サイトの実装方法ではSprite zero hitのタイミングが数pixelずれる気がした…

Piston_window with Nintendo Switch Procon

e-tipsmemo.hatenablog.com前回NESのエミュレータでキー入力からのPAD操作を実装することができていたが、 やはりゲームパッドでコントロールしたいという願望があったため、Nintendo Switchのプロコンを買った。【任天堂純正品】Nintendo Switch Proコント…

NES Emulator in Rust : 4 Pad Input

e-tipsmemo.hatenablog.com続きスプライト実装をする前に、Nestestを通すために、PAD入力をサクッと実装する。 NES on FPGA PAD キー入力 Piston windowでキー入力をとるのはEvent::Inputが来たとき。 本当はInputでパターンマッチした引数でうまくやれるか…

NES Emulator in Rust : 3 PPU Background

e-tipsmemo.hatenablog.com 続きPPUを始めるにあたってnestestの表示または、HelloWorldの表示が最初の目標となる。 ファミコンエミュレータの創り方 - Hello, World!編 - - Qiita スプライト表示なし。(スクロールなしの)バックグラウンドを描写さえすれば…

NES Emulator in Rust : 2 CPU

e-tipsmemo.hatenablog.com 続き CPU #[derive(Default, Clone)] pub struct Cpu { pub pc: Cell<u16>, pub a: Cell<u8>, pub x: Cell<u8>, pub y: Cell<u8>, pub s: Cell<u8>, pub p: Cell<Status>, pub nmi: Cell<bool>, } レジスタを用意する。Statusはbitflags crateでflag管理する。 メイン</bool></status></u8></u8></u8></u8></u16>…

NES Emulator in Rust : 1 Operation Cycle

e-tipsmemo.hatenablog.comまずはどうCPU & PPU Cycleを合わせていくかというところを見る。 最初はほぼ参考サイトと同じように実装していく。 Operation Cycle Generatorを使うことで、NESの1画面更新が、以下の1ループと同じになる。 yieldでVBlankで停…

NES Emulator in Rust : 0

以前ファミコンのエミュを書きたいといってROMを読んだ記事を書いた。 e-tipsmemo.hatenablog.comコミットログを見ると始めてから2か月というところで、 giko00x.nesが動かないが、Donky kongがバグりつつ動いてくれたりと躓いているので。 かわりに雑記を書…

Extract splite from NES file in Rust

懲りずにエミュレータを作りたいと考えている。 ファミコンエミュレータの創り方 - Hello, World!編 - - Qiita HelloWorldするために、NESファイルを読み込みたい。 Qiitaの記事にもあるようにウォーミングアップとしてスプライトを表示したい。 GitHub - ka…

Parse indent sensitive grammar in Rust with Pest

以前、パーサーを雑に比較した。 e-tipsmemo.hatenablog.com結局Left-recursionは書き方で何とか対応できる範囲だと思われるので Introducing pest into glsl and hindsight about nom vs. pest (part 1) – phaazon.net(それ以外はどうしようもない) インデ…

TD4 Emulator GUI in Rust iced

TD4のエミュレータを作った e-tipsmemo.hatenablog.comが、それだけではつまらないので、GUIを被せた。 RustのGUIライブラリicedを使用した。 シンプルそうだったからというのが選んだ理由。 GitHub - katakanan/td4-gui Ticker Icedは周期を指定してイベン…

TD4 Emulator in Rust

思い立ったのでTD4のエミュレータを書いた。 GitHub - katakanan/td4-emu 命令セット TD4の命令の定義部分。 オリジナルで定義されている命令以外はNOPということにする。 #[derive(Debug, FromPrimitive, PartialEq)] pub enum Opecode { ADD2A = 0b0000, A…

libiio rust binding for Windows

前置き ADALM PLUTOからデータをもらうのに、用意されている方法として、Industrial-ioを使用する方法がある。 Linux Industrial I/O Subsystem [Analog Devices Wiki]組み込み機器が得たデータを簡単にPCとやり取りできる。 (組み込み機器上でLinuxが動いて…

Import dll from Rust dinamically

RustのFFIでdllを使う方法として、 #[link(name = "my_c_library")] extern "C" { fn my_c_function(x: i32) -> bool; } extern - Rust ただ.libが無いと言われてしまった。 windows - Rust linker seeks a LIB, rather than a DLL - Stack Overflow代わりに…

Comparison of Rust Parser generators

Rustでパーサージェネレーターを探していたときに、 その特徴や、今回の最終目的に必要な機能が備わってかどうかで主観的に比較をした時のメモ 構文解析の方式 Indentation(Pythonのようなインデントセンシティブな文法をパースできそうか) 曖昧な文法が可能…

Rust レイトレーシング

e-tipsmemo.hatenablog.com 書きながら再び書き直した。 Thu Aug 20 20:06:12 JST 2020 Hello World 1600x800 thread : 12 ss : 100 ________________________________________________________ Executed in 143.56 secs fish external usr time 1384.58 sec…

Rust serialport ③

e-tipsmemo.hatenablog.com 以前このようなプログラムを書いて、 ワットチェッカーからシリアルポート(over Bluetooth)経由で電力のログを取っていたが、 まともにエラーハンドリングしていなかったので、 不具合が起きており、その修正を行った。問題の処理…

ThingsBoardを利用する 3.

Thingsboardに送る適当なプログラムは書いたので Thingsboardのグラフ画面を作成する。とは言ってもここの動画で行っていることをアレンジするだけ Getting Started | ThingsBoard 複数のセンサーが増えてきたときのために 動画内では、 defaultダッシュボー…

ThingsBoardを利用する 2.

今回は、Rustのプログラムを書いて、 実際のデータを使って、何秒か一回にデータが送られるようにする。 reqwest e-tipsmemo.hatenablog.com 前回はreqwestを使って単発で送ったので 今回は昔の電力測定プログラムを合わせるだけ。 fn main() { println!("He…

ThingsBoardを利用する 1.

e-tipsmemo.hatenablog.com 前回設定したThingsboardを 以前構築した録画サーバーの電力測定とつなげることを考える。Thingsboardにデータを送るためのAPIドキュメント ThingsBoard API reference | ThingsBoard今回はデータを受ける側を準備して、データを…

Ryzen サーバー 電力測定⑤/Chart.js

前回はjsonで電力測定値をクライアントに送れるようになった。 e-tipsmemo.hatenablog.com これをきれいにグラフ化したい。 そこでChart.jsを使う。 Chart.jsによる折線グラフ作成<Chart.js<Javascript<木暮仁とりあえず必要 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.min.js"></script> 表示部分は <body> <input type="text" name="message" value=""> </body>

Rust websocket/Ryzen サーバー電力測定④

e-tipsmemo.hatenablog.com の続きで e-tipsmemo.hatenablog.com ができるようになったので。測定された時刻、電圧、電流、ワット数をserde_jsonでシリアライズして送信 Cargo.toml serde = "1.0" serde_derive = "1.0" serde_json = "1.0"#[derive(Serializ…

rust websocket server sender clone

e-tipsmemo.hatenablog.com と e-tipsmemo.hatenablog.com を組み合わせて、 Serverがlistenするスレッドとは別のスレッドからも、sendしたかった。 extern crate ws; use ws::{listen, Sender, Handler, Error, ErrorKind, Result, Message, Handshake}; us…

rust websocket

サーバーアプリ extern crate ws; use ws::{listen, Sender, Handler, Result, Message, CloseCode, Handshake}; use ws::Message::Text; use ws::Message::Binary; use ws::util::Token; struct Server { out: Sender, } impl Handler for Server { fn on_o…

Rust lopdf③

e-tipsmemo.hatenablog.com 文字列を抽出するのは最後 let mut textline : Vec<Object>= vec![]; for l in tmp.split('\n') { match op(CompleteStr(l)) { Ok((_, operate)) => { let operator = operate.operator; match operator.as_str() { "TJ" => { textline.ex</object>…

Ryzen 録画サーバー 電力測定③ (Rust serialport ②)

e-tipsmemo.hatenablog.com e-tipsmemo.hatenablog.comとりあえずRustでWattChecker-REXのサンプルコードと同じことができるようになった fn main() { println!("Hello, world!"); let mut wc = WattChecker::default(); wc.init(); wc.start_measure(); let…

rust serialport①

e-tipsmemo.hatenablog.com 電力測定のためのアプリを作るために Rustでserialportを操作する方法を調べた。非同期だったりとかいろいろあってよくわからなかったが結果的に動いた serialport-rsを利用することにした。https://crates.io/crates/serialportw…