2019年11月09日

スリープ不具合調査 その2

対策しても、時々再発してしまうことがあったため、再度試行錯誤してみました。


普段はメインPCは電源を切らず、使わないときはスリープや休止で運用しています。使用しているPCのマザーボードはIntel i5-8400+ ASROCK製 H310M-ITX/acを使用しています。

High Definition Audio Controllerが原因と分かっていますが、以前、紹介した方法の「powercfg」コマンドでは完治しませんでした。


今回はドライバ側から原因を追ってみまいした。RealtechのオーディオドライバーをインストールするとRealtech Audio Cosoleを利用することができます。

「デバイス詳細設定」の項目から「フロントパネル」を「ヘッドフォン」に設定した上で、コネクタ設定「フロントパネルのジャックポップアップダイアログを無効にする」が「オフ」になっていたため、「オン」にして無効化しました。合わせて、「デバイスを差し込むとき、ジャック検出を有効にする」が「オン」になっていたため、「オフ」に設定しました。


realtech-audio.jpg

ジャック検出の無効化で様子を見てみるとスリープ状態に入らず、勝手に復帰する不具合はなくなりました。原因はジャック検出だったようです。一旦、様子をみてみたいと思います。

posted by Crescent at 00:00| Comment(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする

2019年09月07日

BMPフォーマット

組み込み機器向けのBMP(ビットマップ)の画像データを作成する際に便利なツールを紹介します。

WindowsのBMPの場合、24bitカラーが標準的です。24bitカラーでは組み込み機器の場合、データが少し重すぎます。そのため、組み込み機器16bitカラーBMPを使用することがあります。さらに低い8bitカラーでは色の表現力に欠けます。

MS Paintでは16bitBMPの保存ができないため、16bitカラーBMPを生成するために便利なツールを紹介します。


■Webサイト上で簡単に変換できるツール
組み込み向けのGUIライブラリを提供しているlittlevglの画像変換オンラインツールです。

16bitBMPの他に8bitBMPやC言語用の配列データ変換なども利用できます。
試しにデータ変換する場合にお勧めです。

littegl.jpg

■OSSの変換ツール
OSSの変換ツールではGIMPが便利です。16bit変換BMPに対応しています。変換したい画像を開いてから「名前をつけてエクスポート」で16bitBMPに変換できます。

なお、8bitBMPで保存したい場合は「画像」→「モード」→「インデックス」からカラーマップを8に変更してビットマップで保存すると変換できるようです。

gimp3.jpg


gimp2.jpg

「WindowsBMP」を選択して「エクスポート」をクリックします。


gimp.jpg

詳細選択画面が表示されるため、16bitBMPを選択します。今回はRGB565を選択しました。今度は変換した16bitBMPを「Digital Video Shield」を使って表示させてみたいと思います。
posted by Crescent at 00:00| Comment(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする

2019年07月27日

スリープ不具合調査

メインで使用しているPCが時々スリープから勝手に復帰してしまうことがあったため、調査してみました。

普段はメインPCは電源を切らず、使わないときはスリープや休止で運用しています。時々、スリープしたにも関わらず勝手に数秒後に復帰してスリープ状態に入らないことがある状況でした。使用しているPCのマザーボードはIntel i5-8400+ ASROCK製 H310M-ITX/acを使用しています。

スリープ状態に入らず、勝手に復帰する原因として多くは下記の原因が挙げられます。
・マウス、キーボードがスリープ解除可能デバイスになっている
・Windows Update、タスクスケジューラによる自動起動
・スリープ解除タイマーの許可が有効化されている

デバイスマネージャで各デバイスを確認するとスリープ解除可能デバイスのチェックは外れており、タスクスケジューラ等もイベント登録もない状況でした。また、電源オプションのスリープ解除タイマーは無効化されていました。

今回の原因はよくある原因ではなさそうなので少し調べてみました。


いつも通りスリープさせて、勝手にスリープから復帰する不具合を確認後、イベントビューアーのシステムを確認してみました。スリープ関連のイベントはPower-Troubleshooterとして登録されており、最新のイベントを確認すると原因が判明しました。

img2.jpg

High Definition Audio Controllerが原因と分かりました。

powercfg -requestsoverride DRIVER "デバイスドライバ名" SYSTEMのコマンドを使用して、指定のデバイスについてデバイス側でなく、電源管理の設定を優先にしました。

img1.jpg


上記のコマンド実行後にスリープ状態に安定して入るようになりました。Windowsのアップデートでデバイスドライバとの相性が出たようです。スリープに関係のないと思われがちなオーディオが原因でした。今度のアップデートでの改善に期待です。


posted by Crescent at 00:00| Comment(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする

2019年06月01日

Kibana日本語対応まもなく!

今回はElastic社が開発している可視化ツールKibanaの多言語対応化について紹介します。

Kibanaの言語は標準では英語のみ対応でした。
19年に入ってからElastic社から多言語対応の発表があり、日本語は7.1から対応と発表されました。
すでに19年5月下旬時点では7.1.1がリリースされていますが、日本語対応していません。

Githubのコミット状況をみると、19年5月下旬に日本語対応関連のコミットがあり、7.1.2か、7.2当たりで正式に日本語対応されそうです。


ちなみに日本語化する場合は
kibana.yml
の最終行にi18nの設定項目があり、コメントアウトを解除して設定します。

デフォルトは
i18n.locale: "en"
となっています。

中国語にする場合は
i18n.locale: "zh-CN"

日本語にする場合は
i18n.locale: "ja-JP"

設定変更後はkibana.ymlを反映させるためにkibanaの再起動が必要です。

19年6月上旬時点では中国語と英語のみの対応となっていますが、もうあと数週間以内には日本語対応されそうです。
日本語対応版のkibanaが待ち遠しいです。
posted by Crescent at 00:00| Comment(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする

2019年04月13日

Node-Red Dashboardテンプレート

今回はNode-Red Dashboardテンプレートの使用方法について紹介します。


Node-Red Dashboardテンプレートを使用すると標準で用意されているUIよりもリッチで多彩なUIを実現することができます。
テンプレートはAngularJSベースで実装されているため、Angularのスクリプトやhtml記述を利用することができます。
Node-Red上でmsg.payloadの値を受けて表示を変えたり、ボタンを押してmsg.payloadへ値を渡すこともできます。



■要素紹介
・ボタン

ui5-4.jpg

<md-button ng-click="send({payload: {index_name:model_name}})" layout-align="start center" >
登録
</md-button>

model_nameには送りたい情報のモデルを入れて使用する

・トグルボタン
ui5-5.jpg
<md-switch ng-model="model_enable" ng-change="send({payload: {enable:model_enable}})" layout-align="start center" >
トグルボタン1
</md-switch >

ng-changeを指定することでボタン操作でmsg.payloadに情報が渡される

・数字入力

ui5-2.jpg

<input type="number" ng-model="model_id" />


・テキスト入力

ui5-3.jpg

<input type="text" ng-model="model_name" />

・日付選択

ui5-1.jpg

<input type="date" ng-model="mydate" ng-change="send({payload: mydate})">


■msg.payload受け取り方


ui1-2.jpg


・手前のfunctionノード
var nowDate=new Date();
msg.payload=nowDate.toLocaleString("ja-JP",{hour12:false});
return msg;

・テンプレートノード
<div>
更新日時:{{msg.payload}}
</div>

ui1-1.jpg

timestampボタンを押すと更新日時が表示されます。

■mas.payload送り方

ui2-3.jpg

・テンプレートノード
<body>
 <input type="number" ng-model="model_id" />
 <input type="text" ng-model="model_name" />
 <md-button ng-click="send({payload: {index_id:model_id, index_name: model_name}})" layout-align="start center" >
 登録
 </md-button>
</body>

ui2-1.jpg


ui2-2.jpg

登録ボタンの際に、数字入力と文字入力のモデルから情報を受け取ってpayloadに格納しています。


■応用編
・表に要素を並べる例

ui3-2.jpg


・手前のfunctionノード
var source_array = new Array();
source_array.push({ enable:true, id:1, name:"Name1"});
source_array.push({ enable:false, id:2, name:"Name2"});
msg.payload = source_array;
return msg;


・テンプレートノード
<table id="table" border="1" align="center">
 <tr>
  <th>無効/有効</th>
  <th>番号</th>
  <th>名</th>
  <th>テキスト</th>
  <td align="center" colspan="2">
   ボタン
  </td>
 </tr>
<tbody>
 <tr ng-repeat="row in msg.payload" align="center">
 <td align="center">
 <md-switch tr ng-model="row.enable" ng-change="send({payload: {row}})">
   </md-switch>
 </td>
 <td>{{row.id}}</td>
 <td>{{row.name}}</td>
 <td>
 <input tr type="text" ng-model="row.text1" />
 </td>
 <td>
 <md-button tr ng-click="send({payload:[{row},{update:1,delete:0}]})">更新
 </md-button>
 </td>
 <td>
 <md-button tr ng-click="send({payload:[{row},{update:0,delete:1}]})">削除
 </md-button>
 </td>
 </tr>
</tbody>
</table>



ui3-1.jpg

受け取った配列を表として表示することができます。
配列の数に応じて表の行が自動的に変化します。
例えば、データベースやセンサから受け取った情報を並べて表示するといったことができます。
また、表の中のボタンを押すことでボタンを押した行の情報をmsg.payloadとして次のノードに渡すことができます。

Node-Red Dashboardテンプレートを使用するとこのように動的なUIを実現することができます。
今回紹介したNode-Redのフローをこちらから利用できます。


posted by Crescent at 00:00| Comment(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする