<   2016年 09月 ( 30 )   > この月の画像一覧

Windowsの画面が一瞬真っ黒になる対策 (9/30)

ここ2日くらい画面が定期的に一瞬真っ暗にブラックアウトする現象が起きていた。最初メモリが不足してるのかと思っていたので、Chromeのタブを減らしたり、GPUのドライバを更新したりしたが変化はなかった。
仕方がないのでGoogle先生に聞いたところ、結構よくある現象らしい。でもこれという解決策が無いようで、場当たり的な対処や一般的なメモリ対策ぐらいしかされてない。

調べ方が余りわかってないようだったが、自分の所はブラックアウト後、エクスプローラが必ず落ちるので、それが手がかりになりそう。

そこでイベントビューア―に何か残ってないか調べた。
[スタートメニュー右クリック][イベントビューアー][Windows ログ][Application]で、エラーが無いか見ると、時間的にあるある。2つ並んでソース:.NET RuntimeとApplication Errorと続いている。
内容は障害を起こしているアプリケーションがまさにexplorer.exe エクスプローラで、ntdll.dllとかシステムのモジュールも落としている。
どうも解析は難しそうなので、AppCrashViewというアプリを使って一個上のソース:Windows Error Reportingの内容からファイルの場所である、
C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_explorer.exe_xxxxxxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxx_cab_xxxxxxxxxxにあるアーカイブの中のReport.werを食わせてみる。
しかしさっぱりわからない。

そういえば似たような症状で、Windows98時代よくアイコンキャッシュを再構築させた事を思い出した。
現在エクスプローラに拡張機能QTabBarというツールをインストールしているのだが、その中にアイコンキャッシュの再構築をする機能がある。
[タブのない所を右クリック][QTTabBarのオプション][その他][シェル][シェルのアイコンキャッシュを再構築]
これを実行して再起動したら1時間ぐらい安定している。
私の場合、効果があったらしい。Windows10 Home 64bit Anniversary Update済み マルチディスプレイ環境だが、同じような症状ならアイコンキャッシュを削除し再起動してみるのもいいかも。
[PR]
by k1segawa | 2016-09-30 00:56 | Comments(0)

日産の量産型可変圧縮比エンジンがすごい (9/30)

自動車エンジンで100年ぶりにすごい機構が出たらしい。
ガソリンとの混合気を圧縮すればするほどパワーが大きくなる。
その比率を圧縮比といい、高めるとノッキングというエンジンを壊す衝撃が起きやすくなる。
そのため、高回転時のみ圧縮比を抑え、低回転時は上げるのが可変、それを実験室レベルではなく量産体制まで持って行けたのが今回のすごいところだ。
日産の可変圧縮比エンジンは100年に1度の大発明!? そのすごさを理解する

やばい。かっこいい。
そんな技術が日本発なんて、一般車まで降りてくるまでにあと何年かかるかわからないけど、生きてるうちに実車が見れるといいな。


[PR]
by k1segawa | 2016-09-30 00:28 | Comments(0)

Go言語のGetting Start(スタートページ)がわかりにくい (9/29)

C++が採用したオブジェクト形式の元となったSimula言語。Simulaはオブジェクト自体は無いが現在のオブジェクト指向のアイディアをすでにインプリメントしていた(Wikipadia参照)。同じようにGoogleのGo言語もオブジェクト自体は無いがオブジェクト指向言語らしい。
下記サイトからGoの記述を見ると、オブジェクトの型と振る舞い(メソッド)など、確かにSimulaと同じ感じ。
Go (プログラミング言語) - Wikipedia

この辺を当たってみたが、なるほどオブジェクトがぱっと見に出てこない。
Goはオブジェクト指向言語だろうか?

Simulaをエミュレータか何かでちょっと動かしたかったので、代わりにGoを動かしてみた。

からダウンロード。

でも、Getting Startedページの説明が英語を抜きにしても分かり難い気がする。

Windows版をインストールするとデフォルトでC:\Go\binが環境変数PATHに追加される。

結局以下のように設定すればよい。

システム環境変数:
PATH=%PATH%;C:\Go\bin
GOROOT=C:\Go\
GOPATH=C:\work※(手動)

ディレクトリ構造:
[C:\]
--+work
----+src
------+github.com
--------+user
----------+hello
------------ hello.go (ソース)

ビルド:
C:\work\srcディレクトリで、go install github.com/user/hello

実行:
C:\workディレクトリで、bin\hello

ソースの置き場所と実行ディレクトリが分からず、instructions above のリンク先見て理解した。


[PR]
by k1segawa | 2016-09-29 19:07 | Comments(0)

IME入力モード表示ソフト (Anniversary Update後の言語バー表示方法)(9/29)

日本語入力で、MS IME標準を使っているのだが、ひらがな「あ」/ 英数「A」の切り替えがタスクバーなので、視線が遠いのと、自動的に隠すにしたら、わからなくなってしまう。

ソフトを探すと、Vectorさんに次のようなソフトがあった。(作者様感謝)

XP時代のソフトだがWindows10 64bit Homeで動く。

●Windows10 Anniversary Update後に言語バーを表示するには以下のようにする。

[スタートメニュー][設定][時刻と言語][地域と言語][日付、時刻、地域の追加設定][言語の追加][詳細設定][入力方式の切り替え][使用可能な場合にデスクトップ言語バーを使用する ON]
a0034780_10523432.jpg
またはこちらの方法もある。[詳細設定]以降は同じ。
[スタートメニュー右クリック][コントロールパネル][言語の追加][詳細設定]
・・・コントロールパネルの「表示方法」がカテゴリーの場合
[スタートメニュー右クリック][コントロールパネル][言語][詳細設定]
・・・コントロールパネルの「表示方法」が大きい/小さいアイコンの場合

すると言語バーが以下のように表示される。
a0034780_10491942.png
必要ないものをチェックからはずしてやればOK。
作者様のソフトはreadme.txtを見ればわかると思うが、例えばMS Edgeなら、左の、実行後タスクバーに常駐しているアイコンa0034780_11114440.pngを左クリックする。
a0034780_10580970.jpg
のように出るので、MS EdgeのURLエリアをクリックすると、1行目に文字列"Windows.UI.Core.CoreWindow"と入る。マウスで範囲指定(左ドラッグ)して、ソフトと同じディレクトリのedit.txtの末尾に貼り付ける。スペースを置いてから#でコメントらしい。sakuraエディタとchromeでこんな風にした。

SakuraView166 #sakura editor
Chrome_WidgetWin_1 #chrome
Windows.UI.Core.CoreWindow #MS Edge

上書き保存後、念のためソフトを再起動し、URLエリアをクリックすると、ブラウザのウィンドウの左上にMS IMEの言語バーが移動して、今がひらがな/英数モードなのかがわかるようになった。エディタだともっと近くに表示されるので、なかなか良い。表示時間が短ければsettings.iniを修正すればよい。デフォルトは3秒だ。

(chromeのみ、URLが反転していると失敗する- 位置を見失う -ので、簡単なのはコルテナさんの検索エリアをクリックして戻ると治る。ソフトを終了し、言語バーを右下隅へ移動してから、再度起動する。その後反転でも表示される。プログラム終了後は言語バーのデフォルト位置は左上隅になるらしい。)



[PR]
by k1segawa | 2016-09-29 11:14 | Comments(0)

京都 癒し スライドショー (9/28)

京都の映像と音楽、デスクトップにショートカット。
音楽:【リラックス・癒し・熟睡・快眠用音楽】京都日和 目を閉じて楽しむ京の都

映像:京都スライドショー
サイト:The Slideshow(google 画像 スライドショー)
[PR]
by k1segawa | 2016-09-28 12:16 | Comments(0)

Japanino ArduinoISPで ATtiny13 で RS-232C (22) (9/23)

ATtiny13でシリアル出力を行う。デバッグ時にPrint文を使ってPCのRS-232Cへ出力するためだが、ATtiny13にはUARTの機能も、UART→USBシリアル変換の機能もない。しかし、ピン1本とソフトUART、Japanino(arduino)のみでシリアル出力が実現できる。

ソース:
'****************************************
' Copyright (c) 2016 k1segawa
' License : free
' Program : Serial Control
'****************************************

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 24
$swstack = 4
$framesize = 8

Config Portb.4 = Output
Dim I As Integer
I = 0
Open "COMB.4:9600,8,N,1" For Output As #1 'soft serial PB4:Out
Do
Wait 1
Print #1 , "I=" ; I
Incr I
Loop

End
Close #1
' History
' [2016/09/23]
' PB4 Serial Output
ここではPB4をシリアル出力にし、通信速度を9600,8,N,1にする。ソフトUARTの場合、Open ”COMB.4”の部分でPortB.4を示す。As #1のチャネル番号1はPrint文の後やClose文で使用する。
コンパイルしてATtiny13へ書き込んだら、BASCOM-AVRの[メニュー][Tools][Terminal emulator]で青い画面のターミナルを表示させる。
その画面の[メニュー][Terminal][Settings]で次のように設定する。
a0034780_18505642.jpg

回路:
Japanino(arduino)は現在[ArduinoISP]のスケッチでライタになっているが、次のサイト様のように、単なるUSBシリアル変換器として使えるようにする。
Arduinoを単体USBシリアル変換器に使用する - 日曜エレクトロニクス(日エレ)

まず、学研のサイトからダウンロードした Japanino IDE 0.18を起動する。
[メニュー][ツール][マイコンボード]がGakken Japnino (学研 大人の科学 ジャパニーノ)を確認。
[メニュー][ツール][シリアルポート]がCOMx(xは各自のCOMポート番号)を確認。
[メニュー][ファイル][スケッチ例][ArduinoISP]を一応選択し開いておく(ライタに戻すため)。
[メニュー][ファイル][新規作成]でスケッチを新たに作成する。

スケッチ:
void setup()
{
pinMode(0,INPUT);
pinMode(1,INPUT);
}

void loop()
{
}
スケッチをコンパイル(▽の横向きのアイコン)・書込み(⇒|のアイコン)し、Japanino(arduino)をUSBシリアル変換器にする。
そしてATtiny13のPB4ピンとJapanino(arduino)のTXをつなぐだけ(コネクタの末尾から2番目がTX)。
するとBASCOM-AVRのターミナル画面に次のように文字が出力される。
a0034780_18515870.jpg

ATtiny13のプログラムを修正する場合は、開いておいた[ArduinoISP]スケッチを書き込み、またライタに戻す。これを繰り返す。496バイト。割込みによるバッファを使わないので、データ欠けが起こる可能性はあるが負荷が少なくサイズも小さい。
注:
ただし、ArduinoIDEとBASCOM-AVRとTerminal emulatorの間でCOMを1個で共用してしまうので、うまく書き込みできない時がある(ArduinoIDEのログ画面やBASCOM-AVRがエラー)。その時はBASCOM-AVRとArduinoIDEをともに終了させてUSBケーブルを外し、再度差し込む時はライタとATtiny13の間のVCC、GND以外のケーブルとTXにつないだケーブルを外してから[ArduinoISP]スケッチを書き込む事(ATtiny13からの信号が入ってしまわないように)。そうやってライタに戻ったら改めてそのほかのケーブルをつなぎ、BASCOM-AVRを起動し、修正したプログラムを書込む。

[PR]
by k1segawa | 2016-09-23 19:01 | arduino, AVR | Comments(0)

systemdの問題(9/23)

ここの所話題になっているLinuxのinit問題。従来のinitでshスクリプトの肥大化を嫌ったせいで、一括で行う独自シェルを持つsystemdを採用する動き。
決して悪い事ではないのだが、もう反対する勢力がUnixの古参しかいないため、民主主義の原理に基づいて声の大きい意見が採用されつつある。
これはどんな勢力にも言える話で、C++が結局Cを越えられない(C標準に代わって全製品に使われるようになるかといえば、そうはならない訳で、内部にサブセットとしてのCが残ってしまう。バージョン違いで10年後にコンパイルできるなくなるような事にはできないはず。いつまでバージョンあげてるのか。C++2.0とかが失われた古代言語になってしまうよ。もうC+Classでいいよ。Bjarne Stroustrup Interview about C++)、EU離脱が後悔されている事。大きく舵を切った時それは必ず反省されるべきもので、別の勢力が残っている事が大事。
別に歴史をかえりみろとか、自分だけはわかっている素振りをするつもりもない。ひも理論が細々と量子論の片隅で研究され続けていたからこそ今の興隆がある。大多数の意見が少数意見をつぶしてはいけない。どんなに正しいと思われることでも多様性を残しておく、人間間違いは誰にでもある事なのだから。

私がsystemdを嫌う理由
[PR]
by k1segawa | 2016-09-23 17:03 | Comments(0)

Japanino ArduinoISPで ATtiny13 で AD入力 ライブラリ比較(21) (9/23)

以前Japanino ArduinoISPで ATtiny13 で AD入力 (7) (9/4)の記事で、小型I2C液晶 AQM0802A-RN-GBWへのAD入力表示を、I2Cを自分で制御してLCD表示したのだが、せっかくライブラリがあるのだからそれとのソース比較とHEXサイズ比較を行ってみた。
なお、ライブラリは前々回のJapanino ArduinoISPで ATtiny13 で I2C液晶 ライブラリ(19) (9/21)を参照の事。

ソース:
'****************************************
' Copyright (c) 2016 k1segawa
' License : free
' Program : ADC Control with LCD Lib
'****************************************

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 24
$swstack = 4
$framesize = 8
Config Scl = Portb. 1
Config Sda = Portb. 0
Config I2cdelay = 5
Config Clockdiv = 1

Const Vmode = 5
Config Lcd = 16 * 2
$lib "Lcd_AQMxx02.LBX"

Config Adc = Single , Prescaler = Auto
Dim A As String * 10 , I As Integer , W As Byte

I2cinit
Initlcd

W = 0
Cls
Start Adc
Do
Wait 1
I = Getadc(3)
A = Str(i)
A = A + " "
A = Left(a , 4)
Locate 1 , 1
Lcd "AD=" ; A
Loop

End
' History
' [2016/09/23]
' PB3 ADC3 Input
命令の実行順も同じにしてある。Init LCD処理がInitlcdで置き換えられている。サブルーチンもいらない。その代わり赤で示した部分がライブラリを使う上で追加になっている。Wは使用しなくなったが、一応残してある。また@マークが不要になったが、String * 10→9に修正していない。
ソース的には71→42行で大幅減であるが、HEXサイズ的には824→830バイトで若干増えている。だが見通しは良くなっているので(Wを削除し、9に変更してやると824バイトになり同サイズになる)ライブラリを積極的に使っていこう。元の記事はI2Cの使い方を学ぶ実験だったしね。
[PR]
by k1segawa | 2016-09-23 14:10 | arduino, AVR | Comments(0)

Japanino ArduinoISPで ATtiny13 で プログラムシミュレータ(20) (9/23)

BASCOM-AVRにはハードウェアを作らなくても実行できるシミュレータがある。
以下のサイト様にあるようにプログラムをちょっと作るだけでLEDやLCD、PCとRS-232Cで文字表示やキー入力を試すことができる。
BASCOM-AVR プログラムシミュレーター (その1)
LEDはこんな感じ。

ソース:
'$sim
$regfile = "attiny26.dat"
$crystal = 100000
Config Porta = Output
Do
Set Porta.0
Wait 1
Reset Porta.0
Wait 1
Loop
End
ただ、サイト様の情報が古いので現在のバージョン2.0.7.5またはDEMO版ではそのままでは動かないことがある。
このソースだと$regfileがat26def.dat→attiny26.datに、$crystalは1000000→100000に修正が必要だった。インストールディレクトリC:\Program Files (x86)\MCS Electronics\BASCOM-AVRの下にdatファイルがあるのでそれを参考に。$simを有効にするとウェイト時間が無視される。プログラム画面は左に水色の矢印が上下に移動する。
a0034780_11282396.gif
赤のLEDの末尾が1秒おきに点滅する。
a0034780_11283512.gif

LCDはこんな感じ。

ソース:
'$sim
$regfile = "attiny26.dat"
$crystal = 100000
Dim Number As Byte
Config Lcd = 16 * 2
Do
Cls
Lcd "COUNT "
Lcd Number
Wait 1
Number = Number + 1
Loop
End
アイコンの[Refresh variables]を押す場合がある。
a0034780_11400972.gif
RS232Cはこんな感じ。

ソース:
$regfile = "2313def.dat"
$crystal = 4000000
$baud = 9600
Dim N As String * 10
Print "Welcome to AVR World!"
Input "May I have your name? " , N
Print "Hello, " ; N
End
a0034780_11580984.jpg
一旦UART0の画面をクリックして名前をキー入力+Enterすると画面のようになる。
[PR]
by k1segawa | 2016-09-23 11:36 | arduino, AVR | Comments(0)

Japanino ArduinoISPで ATtiny13 で I2C液晶 ライブラリ(19) (9/21)

SPIやUARTなどまだやってない機能もあるが、一休みという事で、BASCOM-AVRの使用方法のサイト様のAQM0802AのI2C液晶のライブラリを使ってみる。これでデバッグでLCD出力を簡単に使える。
サイト様のLCDのページからライブラリをダウンロードする。真ん中より下の方に[Lcd_AQMxx02.LBX]というライブラリがあるので、マウス右クリックで名前を付けてリンク先を保存する。保存後、サイト様の通り、C:\Program Files (x86)\MCS Electronics\BASCOM-AVR\LIBへコピー。

ソース:
'****************************************
' Copyright (c) 2016 k1segawa
' License : free
' Program : LCD AQM0802A Lib
'****************************************

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 32
$swstack = 8
$framesize = 16

Config Scl = Portb.1
Config Sda = Portb.0
I2cinit
Const Vmode = 5
Config Lcd = 16 * 2
$lib "Lcd_AQMxx02.LBX"
Initlcd
Deflcdchar 0 , 32 , 2 , 20 , 14 , 5 , 8 , 32 , 32

Cls
Locate 1 , 1
Lcd "LCD Test"
Lowerline
Lcd "Hello" ; Chr(0)

Do
Loop

End
例とは違ってSCLがPORTB.1、SDAがPORTB.0になっている。またChipset = St7032 は認識しないので外す。DeflcdcharはCG RAMの定義で、[メニュー][Tools][LCD Designer]を開き、5x8のデザインを作成し、OKを押すとカーソル位置に定義文を追加してくれるので、先頭の[x]をChar番号0~5に置き換える。[x]→0。
以前の配線でLCDが表示された。508バイト。ライブラリの方が自分で直接書くよりも容量削減になる。
a0034780_22301490.jpg
Deflcdcharで検索すると色々出てきて楽しい。
Bascom and AVR, Using an LCD.
こちらのサイト様で、簡単なプログラムでキャラクタを動かしていて親しみやすい。

jman.bas:
$regfile = "2313def.dat"
$crystal = 4000000
$sim
Config Portd = Output
Dim Jman As Byte

Cursor Off

Deflcdchar 0 , 21 , 14 , 4 , 4 , 4 , 27 , 32 , 32
Deflcdchar 1 , 4 , 14 , 21 , 4 , 4 , 10 , 10 , 10
Cls

Do
For Jman = 0 To 1 Step 1
Portd = 255
Waitms 100
Portd = 0
Waitms 100
Locate 1 , 16
Lcd Chr(jman)
Next Star
Loop

End
a0034780_22531048.gif
[PR]
by k1segawa | 2016-09-21 22:33 | arduino, AVR | Comments(0)