2026年3月27日金曜日

STM32U0 +HAL でシリアルを使うときのメモ

HAL_UARTEx_ReceiveToIdle_DMA を使うときは、必ず FIFO をEnable すること。できれば 1byte FIFO にたまったところで割り込みがかかるように。

さもないと、ごくまれに割り込みハンドラの無限ループに入り込んでハングアップする。 

2026年1月9日金曜日

github:Personal Access Token を使って github にアクセスしてみた

 仕事のつながりの古い知り合いから仕事をもらったのだが、納品が github 経由だったので、自分の github アカウントに private リポジトリを作った。そこにアクセスする必要が出たのだが、passwd アクセスはすでに廃止。いつもは SSH キーを使っているのだが、今回は貸与された機材で開発しているので、そこに秘密鍵をコピーするのマズイ(機材を返却するときに消し忘れる可能性が高い)。

 ということで今回は Personal Access Token を使ってみた。参考にしたのはこちらのページ。 基本的には書いてある通りに作業して動いた。うまくいかなかったのは、作業ディレクトリを間違ったのとリモートリポジトリの名前を間違ったことだけ(main - master)。

 以前、客先の github にアクセスするのに非常に手間取った(2日人ぐらいかかった)ことを思うと、だいぶ進歩したかも。 

2025年10月27日月曜日

VPN:kagoya サーバーに softether で VPN を立ち上げ

 海外旅行にいくので、行った先でも日本と同じようにサイトが見られれるように VPN を作った。 

・kagoya を使ったのは安かったから。20円/日,550円/日 

・softether を使ったのは、インストール方法が公開されていたから 

基本的には↑の手順でいけるが、他にサーバーへのログイン方法soft ether への新規ユーザー作成、Android 12 以降の場合は OpneVPNが必要、android の VPN 設定はgoogle 検索で出てきた AI の情報で解決。SoftEther VPN クライアント接続とSE-VPN サーバー管理 (ツール)が別なことに気付かづ少々時間を食った。

 去年もやったのだけど、すっかり忘れていて2時間以上かかってしまったのでメモを残す。 

 

2025年8月30日土曜日

u-center2:config 設定を export する方法

 u-center2 は u-center とだいぶ UI が変ってしまって、いろいろと大変。config 設定をファイルに export する方法をメモ。

・Device Configuration を開く


・Quick configuration -> Constellation configuration で設定


・Advanced configuration を選択

・真ん中上の立て三つボタンをクリック->Capture all configuration layer values をクリック

 

・真ん中上の立て三つボタンをクリック->Create configuration list をクリック


・全部修正したら、下の方にある Save as... で名前を付けて保存


・左側の Saved configuraitons に名前が出てきたら、名前の上にマウスポインタ―を持ってきて、出てきた縦三つボタンをクリック、Export を選択してファイルに出力

※参考

・右下の Send をクリックするとデバイスに送信
・Send Configuration in batch mode を選択すると、Setval に複数データが乗る 
・config するレイヤーを変更する場合は Edit をクリックして
 
 
  設定変更して Update をクリックすると、リストの最後に追加される

 

2025年4月19日土曜日

Delphi:TComPortDrv + CH340 の組み合わせは Enabling the Serial Port Enmuarator をチェック

 Delphi + TComPortDrv で作った COM ポートにアクセスするアプリ、CH340 のポートを開こうとするとなぜかエラーになる。ポート番号を変えたりドライバーをチェックしたりいろいろやったがダメ。

 最後にデバイスマネージャーからプロパティをひらいて[Port Settings]->[Advanced...]と進んで 'Enabling the Serial Port Enmuarator' にチェックを入れ[OK]で更新したらDelphi + TComPortDrv で作ったあぷりで CH340 のポートにアクセスできるようになった。

 いろいろやってはみるものだ。

RS232 の automatic power down で嵌った

 RS232 の automatic power down で嵌った。

 とあるシステムで RS232 を使って接続している部分があった。装置 - RS232 - アダプタ - PC という構成。

 ここでアダプタを違うものに交換した。動かない。接続を間違ったか、Windows のドライバーの問題か?といろいろ調べていくと、新しいアダプタを使ったときに RS232 の部分に電圧がかかっていない。テスターの針が振れない。古いアダプタに戻すと電圧が出る。

 いろいろ悩んで装置側の RS232 に automatic power down の機能があることを思い出す。 新しいアダプタ単体で RS232 端子の電圧を計っても 0V。これは装置とアダプタ両方に automatic power down の機能があり、どちらも目を覚ませずにいるのではないかと考え、装置側の automatic power down を off に(PC側には off にする設定が無かった)。

 無事動作。

 装置側は MAX3221、アダプタは CH340+Windows11Pro24H2+DriverVersion3.9。

 

 

2025年3月4日火曜日

Delphi : 浮動小数点を整数に変換するには Trunc か Round

 まさかこんなところ15分もとられるとは。

 エラーが出て明示的に整数にキャストしてもだめで、あきらめて

StrToInt(FloatToStr(FloatValue);

とかやりそうになった。厳密なのはわかるけど、勘弁してくれ ><

Track は切り捨て

Round は丸め

 

2025年3月3日月曜日

Delphi + TCpmPortDriver : Demo アプリで Could not send data. No Device conneted .... ダイアログが表示されてデータ送出ができない

Delphi から TComPortDriver の Demo を操作していて、OUTGOING TEXT からシリアルポートに送出しようとしたら、以下のダイアログが出てきた。受信はできていたので、設定自体は間違っていないはずなのだが...、と調べて分かったこと。

TCpmPortDriver の CheckLinkStatus プロパティをオブジェクト インスペクタから False にすることで回避できる。


 

ちなみに Demo アプリの Settings Dialog を開いて Device Control タブの Device check を No に設定しても同じ。 

 

 

 

 

2023年9月6日水曜日

Ruby で Windows のコマンドラインツールを作ってみた

 Windows で、あるディレクトリの下にあるディレクトリを圧縮してそのディレクトリに置き、圧縮したディレクトリを削除するという作業を大量に行っていた。

 大量に行うのが面倒くさいのでバッチファイルを作ろうと思ったが、今更 Windows のバッチファイルも無かろう。得意な言語は C/C++ なのだがコンパイル環境を構築するのが面倒くさい。次に得意なのは PHP だが、あまり好きな言語ではないし新たに環境構築が必要。その次に慣れた言語は python だが、それでは面白くない。ということで、数ヶ月前に転職目指して環境を入れて勉強した Ruby にした。

 プログラム自体はごく単純なものなのだが、いろいろハマった。

 最初、Windows System 内のファイル圧縮を使う方法が分からないので普段使っている Lhaz を使って圧縮することにした。幸い、コマンドラインから使えたので system() から呼び出したのだが、まず、'\' のエスケープシーケンスの入れ方で悩む。まぁ、ここは何をつかってもいつも悩むのだが。

 ここをクリアして動くようになってから試していると、アーカイブファイルのファイル名がすこしおかしい。圧縮するディレクトリ名をアーカイブのファイル名にしたのだが "xxx.Vol.09" のような名前にすると、最後の "." 以降の数字がファイル名に反映されない。GUI からだと問題はない。Lhaz のバグだと思うのだが、使う側からは対応しようが無い。

 あきらめて別なツールを使おうと探していたら、Windows System の圧縮機能の使い方が分かった。power shell から Compress-Archive を呼び出すということがわかった。power shell から Ruby を起動して system() をつかったら、power shell のコマンドを呼び出せるのかと思ったらそうはいかず、sysytem("powershell <power shell cmd>")で呼び出す形式だった。

 これで動くと思ったら、sysytem("powershell <power shell cmd>")の<power shell cmd>の中の '"'(ダブルクォーテーション)が消える。具体的には、ディレクトリ名に空白が入っているので、フルパス全体を '"' で囲んだのに、エラーメッセージを見ると '"' が消えていて、ディレクトリ名の空白がパラメータの区切りとみなされエラーとなっていた。system("")で Lhaz を呼び出した時は '"' は消えなかったのだが...。この問題は '"' を "'"(シングルクオーテーションに変えることで解決。

 まぁ、ファイル名を扱ったり、OS のコマンドを呼び出すプログラムは一筋縄では動きませんわ。

2023年7月3日月曜日

AWS Cloud9 環境構築

 Ruby on Rails の勉強をしようとして、ネットの情報を見ていたら、開発環境が AWS Cloud9 だった。そのサイトの通りに作業していくと、default でいけるはずの VPC がなく作業が止まる。とりあえず default で VPC を作っても上手くいかない。

 こちらのサイトで勉強してから再挑戦。VPC を作った後にサブネットとルートテーブルを作成。CIDR をきちんと設定しても上手くいかない。エラーメッセージの

"Cloud9 could not connect to the EC2 instance. Please check your VPC configuration and network settings to troubleshoot the issue"

を google さまに検索してもらうと、「パブリック IPv4 アドレスを自動割り当てがいいえ」になっているとだめ、との情報が。ここで Cloud9 IDEを開こうとすると、いままで「接続待ち」だった表示が「立ち上がり待ち」に変わったのだが結局失敗。

 改めて見直すと、ルートテーブルにインターネットゲートウェイがない。どこかで必要なルートは自動的に追加されるとあったのだが、手動で追加する必要があるのか?手動で追加しようとするとインターネットゲートウェイが見つからないと出てくる。ふと、VPC設定ページの左メニューを見ていると「インターネットゲートウェイ」の文字が。新しくインターネットゲートウェイを作り、 VPC に紐づけてルートテーブルに 0.0.0.0/0 -> igw-xxxx のルートを追加。その上で再度 Cloud9 を作成すると、今度はあっさり成功。

 結局

  • VPC、サブネット、ルートテーブル、インターネットゲートウェイを作成してそれぞれを紐づけ
  • VPC の IPv4 CIDR は10.0.0.0/16
  • サブネットの IPv4 CIDR は10.0.0.0/24
  • サブネットのパブリック IPv4 アドレスを自動割り当てを「はい」に
  • ルートテーブルに 0.0.0.0/0 -> igw-xxxx を追加
  • Cloud9 作成時に、上で作った VPC とサブネットを指定

で成功したようだ。

 AWS を最後に触ったのは5-6年前だと思うけど、その時は VPC なんて触らなくても良かった気がするなぁ...。

 SNS で、AWS の資格の話題がよく出る理由が分かった気がする ><

追記

 無料枠を使うために(^ ^;あたらしいアカウントを作ったら、最初から VPC があって、Rails のネット情報通りに操作したら、何のトラブルもなく Cloud9 が「正常に作成されました」。
 新しいことを始めるなら、新しいアカウントを作るところから始めなきゃだめね。

2023年6月12日月曜日

私家版 Ruby クイックリファレンス(随時更新)

 思うところあって Ruby を勉強しているのだが、引っかかりそうなところのメモ。検索でき無さそうなのを多めに。

pxxは、はじめてのRubyで説明されているページ

!

 配列に対するメソッドの後ろについていた場合、配列の内容を変更する。
無い場合は、新しいオブジェクトを返す
破壊的メソッド

語の先頭 = 文字列のパーセント記法(p62)
文字列の直後 = 
%w[ x y z ] = 配列の定義 -> [ "x", "y", "z" ]

&:...

ブロック内でブロック変数の代わりとなり、メソッド...を呼び出す

#{foo}

 シングルクォート、ダブルクオートの中で、foo を文字列に展開する
式展開 

..

範囲オブジェクト(両切り)
 

...

範囲オブジェクト(片切、大きい方は含まれない) 

:str

シンボル

str:

シンボルを使ってハッシュ定義するときに有効

<<

配列への要素の追加(push)と同等

?

メソッド名の最後 = 真偽値を返すメソッド。メソッドの戻り値が true or false。述語メソッド、あるいは述語とも呼ぶ(p34)
文字の直前 = 文字リテラル、1文字だけを含む文字列を生成する(p65)
 

{......}

ブロックの指定。do ...... end と同等

{  "key"=>"data", ... }

ハッシュの定義

|foo|

foo をブロック変数として渡す

 

nil と false 以外は true 

0 も true !!!


2017年10月5日木曜日

2017 XREA の大幅リニューアルで調子の悪くなった MT4 のブログを治した話

 10年ほど前、安さで選んだ XREA に Movable Type をインストールしてブログを始めた。その後、メインのブログは Google Blogger に移行したのだが、まだいくつかのブログは XREA + MT4 で細々と運用している。
 
 その XREA + MT4 のブログ、いつからかタグクラウドで検索するとエラーが表示されるようになった。一度課金をやめて使える HDD の容量が大幅に減ったことがあり、そのせいで MT のソースが一部消えたせいかと思っていた。

2017年8月11日金曜日

XREA 上に Django 環境を構築

 7年ぶりに XREA 上に Django 環境を構築したので、基本的な内容のメモ。ここまでたどり着くので4日ほどかかった T T。

 ただし使ったのは cgi。軽いページの応答に、短い場合で 500ms 、長い場合でも1秒弱なので使えないことはないのだけれど、時間ができたら fastCGI に挑戦したい。

2016年11月7日月曜日

[cordova][Android]ビルドがエラーになったら

> cordova run android

を実行してエラーが出たら

>  cd platforms/android/

を実行して

> ./gradlew --info build clean
(mac の場合)

で詳細なメッセージが出る

2015年12月14日月曜日

Nexus5 で、bluetooth LE の advertising を送出させる方法

経過:
 思うところあって、いわゆる「Beacon」を使いたくなった。調べていくと、bluetooth LE の advertising という機能を使っているらしい。iOS は 7 以降で使え、Android は 4.3 以降で受信、5.0 以降で送信に対応とあった。
 手元に Android 6.0 までアップデートした Nexus5 があったので、いろいろと試したのだが、どうもうまくいかない。
 
 さらに調べていくと、Android L の途中までは動いていたようなのだが、2014/10 の中頃のバージョンから動かなくなってしまったらしい。
 https://code.google.com/p/android-developer-preview/issues/detail?id=1570
 
 で、google の中の人から「Nexus 4/5/7 は、チップセットの問題でサポートしないよ」との書き込みもあった。Nexus って Android の公式マシンなのに ><
 https://code.google.com/p/android-developer-preview/issues/detail?id=1570#c52
 
 ログを最後の方まで調べていくと、Nexus 5 + Android 5.1.1 で動かすためのパッチを発見!!
 https://code.google.com/p/android-developer-preview/issues/detail?id=1570#c104
 
 ということで、ダメ元で試してみたら、advertising の送出に成功した。

 以下に、備忘録を兼ねて、メモを公開。

2015年10月10日土曜日

[memo][Vagrant][Ubuntu][AndroidStudio]Vagrant のゲスト OS では vmx/svm は有効にならない

 Windows10 に Vagrant を入れ、その上で Linux+AndroidStudio の Android 開発環境を立ち上げようとあれこれやってきた。

 で、AndroidStudio が立ち上がるところまで来たのだが、エミュレータが起動しない。調べてみると、KVM が動いている必要があるようなのだが、残念ながら VirtualBox 上で Linux をゲストとして走らせた場合はサポートしていない模様 (T T)。
 VMware だとできるっぽいのだが、お金を払ってまでやりたいかといえば微妙...

 デバッグが実機 Only でも使えないことはないと思うが、仮想マシンの USB 経由だとまた一苦労ありそう。

 ということで、いったん中止。VirtualBox の Update 状況を監視することとしよう。

[memo][Vagrant][Ubuntu][AndroidStudio]AndroidStudio のインストール

 Windows10 上に Vagrant を使って Ubuntu 14.04 + GDE を構築できたので、AndroidStudio をインストール。

こちらのページを参考に、
・Java をインストール
・lib32stdc++6 をインストール
・AndroidStudio をインストール

----
仮想環境の上に Android の開発環境を構築する、という目標がようやく完了 ><

2015年10月9日金曜日

[memo][Vagrant][Ubuntu]Windows10 + Vagrant + Ubuntu で gui を動かす

 Windows10 + Vagrant + Ubuntu までは動いたので、gui を動かすことに。

 こちらのページを参考に、12.04 で試したのだが、どうもリポジトリとして指定されたサイトがなくなっているようでエラーの連発。だいぶ追ったのだが解決できなかった。

 あきらめてバージョンを 14.04 に変更したら、あっさりとうまくいった。

 ここまでで box を作った。

2015年9月29日火曜日

[memo][Vagrant]Windows10 で Ubuntu 12.04 の box を動かす

[現象]
Windows10 + Vagrant + VirtualBox で、ゲストOS Ubuntu 12.04 を立ち上げようとしたら動かなかった

[対策]
Vagrant を 1.7.2 から 1.7.4 へ
VirtualBox を 4.2.16 から 5.0.4 へ

[詳細]
AndroidStudio 専用の仮想環境を作るため、こちらの記事を参考に GUI 付きの Linux 環境を作ろうと、記事にある vagrantfile を使い config.vm.box_url に Official Ubuntu 12.04 daily Cloud Image i386 (VirtualBox 4.1.12) を指定して 'vagrant go' を実行したところ、以下のエラーとなった。

>Progress state: E_FAIL
>VBoxManage.exe: error: Failed to create the host-only adapter
>VBoxManage.exe: error: Code E_FAIL (0x80004005) - Unspecified error (extended info not available)
>VBoxManage.exe: error: Context: "int __cdecl handleCreate(struct HandlerArg *,int,int *)" at line 66 of file VBoxManageHostonly.cpp

いろいろと試した末、Vagrant,VirtualBox を両方とも最新のものにしたところ、仮想マシンが立ち上がり、ターミナルソフトから接続できることを確認した。

2015年9月28日月曜日

タイトル変更

Web programing side から、Software development side へ。

オンラインゲームのサーバーサイドという仕事を辞めたのと、環境設定などは、ジャンルに関係なく有用そうなので。