#author("2022-05-25T00:57:12+00:00","kitagawa","kitagawa")
#author("2022-05-29T04:59:54+00:00","kitagawa","kitagawa")
[[&ref(home.gif);:http://jaco.ec.t.kanazawa-u.ac.jp/kitagawa/]]
~
Visitor No. &counter(total);

主にCADツールやサーバ管理など、知財や共同研究に関係しない事項についてはこちらに書いておきます。気が向いたら分類していますが、分類方針があやふやなので、結局、検索しないとだめかも。

----
*目次 [#na462dc2]
#contents();

//*メニュー
//個人ページの下にページを作ることもできます。
//自分のページを追加したい場合は、[[名前/新しいページ名]]または[[./新しいページ名]]という風にしましょう。

*コメント欄 [#d660e429]
//ラジオボックスがうざいっていう人は、replyを消してみて下さい。
#pcomment(reply);

*LSI設計CAD関連 [#g942e08c]

***Cadence Virtuoso [#f0d0b78c]
-ver.6.1.5を使う場合、ver.6.1.4で作成したライブラリを読み込むことができるが、レイアウトにDRCエラーが出ることがある。一旦、ver.6.1.4のライブラリからストリームアウトし(ver.6.1.5でよい)、ver.6.1.5で新規に作成したライブラリへストリームインすることにより、DRCエラーが出なくなる。

***Mentor Calibre [#g9647c58]
-テクノロジファイルに、GDSレイヤー情報がない場合、レイアウト検証が正常に行えない。レイアウトをエクスポートするためのGDSレイヤーマップを設定する必要がある。
--Cadence VertuosoからCalibreを起動する場合は、Virtuosoのメニューより、Calibre - Setup - Layout Export... を選択
--Layer Map File欄に、レイヤーマップファイルを入力して、OKをクリック

***Synopsys HSPICE [#k50ac66e]
-Cadence ADE環境からHSPICEを呼び出した場合、ビュワーが自動起動しない。ADE-XLでシミュレーション結果リストを選択して、グラフ表示ボタンをクリックして表示されることができる。

***ModelSim [#e2e0a5cf]
-無料配布されていた ModelSim - Intel® FPGA Edition から Questa* - Intel® FPGA Starter Edition にリプレースされた。無料だが、Intelのアカウントでライセンスを取得する必要がある。
-MACNICAのサイトにライセンス取得方法の解説がある。https://www.macnica.co.jp/business/semiconductor/articles/intel/139706/

*MATLAB関係 [#r32187b2]
***ライセンスデーモンが起動できない件 [#e9dd31e7]
-Ubuntu 16.04 にMATLABをインストールすると、ライセンスデーモンが起動できない場合がある。インストールディレクトリ/etc/lmhostidなども実行できない場合は、LSBをインストールする
-- sudo apt-get install lsb
***ライセンスデーモン起動スクリプト(systemd) [#o7995e25]
- インストールディレクトリ/etc/flexnet.boot.linux をファイル内のコメントを参考に修正
- /lib/systemd/system/にUNITファイルを作成

 [Unit]
 Description=MathWorks lisence server
 [Service]
 ExecStart=/usr/local/MATLAB/R2017b/etc/flexnet.boot.linux start
 Restart=always
 [Install]
 WantedBy = multi-user.target

- /etc/systemd/system/ と /etc/systemd/system/ に適当なサービス名.service でリンクを作成
-- (本来は、systemctl enable サービス名を実行すればよいらしいが、なぜかエラーになる)
- systemctl start サービス名 (.serviceは不要)を実行
- systemctl status サービス名で動作を確認
- 再起動
***ライセンスデーモン起動スクリプト(SysVinit) [#s26eea37]
- インストールディレクトリ/etc/flexnet.boot.linux をファイル内のコメントを参考に修正
- /etc/init.d/ にflexnet.boot.linux のシンボリックリンクを作成
- /etc/rc2.d/ に /etc/init.d/flexnet.boot.linux へのシンボリックリンクを作成。リンク名は、S05flexnet あたり
- 再起動

*DAW関連 [#z126af56]

***Abilityのトーンマップ作成 [#fcff1e6e]
プレイバックサンプラーのドラム/パーカッションをDAWの打ち込みで使用するときには、ピアノロールにインストを表示するためのトーンマップがあると便利。音源側のトーンマップをGM音源等に変更してもよいが、使えるトーンが限定される。ドラム/パーカッション以外の音源は、キースイッチの割り当て表を見ながらの演奏ても問題ない。
-Abilityのトーンマップは、C:\Users\<ユーザ名>\AppData\Roaming\INTERNET Co.,Ltd\ABILITY3Pro_64\TONE に保存される
-テキストファイルなので、マップの追加は、このファイルを編集した方が簡単

-Abilityのトーンマップは、下記の手順で作成できる。
--メニュー:ツール - トーンマップ
--Module = 新規音源(音源を作成済みの場合は、使用する音源名を選択)
--Tone = ドラムセット
--保存するドラムセット番号欄に、ドラムセットの名称を入力
--登録ボタンをクリック。Module名(音源名)、マップ名(ドラムセット名称)、&color(red){「ドラムセットで登録」};のチェックボックスを入力し、保存ボタンをクリック
--作成するドラムセット名を選択して水色背景にしてから、ドラムマップボタンをクリックすると、空のキーマップが表示される
--マップ編集ボタンをクリックして、各ノートにトーン名を割り当てる
--登録ボタンをクリック - 音源名、ドラムセット番号を確認して保存ボタンをクリック
--次回からは、以下の手順でトーンマップを呼び出せる
---メニュー:ツール - トーンマップ
---Module, Tone, Bank を指定して、入力ボタンをクリック

***Abilityのテンプレートの保存場所 [#p5befd35]
起動時にトラックの初期設定を行うためのテンプレートを保存することができる。作成したテンプレートの保存場所は、C:\Users\<ユーザ名>\AppData\Roaming\INTERNET Co.,Ltd\ABILITY3Pro\Template

***KONTAKTに読み込んだ音源のMIDI設定欄が表示されない場合 [#qe028073]
音源によって、Outputs, MIDI Ch. の設定画面がトップに表示されるものと、表示されないものがある。表示されない場合は、○iマークをクリック。

***KONTAKTのキースイッチの色が消えた場合 [#wb5c3671]
いろいろ設定を変えていると、キースイッチの色が表示されなくなることがある。下記の設定を確認する。
--Options(歯車アイコン)- Interface - show mapping and keyswitches on keyboard のチェックを入れる

***KONTAKTからAbilityへのパラアウト [#sf421833]
KONTAKTの通常操作でパラアウトを作成し、複数の音源をAbilityに出力することができる。ただし、AbilityのVSTiストリップがステレオ1チャネル分しか作成されないため、個別にフェーダーが効かない。原因不明のため、当面はKONTAKTを複数立ち上げて使用。メモリの消費量は、音源を1個立ち上げると12GB程度、2個目以降は500MB程度の増加。(極端に多数立ち上げないかぎり、あまり問題にはならない)

--標準操作のメモ
---KONTAKTでOutputs画面(上部の3分割ウインドウのアイコン)を表示し、Presets/Batch Configurationボタン - Batch Functions - Clear output section and create one individual channel for each loaded instrument を選択
---読み込んでおいた各音源に対応するOytputポートが作成される
---outputs画面上で、各outputポートのスライダーの下に表示されている出力先(+0.0の下)をクリックして、出力先を設定
---(Presets/Batch Configurationボタン) - Save current output section state as default for - All formats を選択
---Abilityから起動したKONTAKTを全て終了し、KONTAKTを再読み込み
---KONTACTのOutputとMIDI Ch.を設定する(KONTAKTに読み込んだ音源のMIDI設定欄が表示されない場合の項目を参照)
---AbilityのMIDI Ch.をKONTAKTと合わせる

***KONTAKTのダブルトラック音源の使用方法 [#rd0ed68d]
Celemony Melodyneを使ってダブルトラックの作成が可能だが、一旦、音声データにする必要がある。Prominy V-Metalなどのダブルトラック音源を使えば、MIDIデータをそのままダブるトラックにすることができる。KONTAKTでダブルトラック音源を使用する場合は、下記の設定を行う。
--ダブルトラック音源を読み込むと、KONTAKTのOutputs画面(右上歯車の隣のアイコン)に、2チャネンル分のチャネルネーム(例:st.1, st.2)が表示される
--各出力ストリップの下部(+0.0の数字の下)に表示されている、物理アウトプット(1|2など)をクリック
--Physical Output欄をクリックしてst.1を両方とも、左チャネルに割り当て、st.2を両方とも右チャネルに割り当てる
---各トラックに別のエフェクトを適用するためには、ミキサのPINコネクトを使用。ミキサにPINコネクト機能がない場合は、エフェクタ側で入力を選択。
---両トラックに同じエフェクトを適用する場合は、エフェクトの入力設定でステレオを選ぶ。通常は、入力をステレオに設定すると、ステレオ処理モード(入力~出力までステレオ処理)が起動される。

***KONTAKTの音が数秒で出なくなる問題 [#s2c4e2bf]
Audioインターフェースのサンプリングレートを96kHz以下に下げる。192kHzに対応していないライブラリがある(例:KONTAKTライブラリのCubaなど)。KONTAKT自体は、192kHzに対応しているが、ライブラリによっては対応しない。ややこしいことに、最初の数秒だけ再生されるという、おかしな現象が観測される。

***KORG microKEY のMIDIチャネル設定 [#d1396bff]
KORG microKEYは、本体でMIDIチャネルが設定できないので、PCの専用ソフトから設定を書き込む。
--参考:microKEYはキーのタッチは悪くないので、練習すれば何とかなるかもと思ったが、和音や速いパッセージを引くのは、やはり難しい。リアルタイム入力する人は、場所を取るが、フルサイズキーのほうが安全
+microKEYをUSB接続した状態で、[[KORG KONTROL Editor:http://www.korg.com/jp/support/download/product/0/159/]]を起動し、MIDIチャネルを設定する
#ref(korg_editor03.png,,70%)
+KORG KONTROL Editorのメニューより、[転送] - [シーン・データを書き込み]で、本体に書き込む
--書き込んだ情報は、電源を切っても保持される
+KORG KONTROL Editorのメニューより、[編集] - [環境設定...]を選び、下記のように設定する
--microKEYに書き込まれた設定値を自動的に読み出すように設定
#ref(korg_editor04.png,,50%)

***KORG nanoLONTROL2 の動作モードとMIDIチャネル設定 [#i14cdb61]
KORGのコントロールサーフェスを入手したので、DAWに設定をしてみた。
-CCモード:MIDIのコントロールチェンジ・メッセージを割り当てる方式(ACID, Abilityはこちら)
++SET + CYCLEボタンを同時押ししてUSBに接続
++nanoLONTROL2をUSB接続した状態で、[[KORG KONTROL Editor:http://www.korg.com/jp/support/download/product/0/159/]]を起動し、MIDIチャネルを設定する
#ref(korg_editor01.png,,70%)
++KORG KONTROL Editorのメニューより、[転送] - [シーン・データを書き込み]で、本体に書き込む
---書き込んだ情報は、電源を切っても保持される
++KORG KONTROL Editorのメニューより、[編集] - [環境設定...]を選び、下記のように設定する
---nanoLONTROL2に書き込まれた設定値を自動的に読み出すように設定
#ref(korg_editor02.png,,50%)
-Liveモード:Ableton Live用の設定
++SET + STOPボタンを同時押してUSBに接続
++MIDIチャネルの設定は、CCモードと同じ
++Liveの[環境設定]を開き、コントロールサーフェス=Maclie Controlを選択
-その他のDAWモード
++その他のDAW対応モードも用意されているようですが、私は使わないので、説明書を見てください

***KORG nanoKONTROL2 のLEDを点灯させる [#cac4c41a]
上記のCCモードでは、ボタンのLEDが、ボタンを押したときだけ点灯する。ミキサーのS(Solo), M(Mute), R(Rec)ボタンの状態に合わせて、nanoKONTROL2のLEDを点灯させてみる。~

+nanoLONTROL2をCCモードでUSB接続した状態で(上記参照)、[[KORG KONTROL Editor:http://www.korg.com/jp/support/download/product/0/159/]]を起動し、S, M, Rボタンに対して、下図のように設定する
#ref(korg_editor05.png,,70%)
+KORG KONTROL Editorのメニューより、[転送] - [シーン・データを書き込み]で、本体に書き込む
--または、下記のファイルをダウンロードし、メニューより、[ファイル] - [開く...]で、設定を読み込み、[転送] - [シーン・データを書き込み]で、本体に書き込む
---&ref(nanoKONTRL2.nktrl2_data);
---[注] Abilityに付属のnanoKONTROL.datは、nanoKONTROL2には読み込めない。
-&color(red){[注意1]}; ACID 10では、上手く動作しないらしい。
-&color(red){[注意2]}; Abilityでは、下記「Ability で KORG nanoKONTOL2 を使用」の項で使用したコントロールサーフェス設定ファイル&ref(nanoKONTROL2.ucd);を再度ダウンロードして、設定し直してください(2016.8.22以前にダウンロードした場合)。

***Ability で KORG nanoKONTOL2 を使用 [#ne4e2373]
+下記の nanoKONTROL2.ucd をダウンロード
--&ref(nanoKONTROL2.ucd);
-&color(red){2016.8.22:}; 上記コントロールサーフェス設定ファイルを修正しました。これ以前にダウンロードした場合は、再度ダウンロードして、設定し直してください。
+C:\Program Files\INTERNET Co.,Ltd\ABILITY\MidiController\ の下に、nanoKONTROL2.ucd をコピー
+C:\Users\<ユーザ名>\AppData\Roaming\INTERNET Co.,Ltd\ABILITY\MidiController\ の下に、nanoKONTROL2.ucd をコピー
+Abilityを起動
+Abilityのメニューより、[設定] - [MIDIポートの設定...]を選択
++MIDI IN / MTCタブをクリックし、nanoKONTROL2 をMIDIポートとして設定して(何番のMIDIポートでも良い)、OKボタンをクリック
+Abilityのメニューより、[設定] - [コントロールサーフェス...] で、定義ファイルに nanoKONTROL2.ucd を指定して読み込む
++上記設定ファイルでは、下記の設定になっているので、必要に応じて変更
---MIDIチャネルは、3を使用
---右端のフェーダーは、マスターフェーダーに割り当て
---SETボタンは、曲の頭に移動
++同フォームのコントロールサーフェス用入力ポートの設定で、nanoKONTROL2 を選んで、OKボタンをクリック
+nanoKONTROL2をCCモード(CYCLE+SETボタン)で電源を投入して使用

***ACID Pro10のWindows11へのインストール [#p559a618]
-Ver.10には、STEM MAKER(音源分解ソフト)が含まれているが、Windows11にインストールできないので、とりあえず、Ver.10.5を使用。

***ACID で KORG nanoKONTOL2 を使用 [#vb3328db]

+下記の nanoKONTROL2.xml をダウンロード
--&ref(nanoKONTROL2.xml);
--[注] ACID 10では上手く動作しない。

+C:\Users\<ユーザ名>\AppData\Local\Sony\ACID Pro\バージョン番号\標準コントロール マップ\ の下に、nanoKONTROL2.xmlをコピー
+ACIDを起動
+ACIDのメニューより、[オプション] - [ユーザ設定...] を選ぶ
+MIDIタブをクリックし、「次のデバイスをMIDI入力に使用できるようにする」欄で、nanoKONTROL2 をMIDIポートとして選択し、適用ボタンをクリックする(MIDI出力指定は不要)
+外部コントロール&オートメーションタブをクリック
+使用できるデバイス=標準コントロール を選択し、追加ボタンをクリック
+アクティブなコントロールデバイス欄に、「標準コントロール」デバイスが表示されるので、これを右クリックして、ポップアップリストで「設定」を選択
+標準コントロールの設定画面が開くので、開く...ボタンをクリック
+コピーしておいた nanoKONTROL2.xml を選んで、開くボタンをクリック
++上記設定ファイルでは、下記の設定になっているので、必要に応じて変更
---MIDIチャネルは、3を使用
---右端のフェーダーは、マスターフェーダーに割り当て
---プレビューフェーダー(ループのモニタ)への割り当てはない
++同フォームのMIDI入力欄で、nanoKONTROL2 1 を選んで、OKボタンをクリック
+ACIDのメニューより、[オプション]-[外部コントロール]を選択して、コントロール サーフェスを有効にする
+nanoKONTROL2をCCモードで起動して使用

***Abilityのプラグインスキャン手順 [#v2cb23e5]
+ニュー:設定 - 環境設定...
+「VSTプラグインが存在するフォルダ」欄で、追加ボタンをクリックしてVSTフォルダを指定
+VST情報を再構築をチェックしてOKボタンをクリック
+メニュー:設定 - VSTプラグイン情報...で、必要のないVSTのチェックを外す

*** ACIDのプラグインスキャン手順 [#pe660d80]
+ACIDのプラグインマネージャー(最下側のタブまたは、メニュー:表示-プラグインマネージャー)を選択
+プラグインマネージャーの上側アイコンからVSTの設定を選ぶ(一番右の関数アイコン)
+VSTフォルダを追加してスキャンボタンをクリック
+プラグインマネージャのツリーに、インストールしたVSTが表示されていることを確認
--カテゴリが間違っていることがあるので、VSTを右クリックして修正する

***George Yohng's W1 Limiter [#b6a52874]
大抵のDAWには、マスタリングエフェクトとしてマキシマイザが付属している。古いACIDには、iZotopeが付属していたが、現在はダウンロードできないようなので(Suite版には付属)、とりあえず、W1 Limiter を入れておく。ACIDには、Sony マルチバンドダイナミクスが付いているので、好きな方を使用。

+ダウンロード先は、Yohng.com
--http://www.yohng.com/software.html
+解凍して、32bit, 64bit VSTをそれぞれの標準VSTプラグインディレクトリ(例:VSTPlugins, VSTPlugins 64)にコピー
+DWAでプラグインのスキャンを行う

***Roland A-PROの初期設定 [#ta1bfec3]
A-PROをコントロールサーフェスとして使用するときの最初の設定です。購入直後とファクトリーリセットを行ったときだけ、お好みにより実行します。

-HOLDボタンに、A1-A8のボタンの出力をホールドする機能に代えて、L9としてMIDIメッセージを割り当てボタンとして使用する場合の例
+[ACT]+[左三角]ボタンでEDITモードにする
+[VALUEつまみ]で、SYSTEM SETTINGを選んで、ENTER(VALUEボタンの上)を押す
+[VALUEつまみ]で、L9 FUNCTIONを選んで、ENTERを押す
+[VALUEつまみ]で、L9を選んで、ENTERを押す
--HOLDボタンにMIDIメッセージを割り当て、L9ボタンとして使用する

-電源投入時に、前回使用したコントロールマップを呼び出すように設定
+再度、[ACT]+[左三角]ボタンでEDITモードにする
+[VALUEつまみ]で、SYSTEM SETTINGを選んで、ENTER(VALUEボタンの上)を押す
+[VALUEつまみ]で、STARTUP MEMORYを選んで、ENTERを押す
+[VALUEつまみ]で、LAST ACC MAPを選んで、ENTERを押す
--電源ON時に、前の電源OFF時のコントロールマップ設定を呼び出す(デフォルトでは、コントロールマップ0番が呼び出される)

***Roland A-RPOのコントロールマップ設定(Ability 2.5以前, ACID Pro各種バージョン) [#dc31ba4e]
ローランドA-PROのキーは、ハンマーアクションがないが、打鍵反射が速い割にキータッチが軽いので、トリルやグリッサンドを多用するオルガン弾きには扱いやすいキーだと思う。付属ソフトのAbleton Liveなどの各種DAWソフト用のコントロールマップがプリセットされているが、AbilityとACIDのコントロールマップが付いてなかったので、自分で作ってみた。

+下記の コントロールマップをダウンロード
--Ability用 &ref(A-PRO-Ability.mid);
--ACID用 &ref(A-PRO-ACID.mid);
--&color(red){[参考]}; Ability 3.0には、A-PRO用のコントロールマップが付属しているので、そちらを使用するとよい。Ability, ACIDのどちらにも使用可能。読み込み方法は、Roland A-RPOのコントロールマップ設定(Ability 3.0以降)を参照
+A-PRO本体をUSB接続した状態で、[[A-PRO EDITOR:https://www.roland.com/jp/products/a-300pro/downloads/]]を起動
+メニューより、[オプション] - [MIDIデバイス...]を選び、入力ポート=A-PRO 2, 出力ポート=A-PROを選ぶ
+メニューより、[ファイル] - [開く...]で、ダウンロードしておいたコントロールマップを読み込む
+A-PRO EDITOR画面上で、Control Map=19 を設定
--A-PRO本体は、0~19のコントロールマップメモリを持っているので、何番を使っても良いが、ここでは、工場出荷時にプリセットされていない19番を使用
+A-PRO EDITOR画面上のTransmitボタンをクリックして、本体にコントロールマップを書き込む
+A-PRO本体の[左三角]ボタンを複数回押して、CTRLマップモードにすると、LCD画面に「CTRL MAP 番号」が表示される
+[VALUEつまみ]で、19 を選ぶ
--上記、Roland A-PROの初期設定を実行した場合は、次回電源投入時には自動的にコントロールマップ19が選択される
+設定を変更する場合は、A-PRO EDITORで修正を行う。
--注: Button Modeは、Unlatchにすると、ボタンを押す度にON/OFFが切り替わり、Latchにすると、押したときだけONになる。
--コントロール番号の右側の数字はMIDIチャネル。MIDIポートは、色で分けられている。
--A-PROには、ポート1(A-PRO 1)とポート2(A-PRO 2)の2つのMIDIポート(A-PROが出力側)がある。通常、プログラムチェンジ(音色)やキーボード、ベンダーレバーなどのメッセージをポート1、その他のボタンやツマミのメッセージをポート2に出力する
#ref(A-PRO_CC.png,,70%)

***Roland A-RPOのコントロールマップ設定(Ability 3.0以降) [#jdc9b374]
Ability 3.0 に付属している A-RPO のコントロールマップを使用する。

+A-PRO本体をUSB接続した状態で、[[A-PRO EDITOR:https://www.roland.com/jp/products/a-300pro/downloads/]]を起動
+メニューより、[オプション] - [MIDIデバイス...]を選び、入力ポート=A-PRO 2, 出力ポート=A-PROを選ぶ
+メニューより、[ファイル] - [開く...]で、下記のコントロールマップの何れかを読み込む
-- C:\Program Files\INTERNET Co.,Ltd\ABILITY 3.0\MidiController\ABILITY_MUTE.mid, または ABILITY_REC.mid, または ABILITY_SOLO.mid
--- 3つのファイルは、A-PROのPAD A1-A8 への割り当て機能(トラックのMUTE, REC, SOLO)が異なっている。
+A-PRO EDITOR画面上で、Control Map=19 を設定
--A-PRO本体は、0~19のコントロールマップメモリを持っているので、何番を使っても良いが、ここでは、工場出荷時にプリセットされていない19番を使用
+A-PRO EDITOR画面上のTransmitボタンをクリックして、本体にコントロールマップを書き込む
+A-PRO本体の[左三角]ボタンを複数回押して、CTRLマップモードにすると、LCD画面に「CTRL MAP 番号」が表示される
+[VALUEつまみ]で、19 を選ぶ
--上記、Roland A-PROの初期設定を実行した場合は、次回電源投入時には自動的にコントロールマップ19が選択される
+設定を変更する場合は、A-PRO EDITORで修正を行う。
--注: Button Modeは、Unlatchにすると、ボタンを押す度にON/OFFが切り替わり、Latchにすると、押したときだけONになる。
--コントロール番号の右側の数字はMIDIチャネル。MIDIポートは、色で分けられている。
--A-PROには、ポート1(A-PRO 1)とポート2(A-PRO 2)の2つのMIDIポート(A-PROが出力側)がある。通常、プログラムチェンジ(音色)やキーボード、ベンダーレバーなどのメッセージをポート1、その他のボタンやツマミのメッセージをポート2に出力する
#ref(A-PRO_CC3.png,,70%)

***Roland A-PROをAbilityのコントロールサーフェスとして使用 (Ability 2.5以前) [#s2eecaa3]
+下記の A-PRO.ucd をダウンロード
--&ref(A-PRO.ucd);
+C:\Program Files\INTERNET Co.,Ltd\ABILITY\MidiController\ の下に、A-PRO.ucd をコピー
+Abilityを起動
+メニューより、[設定] - [MIDIポートの設定...]を選択
++MIDI IN / MTCタブをクリックし、A-PRO 1とA-PRO 2をMIDIポートとして設定して(何番のMIDIポートでも良い)、OKボタンをクリック
---A-PROは2個のMIDI出力ポート(A-PRO 1とA-PRO 2)を持っているので、キーボードの情報(ノートやベロシティ)をA-PRO 1から取得し、コントロールサーフェスの情報をA-PRO 2から取得する
+メニューより、[設定] - [コントロールサーフェス...] を選び、定義ファイルに A-PRO.ucd を指定して読み込む
++上記設定ファイルでは下記の設定になっているので、必要に応じて変更(A-PROのコントロールマップも対応する変更が必要)
++同フォームのコントロールサーフェス用入力ポートの設定で、A-PRO 2 を選んで、OKボタンをクリック

MIDIポート=A-PRO 2, MIDIチャネル=1 を使用
|R1-R8|チャネルPAN|
|R9|マスターPAN|
|S1-S8|チャネルVOL|
|S9|マスターVOL|
|A1-A|チャネルRECボタン|
|B1|4トラック戻る|
|B2|1トラック戻る|
|B3|1トラック進む|
|B4|4トラック進む|
|L1|前のマーカへ移動|
|L2|REW|
|L3|FWD|
|L4|次のマーカへ移動|
|L5|STOP|
|L6|PLAY|
|L7|STOP|
|L8|REC|
|L9|TOPへ移動|

***Roland A-PROをAbilityのコントロールサーフェスとして使用 (Ability 3.0以降) [#lc68c39d]
Ability 3付属のコントロールマップをA-PROに設定しているときは、以下の手順でA-PROをコントロールサーフェスとして利用可能。

+Abilityを起動
+メニューより、[設定] - [デバイス設定...]を選択
+デバイス設定フォームの左側リストで、[MIDI IN / MTC]をクリックし、A-PRO 1とA-PRO 2をMIDIポートとして設定して適用ボタンをクリック
--A-PROは2個のMIDI出力ポート(A-PRO 1とA-PRO 2)を持っているので、キーボードの情報(ノートやベロシティ)をA-PRO 1から出力し、コントロールサーフェスの情報をA-PRO 2から出力する
+デバイス設定フォームの左側リストで、[コントロールサーフェス]を選択
--コントロールサーフェスを使用するにチェックを入れる
--コントロールサーフェスを使用する右側のドロップダウンリストで、Roland A-PROを選択
--コントロールサーフェストラック数を 8 に設定する
--コントロールサーフェス用入力ポートを A-PRO 2, コントロールサーフェス用出力ポートを A-PRO に設定
--OKボタンをクリックして終了
++上記設定ファイルでは、下記の設定になっているので、必要に応じて変更(A-PROのコントロールマップも対応する変更が必要)

A-PROにABILITY_REC.midを設定した場合の設定
|R1-R8|チャネルPAN|
|R9|マスターPAN|
|S1-S8|チャネルVOL|
|S9|マスターVOL|
|A1-A8|チャネルRECボタン|
|B1|4トラック戻る|
|B2|4トラック進む|
|B3|1トラック進む|
|B4|1トラック戻る|
|L1|TOPへ移動|
|L2|REW|
|L3|FWD|
|L4|なし|
|L5|STOP|
|L6|PLAY|
|L7|なし|
|L8|REC|

***Roland A-PROをACIDのコントロールサーフェスとして使用 [#ce958226]
+下記の A-PRO.xml または A-PRO-2021.xml をダウンロード
--&ref(A-PRO.xml); (上記でダウンロードしたA-PRO設定を使用する場合, ACID 7用)
--&ref(A-PRO-2021.xml); (Ability 3.0以降に付属のA-PRO設定を使用する場合, ACID 10用)
+C:\Users\<ユーザ名>\AppData\Local\MAGIX\ACID Pro\<バージョン番号>\標準コントロール マップ\ の下に、A-PRO(-2021).xml をコピー
-- ACID Ver.7.0以前は、C:\Users\<ユーザ名>\AppData\Local\Sony\ACID Pro\<バージョン番号>\標準コントロール マップ\ の下
+ACIDを起動

+ACIDのメニューより、[オプション] - [ユーザ設定...] を選ぶ
+MIDIタブをクリックし、「次のデバイスをMIDI入力に使用できるようにする」欄で、A-PRO 1とA-PRO 2をMIDIポートとして選択し、適用ボタンをクリックする(MIDI出力指定は不要)
---A-PROは2個のMIDI出力ポート(A-PRO 1とA-PRO 2)を持っているので、キーボードの情報(ノートやベロシティ)をA-PRO 1から取得し、コントロールサーフェスの情報をA-PRO 2から取得する
+外部コントロール&オートメーションタブをクリック
+使用できるデバイス=標準コントロール を選択し、追加ボタンをクリック
+アクティブなコントロールデバイス欄に、「標準コントロール」デバイスが表示されるので、これを右クリックして、ポップアップリストで「設定」を選択
+標準コントロールの設定画面が開くので、開く...ボタンをクリック
+コピーしておいた A-PRO.xml を選んで、開くボタンをクリック
++上記設定ファイルでは、下記の設定になっているので、必要に応じて変更
---MIDIポート=A-PRO 2, MIDIチャネル=1 を使用
---HOLDボタンは、曲の先頭に戻る
---A1~A8は、チャネルRECボタン
---B1~B4は、トラックのシフト
---プレビューフェーダー(ループのモニタ)への割り当てはない
++同フォームのコントロールサーフェス用入力ポートの設定で、A-PRO 2 を選んで、OKボタンをクリック
++ACIDのメニューより、[オプション]-[外部コントロール]を選択して、コントロール サーフェスを有効にする

*サーバ管理関係 [#l1659411]
***PukiWiki上でURL指定により画像を指定するとき、画像表示サイズが変更されない件 [#fbaa59f2]
-Pukiwiki.ini.phpに下記のように設定する
-define('PLUGIN_REF_URL_GET_IMAGE_SIZE', TRUE);

***PukiWikiページのパスワード設定 [#x2387b0a]
-PukiWiki-officialの説明を参照: https://pukiwiki.osdn.jp/?PukiWiki/Authentication
-- 認証方式、ユーザIDとパスワード設定、閲覧|編集|検索制限ページの指定
--- 例: ABC/以降のページ $read_auth_pages = array( '#^ABC/#' => 'hoge',);
-- ユーザIDとパスワードの設定
--- 例: $auth_users = array('hoge'  => '{x-php-md5}***********************',);
--- ****部分(MD5パスワード)の作成: echo -n 'パスワード' | md5sum

***ドライブのバックアップ [#e1a38513]
-ドライブのパーティション単位でバックアップする
--USBメモリなどをext4でフォーマットする
---mkfs.ext4 /dev/***
--dump -0uf /バックアップ先パス/バックアップファイル名 /dev/sda5など(dfで調べておく)
--restore -rf /バックアップ先パス/バックアップファイル名
---バックアップ先パス /mnt/USB, /media/user/ドライブ名

*Raspberry Pi 3 関係 [#de4da67a]
***OSのインストール (リリース 2018-10-09 の例) [#n12ce40e]
-ダウンロードページ https://www.raspberrypi.org/forums/viewforum.php?f=82
--RASPBIANをダウンロード
--RASPBIAN STRETCH WITH DESKTOP (ZIP)をダウンロードして解凍

-起動用microSDカードの作成(Windowsを使用して書き込む場合)
--Rufasをダウンロード https://rufus.ie/ja_JP.html
--Rufasを起動
---書き込むデバイスを選択
---選択ボタンをクリックして、RASPBIANのイメージを選択
---図のようになっていることを確認して、スタートボタンをクリック
#ref(rufus.png,,100%)
--microSDが新品でない場合(既にパーティションが作成されている場合)
---ブートの種類 = 非ブート用、ファイルシステム = FAT32 を選択して、フォーマットを行ってから、RASPBIANを書き込む

-初回起動時の設定
--電源を入れるとWelcome to Raspberry Pi が起動
++Nextボタン
---Set Country - Japan, Use US Keyboard (使用するキーボード)を設定
++Nextボタン
---Change Password - piユーザ(初期ユーザ)のパスワードを設定
++Nextボタン
---Select WiFi Network - 接続先を選択
---Enter WiFi Password - 接続先のパスワードを入力
++Nextボタン
---Update Software - skip
++Reboot

***初期設定 [#q805cd9c]
-ユーザの設定
--sudo passwd root - rootのパスワードを設定
--sudo useradd -m 一般ユーザ名
--sudo passwd 一般ユーザ名 - 一般ユーザのパスワードを設定
--sudo nano /etc/passwd - 一般ユーザの行の最後の : の後に、/bin/bash (使用したいシェル)を追加
---sudoができる初期のユーザpiは、複雑なパスワードを再設定しておくとよい
---次からは、一般ユーザでログインし、suを使用して管理者になる

-RASPBIANのアップデート
--apt-get update
--apt-get upgrade
--apt-get dist-upgrade
--reboot
---rpi-update(ファームのアップデート)は、特に必要なければ使用しないこと

-ファイルシステムのパーティション変更
--raspi-config
--7. Advanced Options - A1 Expand Filesystems を選択
--- microSD全体をルートパーティションとして使用できるようにする

-デスクトップログインの変更(任意)
--raspi-config
--3. Boot Options - B1 Desktop / CLI - B1 Console または B3 Desktop を選択 
---デフォルトでは、起動時にpiユーザに自動ログインするようになっているため、ユーザを選択できるようにする

***ネットワーク設定 [#nd39a69c]
-ホスト名の設定
--raspi-config
---2. Network Options - N1. Hostname - ホスト名を設定

-Network Managerのインストール
--apt-get install network-manager
--apt-get install network-manager-gnome
--reboot
---アプリケーションメニューに、設定 - ネットワーク接続が追加される

-Ethernetの設定
--アプリケーションメニューより、設定 - ネットワーク接続
--IPv4タブでIPアドレス等を設定
--IPv6タブでIPv6を無視に設定

-オンボードWLANの停止
--iwconfig wlan0 txpower off
--WLANを有効に戻すときは、iwconfig wlan0 txpower auto

-オンボードWLANの自動起動の禁止(デモなどで、オンボードWLANを使用する場合は、iwconfigコマンドでON/OFFしたほうが便利)
--nano /etc/modprobe.d/raspi-blacklist.confに下記2行を追加
---blacklist brcmfmac
---blacklist brcmutil

***ソフトの起動またはインストール [#hd3c899f]
-SSHサーバ
--raspi-config
---5. Interfacing Options - SHHを有効に変更

-httpサーバ
--apt-get install apache2
--http://localhost で動作確認

-Emacs
--apt-get install emacs

*LTspice関係 [#qf1b665e]

***OS X (Mac)へのインストール [#af495d7e]
+MikuInstallerをインストール(Wineインストーラ)
--http://sourceforge.jp/projects/mikuinstaller/
+リニアテクノロジー社よりLTspiceIVをダウンロード
--http://www.linear-tech.co.jp
+ダウンロードしたLTspiceのインストーラ(.exe)をMikuInstallerにドラッグでインストール
--MikuInstaller配下のdrive_C/Program Files以下のディレクトリにインストールされるので、インストール先を確認しておく
--MacBookAirでは動作確認済
--参考: http://samurai20000.hatenablog.com/entry/20090610/1244640614

***Linuxへのインストール [#pea0ee80]
+下記のURIよりOS(ディストリビューション)に合わせてWineをダウンロードしてインストール
--http://www.winehq.org/download/
+リニアテクノロジー社よりLTspiceIVをダウンロード
--http://www.linear-tech.co.jp
+コマンドラインより wine LTspiceIV.exe でLTspiceをインストール
--wine配下のdrive_C/Program Files以下のディレクトリにインストールされるので、インストール先を確認しておく
--参考: http://penguin.tantin.jp/hard/LTspice.html

***初期設定 [#q27cc7b3]
初期設定は人の好みなので、使いやすければ何でもよいわけですが。
-[Tools] - [Control Panel] - [Operation] - Default Window Tile Pattern = Vert
-[Tools] - [Control Panel] - [Drafting Options] - Automatically scroll the view = OFF
-[Tools] - [Control Panel] - [Drafting Options] - Orthogonal snap wires = OFF
-[Tools] - [Control Panel] - [Netlist Options] - Convert 'μ' to 'u' = check
-[Tools] - [Color Preferences] - [Selected Item = Background], Red = Green = Blue = 255 (SchematicとWaveFormタブ)

***LTspice雑記帳 [#z352dbcf]
検索すれば、LTspiceの優れた解説ページやブログがたくさん見つかるので、いまさら解説ページを作成する意義は小さいのですが、講義のシミュレーション演習や自宅での学習の際、忘れやすい事項について参照するためのノートとしてまとめたものを以下のURIに置きます。

--http://jaco.ec.t.kanazawa-u.ac.jp/edu/ec2/ltspice/

* MOSES関係 [#t2a9180b]
*** 2015.02.22: MOSES for Windowsのインストールと設定手順 [#ac23dc0d]
- Moses を適当なディレクトリにコピー(例: C:\Moses)
- テクノロジデータのディレクトリを作成(例: C:\Moses\LIB)
- テクノロジの種類別ディレクトリを作成(例: C:\Moses\LIB\CMOS_2u)
- テクノロジの種類別ディレクトリに cex.mdl, drc.md, mos_tt.lib をコピー
- gex.defが供給されている場合は、これもテクノロジの種類別ディレクトリにコピー(MakeLSIでは、Mosesディレクトリに含まれている)
- Windowsに環境変数を設定(Windows7 の場合)
-- コンピュータを右クリック -> メニューでプロパティを選択
-- システムの詳細設定をクリック
-- システムのプロパティウインドウが表示されるので、環境変数...ボタンをクリック
-- ユーザ環境変数欄で、新規ボタン...で、以下の環境変数を入力(既に変数が定義されている場合は、編集...ボタンをクリックし、 ; で区切って追加)
--- PATH = %PATH%;C:\Moses (インストールディレクトリ)
--- GEXLIB = C:\Moses\LIB\ (テクノロジデータのディレクトリ)
--- RULE = CMOS_2u (テクノロジの種類別ディレクトリ)
- GEX(レイアウトエディタ)本体のショートカットを作成
-- インストールディレクトリ\wgex.exeを右クリックし、スタートメニューに表示するを選択
-- Windowsのスタートメニューで、wgexを右クリックし、プロパティを選択
-- 作業フォルダー欄に、レイアウトデータを保存するディレクトリを指定(例: C:\Moses\WORK)
--- 作業フォルダーは事前に作成しておくこと
- スタートメニューから、WGEXを起動
- WGEXのメニューより、ファイル -> 新規作成
- WGEXのレイヤー設定が使用するテクノロジになっていない場合は(テクノロジの種類別ディレクトリにパスが通っていない場合)、以下のようにしても設定できる
-- WGEXのメニューより、設定 -> 定義ファイルを設定
-- 使用テクノロジに対応するgex.def を選択
- 以上でレイアウト作業を開始できる

*PSoC Designer関係 [#q3affb57]

***プロジェクトのPSoCデバイスを後から変更する(ver. 5.4以降) [#e74425b2]
+New Projectフォームで、プロジェクト名、保存場所を設定し、Project CreationをClone Existing Projectに変更
+Clone from Project欄右側の ... ボタンをクリックして、旧デバイスで作成したプロジェクト内の .soc ファイルを選択
--.socファイは、プロジェクト名/プロジェクト名/プロジェクト名.soc に保存されている
+その下のラジオボタンから、Select target device を選択
+Select Target Device欄の Device を、新しいターゲットデバイスに設定
+OKボタンで、旧プロジェクトで使用している機能が、新デバイスへの移行が可能かどうかをチェックした結果が表示される
+Cloneボタンをクリックすると、新デバイスに変更したプロジェクトが作成される
#ref(psoc20161203.png)

***プロジェクトのPSoCデバイスを後から変更する(ver. 5.2以前) [#sc4884b2]
+新規プロジェクトを作成すると、次に Select Project Type フォームが開く
+Clone project欄の Path の Browse...ボタンで、旧デバイスで作成したプロジェクト内の .soc ファイルを選択
--.socファイは、プロジェクト名/プロジェクト名/プロジェクト名.soc に保存されている
+その下の Select target device のラジオボタンを選択
+Select Target Device欄の Device を、新デバイスに設定
+OKボタンで、新デバイスへの移行が可能かどうかをチェックした結果が表示される
+Cloneボタンをクリックすると、新デバイスに変更したプロジェクトが作成される

***PSoCのデバイス選択 [#sf771a05]
デバイスの比較については、各種の解説ページやCypress社のドキュメントに説明されているが、実際には、メモリ容量や、アナログ/ディジタルブロック数を考えてデバイスを選択することは難しい。多くの場合は、使用できるユーザモジュールやIOピン数で選択することが多いと思われる。私の場合は、以下の基準で探しているが、妥当かどうかは不明。

-CY8C29466-24PXI(28DIP)
--DIPが入手できる汎用デバイスとして
--ディジタルブロックがCY8C28445より多い
---例えば、UART4個, RX, TX単体なら8ポート搭載可能
-CY8C29666-24LFXI(48MLF)
--小型化できる汎用デバイスとして
--IO数が多い
---MLFの半田付けには少し気合いが必要
-CY8C28445-24PVXI(28SSOP)
--複雑なアナログ処理を行う場合
--デルタ-シグマ型ADCの同時4入力が可能
---デシメーションフィルタ専用ブロックが4系統ありディジタルブロックを消費しない
--インクリメント型Triadc(同時3入力)、Dualadc(同時2入力)なら他のデバイスでも可能
---PSoC1のADCはあまり高速ではないので、データの同時性が要求される場合AMUXによるアナログ入力切り替えでは補間が必要。同時サンプリングが必要無い場合は、インクリメント型ADCをAMUXで切り替えて使用する
--DACは4個まで可能
--CapSense可能
--2系統のI2Cコントローラ専用ブロックが用意されている
-CY8C21534-24PVXI(28SSOP)
--CapSense(20入力)を使いたいとき
--USB-UARTを使うときはCY8C24794-24LFXI

***UARTとTX8, RX8の使い分け [#l5f9d66b]
UART, TX8, RX8, TX8SW(TX8のソフトウエア版)がある。UARTは双方向、TX8は送信専用、RX8は受信専用となっている。高レベルAPIはどれも殆ど同じ。複数のシリアル通信ポートが必要な場合には、使い分けが必要。例えば、多数のセンサによる計測システムでは、コマンドを送るための送信ポート1個と計測データを吸い上げるための受信ポートが多数必要となる。従って、1個のTX8と、多数のRX8を実装することになる。また、PCと1対1の通信を行う場合には、UARTを1個使用したほうが便利。

***I2CとUARTの使い分け [#uce41497]
I2Cは2線のBUS接続であるため、複数のチップ間の通信を容易に行え、また拡張性が高い(7bitアドレス)。しかし、データレートが100kまたは400kbpsに限られ、CPUクロックも制約を受ける。UARTは、BUS接続ではないため、通信相手毎にポートを作る必要がある。CY8C29466では、RX, TXの合計で8ポートまで。この範囲内であれば、UARTを使用することで、高速化が可能。UART接続でデバイス数を増やしたい場合は、ヘッダにデバイス番号を追加し、2つのUARTポートをスルーさせるように接続することで実現可能。ただし、この接続法では、ソフトウエア処理が挟まるため、デバイス間の遅延が発生し、処理の同時実行はできないので、別途割り込み専用の配線が必要となる。

***VC3のアナログブロックでの利用 [#m993d3a7]
通信と計測を行う場合、異なるクロックが必要となる。クロックを分周した周波数ソースとして、VC1, VC2, VC3が用意されているが、分周比が大きい(低周波)のはVC3である。VC1, VC2で通信用のクロックを作成したとき、VC3でDACやADCを動かしたいことがあるが、アナログブロックのクロックとしてVC3が選択できない。別途カウンターを用意する方法もあるが、ディジタルブロックを複数消費するので、Misc Digital/DigInv(インバータ)の入力をVC3とし、Analog Clock Select(アナログクロックのMUX)で、DigInvを置いたディジタルブロックを選択して、アナログクロック他院に接続する。DigInvのClockSyncをSync to SysClkにしておくこと。インバータを通すので、アナログ部とディジタル部のクロック位相が180度ずれてしまうが、ADCやDAC単体では問題ないようだ。回路間の接続によっては、クロックの位相に注意が必要。DigBufというものもあるが、なぜか上手く動作しない。何かの設定が必要なのかも。

***不揮発性メモリのエミュレーション [#pb3df29f]
センサやADCの較正値の保持や前回終了時(電源OFF時)の状態の復元などに不揮発性メモリが必要なことが多い。大容量が必要ない場合には、外部マイクロSDモジュールを接続すしなくても、PSoC内のフラッシュメモリに書き込む方法が用意されている。

-レイアウト画面で、E2PROMを配置(ブロックは消費しない)
-Workspace Explorerで、flashsecurity.txtをダブルクリックして開く
--flashsecurity.txtタブを選び、フラッシュメモリブロックの配置を調べる。1文字=1ブロック=64Byte(0x40Byte)を表す
--初期状態では、全領域 W(Write protected)になっている。デバイスに搭載されているフラッシュメモリ容量とプログラムの大きさを考慮して、使用するメモリ領域をU(Unprotected)に変更
--Uに変更した領域の先頭ブロック番号を数えておく(1からスタート)
-レイアウト画面に戻り、Parameters欄で、First Block(先頭ブロック番号※), Length(バイト)を入力する
--※ First Blockは、アドレスではなくブロック番号なので注意
--First Blockの先頭アドレスが、プログラムで指定するアドレスの0番となる
-E2PROM_bE2Write(先頭アドレス, データポインタ, データ長Byte, 温度), E2PROM_E2Read(先頭アドレス, データポインタ, データ長Byte) により書き込み/読み出しを行う
--E2PROM_Start/E2PROM_Stop関数があるが使用しなくてもよい
--E2PROM_bE2Writeの最後の引数は、PSoCの温度(摂氏)となっている。Flashメモリの書き込み特性の温度依存性に対応。温度測定モジュールFlashTempを使用するか、外部温度センサを利用または通常の使用環境温度を想定して値を代入。

***FirstTouchの回路図 [#d8bd1ce4]
自作の楽しみはないけれど、センサー、ブザー、LED、プログラマなど、全部付いていて、色々な実験ができるマイコンボードが3,000円ほどで買えるということで、早速、講義の演習に使用してみたが、学生には受けないようだった。CY8C21434 が搭載されていて、キャップセンス(タッチセンサ)も使える。

#ref(first_touch_SZ.jpg)

評価ボード部分の等価回路図。

#ref(ftmf_circuit.png)

評価ボードには、GPIOがピンヘッダーに接続されており、拡張が可能。写真はブレッドボードに挿せるようにした変換基板。RS232Cポートも付けてあるが、今ならUSBポートだろう。

#ref(br_ext_board.jpg)

***タッチイルミネーション [#o247b42b]
PSoC FirstTouchの近接センサ(人体センサ)を使ったカラーイルミネーションの例

#ref(lab00_SZP.jpg)

-[[lab00.lzh:http://jaco.ec.t.kanazawa-u.ac.jp/edu/digi/lab_psoc/data/lab00.lzh]]をダウンロードして、適当な場所で解凍する。
-lab00ディレクトリ内のlab00.appをダブルクリックするとPSoC Designerが起動する
-PSoCデザイナのメニューより、Build - Generate/Build 'lab00' Projectを選ぶ
-PSoC Device Configuration Selectionフォームで、CY8C21434 32-Pin(FirstTouchに搭載されているPSoCの型番)が選ばれているのを確認してNextをクリック
-User Pin Assignmentフォームで、Nextボタンをクリック
-ファームウエア(組み込みプログラム)のコンパイルが始まる
-Output欄に 0 error(s) 0 warning(s) と表示されていることを確認
-FirstTouchをプログラマに評価ボードを挿した状態で、PCのUSBポートに接続
-PSoCデザイナのメニューより、Program - Program Part...
-Program Partフォームで、Port SelectionがFirstTouch/番号となっているのを確認
-下のステータスバーにConnectedと表示されているのを確認
-水色の矢印ボタンをクリックすると、PSoCにファームウエアがダウンロードされる
-下のステータスバーにPassと表示されているのを確認
-これで、評価ボードがProximity Sensorとして動作するはず。電源はUSBから供給されているので、USBに挿したまま動作確認する。もし、電源が供給されていないようなら、Program Partフォームの電源マーク(丸に縦棒)をクリックする 

***LED体温計 [#d2bd9824]
[[lab02.lzh:http://jaco.ec.t.kanazawa-u.ac.jp/edu/digi/lab_psoc/data/lab02.lzh]]をダウンロードして、適当な場所で解凍してください。下記の回路図に合わせて、IOポートやクロックの設定をする必要があります。
LEDの色で体温を測る、LED体温計。30 - 40度ぐらいの温度を細かく測定する必要があります。ここでは、室温付近での温度変化を増幅する代わりに、ソフトゥエアでADCの変換結果(adc_out)を変数sensの倍率に拡大しています。但し、ソフトゥエアで増幅すると、その倍率に比例して精度(LSB当たりの変換電圧)が落ちることになります。精度を落とさないためには、ADCの前にアナログ電圧を増幅する方法がありますが、FirstTouchに搭載されているPSoC CY8C21434には、Programmable Gain Amplifier のモジュールがありません。このため、ADCの変換ビット数を高くする必要があります。1bitの増加は、約6dBの増幅に相当します。

#ref(lab02_circuit.png)

Thermistorは、温度によって抵抗値が変化するデバイスです。FirstTouchに付いているものは、摂氏25度で10kohm, 温度依存性は、Cypress社のWEBページでAN2395というドキュメントに含まれる自動計算ソフトで計算できますが、ここでは、温度を数値で表すわけではないので、必要ありません。Zener (Zener diode)は、逆方向バイアスを加えると、一定電圧に保つことができるダイオードです。FurstTouchには、2.4Vに保つダイオードが付いていて、これで一定電圧をThermistorに加えます。基準とする温度のときのTermistorの電圧を基準電圧(2.4V)/2となるように設定することで、その温度を中心として温度測定ができます。このため、10kohmの抵抗を接続しています。BGR(Bandgap Reference)は、ADCのMSBに相当する電圧を決める基準電圧源として使用しています。Thrmistorの出力電圧をADCでディジタル値に変換後、CPUにデータを転送し、2個のPWM回路のDuty Ratioを設定し、BlueとRedのLEDの明るさを制御して、色を変化させます。

*PSoC Creator関係 [#d4e31f7a]

[[こちら>PSoC Creator]]に移動しました。

*TWE-lite (ZigBee)関係 [#pfbd0339]

***TWE-Liteインタラクティブモード [#vce12bde]
- TWE-Liteには、ファームウエアを書き直さずに設定を変更するインタラクティブモードがあるが、親機と子機では、インタラクティブモードへの入り方が異なる。
-- ターミナルでシリアルポートで接続したら、通信速度を115200bpsに変更。改行コードを、受信=CR, 送信=CR + LF にする
-- 親機:TWE-Lite R(ライター)等でPCに接続し、+をゆっくり3回入力
-- 子機:TWE-Lite R等でPCに接続し、26番ピンをGNDに落とした状態(基板にタクトスイッチをつけておくとよい)で、リセット(TWE-Lite Rの場合は、リセットスイッチを押す)
--- 注意:TWE-Lite R を5ピン接続している場合は、USBから電源が供給されないので、別途、基板への電源供給が必要。

***モノスティックのアプリ変更 [#g8cad29f]
- 出荷時は、標準アプリがインストールされているため、子機側が標準アプリの場合は、そのまま使用する
- 子機側が、無線タグアプリの場合は、モノスティック(親機)も無線タグアプリにする
-- ver.2(App_Tag_bin_2) と ver.1(Samp_Monitor_bin_1)があるので、親機と子機でバージョンを合わせる(合わせなくてもよいらしい)

***子機のアプリ変更 [#aff0c544]
- TWE-lite-Rで接続して、TWE Programmerを使用
-- 注意:TWE-Lite R を5ピン接続している場合は、USBから電源が供給されないので、別途、基板への電源供給が必要
-- ver.1.5 以降では、option bits = 0x000004** を設定する(起動時のOTAを禁止)
-- ver.2には、BLUE(標準出力)用とRED(高出力)用の2種類が用意されている。通常はBLUEを使用

*Bluetooth関係 [#ba1b2227]
***RBT-001のUART通信速度設定 [#vca16929]
- マイクロテクニカRBT-001(Bluetooth2 - シリアルモジュール)のUART通信速度を変更するとき、PCのシリアル端末のスピードを、RBT-001の初期値(工場出荷時は9600)に設定し、設定変更コマンドを送信(3年生自主課題研究では230400)。
-- 結果がRxできていることを悪人する必要がある。設定コマンドが受け付けられていない場合は、Txのみが表示され、Rxが表示されない。
-- 設定は、電源を入れ直した後で反映されることに注意。

*計測関係 [#x4bd5782]

***SMUを用いた電流シンク [#k34895c3]
-SMUを電流負荷として使用する場合は、電流の精度が低いと、電流源負荷側から誤った電圧を出力してまともな測定ができないことがある(通常、正負の電圧リミットに振り切れる)。正しい電流レンジを設定することにより、シンク電流の制御精度を上げて、測定に必要な負荷電流と出力電圧を維持することができる場合が多い。

*工作関係 [#od6a41bd]

***レーザカッタの作図 (CorelDraw) [#q8d83faf]
-CorelDrawの極細赤線で書くと、切り線になる。
-周囲にでこぼこを作りたいときは、四角を貼り合わせて、一辺の線が完全に重なり合うようにする
-左のツールバーで、上から3番目(トリミング)のボタンをクリック - メニューが表示されるので、仮想セグメントの削除を選択
-線が重なっている部分にマウスカーソルを近づけると、カッターのアイコンが縦になる
-線の上をクリックすると、線が重なっている部分が削除され、四角形が一体化する

***BNCとSMAケーブルの作り方 [#f4218c78]
[[こちらに公開:http://jaco.ec.t.kanazawa-u.ac.jp/edu/index.php?BNC%E3%81%A8SMA%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB]]

*** 2014.05.01: ワイヤーボンダーの基板は無電解金フラッシュ仕上げ [#aebbd3b1]
ワイヤーボンダーを行う基板は、ボンディングランド部分を無電解金フラッシュ仕上げにすること。簡易説明書に書き忘れていた。

***近視老眼による半田付け [#s47c7279]
-近視の人は眼鏡を外して半田づけしてみましょう。視力の良い人より半田がうまく付けられる可能性があります。ただし、目が半田溶融部に近くなるので、フラックス等が目に入らないように注意。

老眼の場合、近視用眼鏡をしていると50cm-60cm離れた物しか見えないのですが、眼鏡を取ると、2-3cmのところにフォーカスが来ます。この状態だと、至近距離のため物が大きく見え、正確に半田付けを制御できます。半田付けのポイントは、半田の量と溶け具合を把握することですが、小さなパッド面積では、目が良くても溶け具合の把握が難しいので、精密工作用のレンズを使用するか、至近距離で見える目を持つことが必要です。フラックスで目がやられることだけ注意すれば、SSOP, 0.5mmQFPのほか、QFNやMLFでも半田付けできるようになります。

***表面実装パッケージの半田付け [#ha483cdb]
SSOP, QFPなどの表面実装パッケージの半田付け手順
- ランド周辺にフラックスを塗る
- ランドに半田を薄く付ける(複数本同時に付けて問題ない)
- パッケージの位置を合わせて、角のピンを半田で固定する(固定できていればきっちり付いてなくてもよい)
- 対角のピンも半田で固定する
- 1本ずつピンの先端付近に半田を盛って半田を付けていく(先に固定したピンもしっかり付ける)
- テスターでランドとパッケージピンの間の導通、隣接ピンのショートの有無を確認する

QFN, MLFの場合は、位置合わせまで行ったら、ピンセットで抑えて、ホットエアSMD除去機で加熱する。この場合、導通確認は難しいが、ショートの確認は可能。

***PCBEによるGerberデータの出力 [#q94d1f07]
某P版.comに基板製造を発注したところ、拡張Gerberフォーマットで設計データを出して下さいと言われました。研究室でよく使用されているPCBE ver.0.4では、拡張Gerberフォーマットに対応していないため、PCBE ver.0.4で設計したPCBE0.4形式データを、PCBE ver.0.5で読んで、拡張Gerberデータを出力し、製造発注したところ、うまく製造できるようです。拡張Gerberデータの出力手順については、
http://jaco.ec.t.kanazawa-u.ac.jp/edu/vlsi/pcbe/
に書いておきました。

*Microsoft Windows10 関係 [#r0c1ba17]

*** スタートメニューの再インストール [#w672409e]

なぜかスタートメニューが開かなくなって不便なので(よくあることらしい)、再インストールした。

- Windowsアイコン(左下)を右クリックして、タスクマネージャーを起動し、詳細表示モードにする
- メニューより、ファイル - 新しいタスクの実行
- 管理者特権を付与するチェックボックスにチェックを入れて、powershell を実行
- 下記のコマンドをコピペ(実行しない)

cmd /c ren %USERPROFILE%\AppData\Local\Packages\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy.old

- タスクマネーシャーで、エクスプローラのタスクを終了
- 先ほどコピペしたコマンドを実行
- Powersehll で explorer を実行

*** ウインドウ内で Power Point のスライドショーを行う [#s04f9a34]

Power Pointのスライドショーを実行すると、全画面表示となるため、動画のライブ配信や他のソフトを操作しながらプレゼンテーションを行う際に、操作がしにくい問題がある。下記のように1個のWindows内でスライドショーを実行すると、スライドショーを止めずに他のソフトを操作することができる。

- Power Pointのメニューから、スライドショー - スライドショーの設定を選択
- スライドショーの設定画面で、種類を「出席者として閲覧する」を選択してOKをクリック
- この状態でスライドショーを開始すると、ウインドウ内でスライドショーが起動するので、ウインドウサイズを適当に調整する
-- この状態で保存を行うと、次回もウインド内で表示するモードで駆動される

*** NASの共有フォルダが開けない [#m551a812]
Windows10からNASは見えているが、共有フォルダを開こうとすると、経路が見つからないというエラーになる場合がある(なぜか、認証時に自動で資格情報が追加されてエラーにならない場合もある)。認証フォームが立ち上がらず、エラーが表示されるまたは応答がない場合は、以下の手順で、資格情報を手動追加する。
- コントロールパネルを開く
-- ユーザアカウントをクリック
-- 資格情報の管理をクリック
-- Windows資格情報をクリック
-- Windows資格情報の追加をクリック
--- ネットワークのアドレス(NASのサーバ名またはIPアドレス)、(NASの)ユーザ名、パスワードを入力して、OKボタンをクリック

*** NASに接続できない [#w92532ed]
Windows10のバージョンを上げたら、古いNASに接続できない場合がある。Windows10では、SMBv2以上のNASでないと接続できないので、NASのファームウエアをアップデートしても問題が解決しない場合は、以下の手順でWindows10のSMBv1を有効にする(Windows10 ver.1909の例)。
- 設定
-- アプリと機能
- 関連設定
-- プログラムと機能
- Windowsの機能の有効化または無効化
-- SMB 1.0/CIFSファイル共有のサポート 
---SMB 1.0/CIFSクライアントのチェック
-OKボタン+再起動

*** ネットワークドライブの削除 [#xc1a542e]
Windows10では、接続できないネットワークドライブが表示されて、エクスプローラのGUIで削除できない場合がある。この状態では、再接続を試みるためか、エクスプローラが重くなるので、以下のようにドライブの割り当てを解除する。
- コマンドプロンプトで、 > net use Z: /delete (Zは切断するネットワークドライブ)
- これで、解除されない場合は、> net use Z: /PERSYSTENT:NO

*** X11クライアント [#k3aa92af]
リモートでXwindowを使用するとき、VNCかXmingを使用していたが、安定性がよくないため、MobaXterm を試してみたところ、安定性もよく、高機能なので乗り換えた。設定解説を[[VDEC北陸支部のWiki:http://vla.ec.t.kanazawa-u.ac.jp/vdec-kanazawa/index.php?Windows%A5%EA%A5%E2%A1%BC%A5%C8%B4%C4%B6%AD]]に掲載。

Cadece ICツールを使用する場合は、X11の設定で、OpenGL acceleration = None にしないと、CADツールが落ちるので要注意。

*** プリインストールアプリの削除 [#cecee7e1]
プリインストールアプリは、設定画面やコントロールパネルでは削除できないため、Power Shellで以下のコマンドを実行。
- Get-AppxPackage
- または、Get-AppxPackage | Select-String キーワード
- インストール情報のリストから削除対象のアプリ_バージョン(例:Microsoft.Office.OneNote_***)を探し、PackageFullNameをコピーしておく
- Remove-AppxPackage 先程探したPackageFullName

これを行う状況の例:Windows10には、何種類かのストアアプリがプリインストールされている。ストアアプリ版OneNoteもプリインストールされているが、これは、ログインアカウントをマイクロソフトアカウントからローカルアカウントに変更すると起動しなくなる。また、ローカルアカウントから関連付けしても復活できない。ただし、デスクトップ版OneNoteでは、この現象は起こらない。起動しなくなったOneNoteは、一旦削除して、Windowsストアから再インストール(無料)すると、起動できるようになる。ただし、再インストールしてもローカルアカウントでは起動しない。

*** MS-IMEの変換が異常に遅い場合の対処 [#oe90272d]

MS-IMEをしばらく使っていると、変換時間が遅くなり、キーボード入力の妨げとなることがある。予測変換に時間がかかっていると思われる。
- MS-IMEのメニューでプロパティを選択
- 詳細設定ボタンをクリック
- 予測入力タブをクリック
- 予測候補を表示するまでの文字数の数値を15にする(初期値では3)

*** ローカルアカウントとマイクロソフトアカウント [#k86b53e2]

Windowsのアカウントには、PCに独自に設定したローカルアカウントとストアアプリを利用するときに必要なマイクロソフトアカウントがある。マイクロソフトアカウントを使用して、PCにユーザを作成した場合、ユーザ名がマイクロソフトに登録したままの名前になる。日本語で登録した場合、ユーザ名とホームディレクトリ名が日本語になり、日本語非対応のソフトなどが動作しない等の不都合がある。回避方法として下記が考えられる。
- マイクロソフトアカウントの氏名を英語に変更する
-- マイクロソフト社のホームページ右上でサインイン
-- 右上メニューからアカウントを表示
-- 基本情報で名前の編集
- 好きなユーザ名でローカルアカウントを作成し、後で設定画面からマイクロソフトアカウントでのサインイン方式に切り替える
-- この方法では、ユーザ名はマイクロソフトアカウント名に変更されるが、ホームディレクトリ名はローカルアカウントのユーザ名となる

*** ローカルアカウントのBitLockerエラー [#aea79f1b]
Windows8.1 の初期設定で、マイクロソフトアカウントではなく、ローカルアカウントを作成すると、システムドライブのBitLockerが実行できないようで、ドライブエラーとなる(! マークが付くのでわかる)。そのまま使っても問題ないのだが、気持ちが悪いので、マイクロソフトアカウントを関連付けると解消される。しかし、エラーのまま(ローカルアカウントのまま)Windows10にアップグレードすると、BitLocker解除も実行もできなくなり、エラーをクリアすることができず、Windows8.1再インストールとなる。もしかすると、Windows10のBitLocker解除方法があるのかもしれないが。

*** パブリックネットワークとプライベートネットワーク [#efe5576e]

Windows7/8からWindows10に移行すると、ネットワーク設定が少し変更されていて、設定フォームが見つからないことがあるので、こちらにまとめておく。デフォルトでは、パブリックネットワークに設定されているらしい。

- 使用中のネットワーク場所の確認
-- スタートメニュー等から[設定](または[全ての設定])を開く
-ー [ネットワークとインターネット]をクリック
-- 右列のリストで[ネットワークと共有センター]をクリック
-- アクティブなネットワークの表示欄にネットワーク場所の種別が表される
--- パブリックネットワーク:公共Wi-Fiなど
--- プライベートネットワーク:ホームネットワーク、社内ネットワークなど
- パブリックネットワークとプライベートネットワークの切り替え
-- スタートメニュー等から[設定](または[全ての設定])を開く
-- [ネットワークとインターネット]をクリック
-- 左列のリストで[イーサネット]をクリック
-- 接続済みのアダプターをクリック
-- このPCを検出可能にする欄の下のスイッチのON/OFFを切り替える
- NETBIOSの設定(社内ネットワークなどで他のPCとファイル共有をしない場合)
-- 上述のネットワークと共有センターの、アクティブなネットワーク欄に表示されている接続(例:ローカルエリア接続)をクリック
-- [Microsoftネットワーク用ファイルとプリンター共有]のチェックを外す
-- インターネット プロトコル バージョン 4 (TXP/IPv4)を選んで、プロパティボタンをクリック
-- [詳細設定...]をクリック
-- WINSタブをクリック
-- NetBIOS設定欄で[NetBIOS over TCP/IPを無効にする]を選択して、OKボタンをクリック

*** HHK キーボードのBluetooth接続 [#v9a97019]
- PFUの Happy Hacking KeyboardをBluetooth接続するとき、初回は、PINが画面上に表示されるのでそれを入力すればよい。しかし、そこで接続に失敗したりキャンセルするとPINコードが表示されなくなるため再設定ができない。
- 対処方法
-- Bluetooth接続時にPINコードの入力を要求されたら0000を入力
-- HHKのほうでも、0000 + Enter

*** キーボード種類の切り替え [#z0cf9f6b]
- 日本語キーボードと英語キーボードを切り替えたい場合以下の手順となる
-- キーボードの変更(対応するキーボードがインストールされている場合)
--- 全ての設定 - 時刻と言語 - 地域と言語 - 日本語 - オプション - レイアウトを変更する
--- キーボードを選んでサインアウトクリックすると再起動される
-- キーボードの追加(対応するキーボードがインストールされていない場合)
--- 全ての設定 - 時刻と言語 - 地域と言語 - 言語を追加する
--- 言語を選択
--- 追加した言語をクリック - オプション - オプション - レイアウトを変更する
--- キーボードを選んでサインアウトクリックすると再起動される

*** 所属組織(WORKGROUP)の変更 [#r269f1f3]
- Windowsは、デフォルトで組織=WORKGROUPとなっている。このままでも問題ないが、職場への接続ではなく、複数台でワークグループを作りたいとき、Windows10では、全ての設定 - システム - バージョン情報 では、変更できない。(PCの名は変更できる)。ワークグループの変更方法は下記のとおり。
-- 全ての設定 - システム - バージョン情報 - システム情報 - 設定の変更 - 変更...ボタン
-- ワークグループを設定してOKボタン

*** ソフトウエアキーボードをハードウエアキーボードと同じ配列にする [#kaffcb47]
入力しやすいかどうかは別として、ソフトウエアキーボードをハードウエアキーボードと同じ配列にする場合。
- 全ての設定 - デバイス - 入力 - ハードウエアキーボードに準拠したレイアウトをタッチキーボードオプションとして追加する=ON
- ソフトウエアキーボードを表示 - 右下のキーボードアイコン - 一番右のキーボードアイコンを選択

*Microsoft Windows7 関係 [#i45da6b7]

*** マウスカーソルをキャプチャーしたいとき [#aa12649f]
スタート - アクセサリ - コンピュータの簡単操作 で、拡大鏡を起動拡大鏡のウインドウにマウスカーソルを表示した状態で、スクリーンキャプチャーする。

*** デスクトップに一時的においたファイルが削除できないとき [#v0e8af1c]
デスクトップに一時的においたファイルを編集した後、削除ができなくなることがある。但し、この現象が起きるマシンとそうでない名心があるようで、特定マシンで頻繁に起きる。対策は、他のAdministratorアカウントで、ユーザフォルダの相当ファイルを削除する。コマンドラインでの実行は、

- runas /user:hogehoge cmd (hogehogeはAdministratorアカウント名)
- パスワード入力
- hogehogeのコマンド端末で削除を実行

*** ログイン時にNASに自動接続できないとき [#o031af23]
NASへの接続のためパスワードを保存設定するようにしておいても、「ネットワークドライブに再接続できませんでした」と表示され、接続ができないことがある。WindowsのバージョンやWindowsの更新状態にも依存しているようだ。いろいろな対処法が考えられるが、簡単な方法は以下の通り。Windows7 64bit Ultimate で動作確認(このバージョンは、金沢大学のMS包括ライセンス協定で提供されている)

- コントロールパネル > ユーザーアカウントと家族のための安全設定 > 資格情報マネーージャー
- Windows資格情報の追加
- NASのサーバ名、ユーザ名、パスワードなどを設定してOKボタン
-- 以上の方法は、アカウントごとに行う必要がある

*** ATOKの言語バーが消える [#m35d7c88]
ATOK2010以降変換精度が低いという噂があり(辞書の引き継ぎの問題では?)、ATOK2009を使い続けている人が多い。しかし、Windows7では、ATOK2009の言語バーが消えて使えなくなることがある。私の場合、Windows7 (64bit)でこの現象を確認した。ただし、この現象が出たのは、Dell OPTIPLEX のみで、他のマシンでは問題なく動作している。応急対処法は以下のとおり。

- コントロールパネル > キーボードまたは入力方法の変更
- キーボードの変更...ボタン
- ATOK2009を選んで、プロパティボタンをクリック
- ATOKプロパティウインドウの設定項目から、表示・ATOKナビを選ぶ
- カーソル位置に入力モードを表示欄で、"しない"を選択
- OKボタンで設定終了

*** 2015.02.22: winmail.datの対処 [#ac855135]
Microsoft outlook から送信されたメールを受信すると、winmail.datという添付ファイルになっていることがある。このままでは、添付ファイルが読めないので、Gmailに転送して読む。専用のリーダソフトもあるようだが、稀に来るwinmail.datのために専用ソフトをインストールするのは面倒だ。

*Microsoft Office関係 [#m274bdae]

*** Visioから図を綺麗に書き出す [#jef22c6d]
Visioで図面を作成して、pptやTeXで利用するとき、クリップボードを経由すると解像度が悪くなるため、emfまたはpngファイルとして書き出す。ただし、pngに書き出す場合は、下記のような設定をしないと解像度が落ちる。
+出力する図を選択
+メニューより、[ファイル] - [名前を付けて保存...]
+ファイルの種類を、pngに設定し、ファイル名を付けて、保存簿やンをクリック
+PNG出力オプションフォームで、解像度をプリンタに設定(ユーザ設定で値を入れてもよい)
+サイズをソースに設定(または、必要な大きさになるように、ユーザ設定で値を入力)
+OKボタンをクリックして保存

*** Wordに背景を貼り付ける [#y783967e]
事務文書や推薦書などの専用様式が印刷物で提供されることが多い。スキャンした画像を背景として設定し、上に文字を入力すれば、プリント時の位置合わせの必要が無くなって便利だが、Microsoft Officeには、表だってこの機能が用意されていない。Wordの背景にスキャンした画像を貼り付けるには下記のようにする。
-Word 2013
+メニューより、デザイン-ページ背景欄の「透かし」-ユーザ設定の透かし
+図のラジオボタンをクリックして図の選択...(オフライン作業をクリックすると時間短縮できる)
+背景図のファイルを指定
+倍率=100%, にじみ=チェックしない-OK
+メニューより、挿入-ヘッダーとフッター欄の「ヘッダー」-ヘッダーの編集
+ヘッダー欄とフッター欄が表示される
+図を左クリックすると、図のサイズや位置を調整できる
+図を右クリックして、図の書式設定-色のリストボックス=白黒、などを選ぶ(ウオッシュアウト)
+設定が終わったら、ヘッダーとフッターを閉じるボタンをクリック(背景は少し薄く表示されるが問題はない)

-- 参考:Woed 2010から2013で、ページレイアウトのメニューが一部デザインに移されている。以前あったレイアウト関係メニューが見つからない場合は、デザインを探してみると良い。

-Word 2010
+メニューより、ページレイアウト-ページの背景欄の「透かし」-ユーザ設定の透かし
+図のラジオボタンをクリックして図の選択...
+背景図のファイルを指定(倍率=100%, にじみ=チェックしない)-OK
+メニューより、挿入-ヘッダーとフッター欄の「ヘッダー」-ヘッダーの編集
+ヘッダー欄とフッター欄が表示される
+図を左クリックすると、図のサイズや位置を調整できる
+図を右クリックして、図の書式設定-色のリストボックス=白黒、などを選ぶ(デフォルトではウオッシュアウト)
+設定が終わったら、ヘッダーとフッターを閉じるボタンをクリック

*** Officeでよく使う操作をアイコン化する [#y6b56763]
Office2003以降、ツールバーがなくなりリボンで各種操作を行うようになった。よく使う機能をツールバーにアイコンとして並べておくと便利なのだが、Office2003以降では、リボンよりも、クイックアクセスツールバーにアイコン登録しておくほうが便利。
+ウインドウ上部のクイックアクセスツールバー右端の逆三角記号(ユーザ設定)をクリックし、リボンの下に表示をチェック(リボンの上に表示した方が使いやすい人もいるかもしれない)
+クイックアクセスツールバー右端の逆三角記号(ユーザ設定)をクリックし、その他のコマンドを選択
+コマンド選択のリストボックスで、全てのコマンドを選択
+クイックアクセスツールバーに表示したい操作を選んで、追加ボタンをクリック
-PowerPoint, Word, Excelのクイックアクセスツールバーに、上付き、下付き、シンボルフォントを設定、くらいを登録しておくと便利

* Android関係 [#a3c41ce9]

*** 2015.02.08: NEXUSのスリープモード無効化 [#aa660ff2]
タブレットを表示器に使用する場合などは、スリープモードにならないようにする。設定画面 - {}開発者向けオプション - スリープモードにしないをチェック。開発者向けオプションは、デフォルトでは使用できないので、「Nexus7 への自作プログラムのインストール」の項を参照して、開発者になっておくこと。

*** 2015.02.21: Androidのバックライトを付けたままにする [#u499b610]
Android の画面は操作しないと消灯になり、最大30分まで設定できる。しかし、表示器として使用する場合には、点灯したままにしたい。Backlight Switchというアプリを使用して、指定アプリの起動時に、消灯しないように設定することができる。

*** Nexus7 への自作プログラムのインストール [#ic2cd52e]

Eclipse環境で開発したAndroidアプリケーションをスマホに転送するのは、スマホをUSB接続した状態で、Eclipseでアプリを実行し、エミュレータと接続された実機の接続画面で、実行したい機種を選択するだけというお手軽さだが、Google Nexus は少し手順が必要だ。Android端末は、PCにUSB接続すると、自動的にストレージと認識され音声や動画をUSBメモリと同じように転送できるが、Androidのシステムとして認識させるためにはPC側にドライバーをインストールする必要がある。一旦、Androidとして認識させると、DDMSから実機上でのデバッグが可能となり、これほど楽ちんな開発環境は、見たことがないほどだ。

手順は下記のような感じ。検索すると色々な手順が示されていて、Adnroidのバージョンにも依存するようだ。

- Nexus7で設定 - タブレット情報 - ビルド番号を表示させ、ビルド番号を何度かタップすると、デベロッパーになるには後何ステップのような表示が出る
- タップを繰り返すと、設定画面に、開発者向けオプションの項目が追加される 開発者向けオプションに入り、右上のスイッチがONになっていることを確認
- USBデバッグのチェックを入れる
- 設定画面から、セキュリティ画面に入り、提供元不明のアプリにチェックを入れる
- USBケーブルでPCと接続すると、WindowsのデバイスマネージャーにNexus7が不明なデバイスとして表示されるので、これを右クリックしてメニューから"ドライバーソフトウエアの更新"を選ぶ
- "コンピュータを参照してドライバーソフトウエアを検索します"を選択
- "次の場所でドライバーソフトウエアを検索します"の参照ボタンで、ユーザディレクトリ配下の(Android SDKをインストールした場所)、android-sdks\extras\usb_driverを選ぶ
- サブフォルダーも検索するにチェックを入れて、次へボタンをクリックする
- ドライバのインストールが完了するとデバイスマネージャーにAndroid Deviceが表示される
- Nexus7が、USBデバッグを許可するか聞いてくるのでOKする
- EclipseでRunまたはDebugさせると、Android Devices Chooser が起動し、起動中のエミュレータおよび接続されたデバイスのリストが表示される
- Nexus7を選んでOKをクリックすると、アプリがそのデバイスに転送および実行される
- 実機で実行されていてもブレークポイントやログは有効である。さらに、PerspectiveをDDMS(Dalvik Debug Monitor Service)モードにすると、より詳細な実機の状態をPC側でモニタすることができる 

*** ソフトウエアキーボードの制御 [#t996d9f4]

Androidスマートフォンで文字入力入力(エディットテキスト)にフォーカスすると、自動的にソフトキーボードが起動する。しかし、初期状態で起動されると都合の悪い場合がある。画面が余っていれば、下の方をソフトキーボードエリアとして残しておけば使い勝手がよいが、起動画面に多くの情報を表示する場合、最初からソフトウエアキーボードで画面が隠れるのは避けたい。この場合は、表示設定処理の前に下記のような記述を入れる。android.view.WindowManager.LayoutParamsインポートすること。

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // Suppress the soft keyboard(追加部分)
       getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        // Set the activity contents(表示設定)
        setContentView(R.layout.activity_main);
    }

*** NULL文字列の取り扱い [#r38f5378]

テキストボックスに何も入力されなかった場合の処理が必要な場合が多いが、空の文字列の判定でエラーを出すことが意外と多い。メモリに割り当てられたインスタンス(オブジェクト)の文字列の空と、変数宣言における空、または、オブジェクト同士を比較したことによるシンタクスエラーだが(英語の"a"と"the"の違いと同じ)。無いということ自体が抽象的概念であるため、混乱しやすい。以下のように判定を行うと覚えておくことにする。

                EditText inputNum  = (EditText) findViewById(R.id.editTextInputNum);
		String inputText = inputNum.getText().toString();
                // 空文字の判定部分
		if(inputText.equals("")) inputText = "0";

つまり、imputTextオブジェクトの文字を""と比較している。例えば、if(inputText == "")としたのでは、別のオブジェクト(ポインタ)の比較なのでNG。当然、インスタンスを持たないnullとの比較もNGとなる。

* VB/C#.NET関係 [#z6ca7250]

自作の計測システムを手っ取り早く作成するためのPCのプログラミング方法をまとめておく。市販の計測器を組み合わせてシステム化する場合は、LabViewを使用するのが効率的だが、自作の回路基板をPCと接続するには、シリアル接続 + 自作プログラムのほうが簡便。こうしておけば、ZigBeeやBluetoothによる無線化も容易に実現できる。~
VB(Visual Basic)使いの学生はあまり見かけないが、電子情報分野以外のPCユーザにはVBが普及しており、また、市販計測器のマニュアルには、大抵BASICのプログラム例が掲載されていて、慣れている人が多いという事情からVB.NETの例を示す。C#でも殆ど違いはない。

*** 数値の変換 [#n3d3b214]

Stringから整数, 実数
    adc16  = Short.Parse(rcvData)
    adc32  = Integer.Parse(rcvData)
    offset = Double.Parse(calData)

整数からString
    '固定小数点3桁
    Label1.Text = offset.ToString("F3")

*** 待ち時間 [#i208bb58]

    System.Threading.Thread.Sleep(ミリ秒)

*** シリアルポートの利用 [#j6a2ef81]
フォームにSerialPortとComboBoxを配置し、ComboBox_Portをいう名前にしたと想定。ComboBox_Portには、現在使えるポート番号一覧を表示する。

    '起動フォームのクラスより前にインポート
    Imports System.IO

    'データの受信用バッファを想定
    Dim rcvDataStr As String 

    '起動処理
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'ポート番号用の配列
        Dim PortList As String()
        '利用可能なシリアルポート名の配列を取得
        PortList = IO.Ports.SerialPort.GetPortNames()
         'シリアルポート番号リストの表示をクリア
        ComboBox_Port.Items.Clear()
        Dim PortName As String
        'シリアルポート名をコンボボックスにセット
        For Each PortName In PortList
            ComboBox_Port.Items.Add(PortName)
        Next PortName
         'シリアルポートの初期選択(任意)
        If ComboBox_Port.Items.Count > 0 Then
            ComboBox_Port.SelectedIndex = 0
        End If
    End Sub

    '終了処理(フォームが閉じられたとき)
    Private Sub Form1_Close(sender As System.Object, e As System.EventArgs) Handles MyBase.FormClosing
        'シリアルポートの状態確認
        If SerialPort1.IsOpen = True Then
            '制御対象のデバイスの停止命令送信の例
            SerialPort1.Write("stop" + Chr(13) + Chr(10))
            'シリアルポートのクローズ
            SerialPort1.Close()
        End If
        'フォームの終了
        Me.Close()
    End Sub

    'COMポートのオープン/クローズの実行
    Private Sub Button_Com_Click(sender As System.Object, e As System.EventArgs) Handles Button_Com.Click
        If SerialPort1.IsOpen = False Then
            'ドロップダウンリストによるシリアルポートの設定
            If ComboBox_Port.SelectedItem = "" Then
                MessageBox.Show("デバイスをPCに接続してから本プログラムを再起動してください", "Error", MessageBoxButtons.OK)
            Else
                SerialPort1.PortName = ComboBox_Port.SelectedItem
            End If
            'シリアルポートのオープン
            Try
                SerialPort1.Open()
            Catch ex As Exception
                MessageBox.Show(ex.Message, "シリアルポート開始エラー", _
                    MessageBoxButtons.OK, _
                    MessageBoxIcon.Error, _
                    MessageBoxDefaultButton.Button3)
            End Try
        Else
            SerialPort1.Write("stop" + Chr(13) + Chr(10))   'stopコマンドの送信
            rcvDataStr = SerialPort1.ReadExisting()         '受信バッファのクリア
            rcvDataStr = ""                                 '受信変数のクリア
            'シリアルポートのクローズ
            SerialPort1.Close()
        End If
    End Sub

*** シリアルポートを使用する前の確認 [#wbfdaa94]
面倒でも、シリアルポートにコマンドを送る前に実行するとよい。

    'データの受信用バッファを想定
    Dim rcvDataStr As String 

        'シリアルポートの確認
        If SerialPort1.IsOpen = False Then
            MessageBox.Show("シリアルポートが開いていません", "Error", MessageBoxButtons.OK)
        Else
            rcvDataStr = SerialPort1.ReadExisting()         '受信バッファのクリア
            rcvDataStr = ""                                 '受信変数のクリア
            SerialPort1.Write("start" + Chr(13) + Chr(10))  'startコマンドの送信を想定
        End If

*** 多チャンネル化 [#wb2bf5b3]
多チャネル化を行う場所は2カ所考えられる。(1)センサの多チャンネル化(マイコンの入力ポートを増やす)、(2)PCの多チャンネル化(シリアルポートを増やす)。(1)はクロック精度での同時性を保障することができる。(2)は、空間的に分散させることができる。通常、1つのシリアルポートに1つの計測制御ソフトを用意し、さらに複数の計測制御ソフト1つのソフトで制御する構成が便利である。作例をに示す。

#ref(key_ctrl.png)
上段左から、計測ソフトの起動、一斉スタート(モード1)、一斉ストップ(モード2)、一斉ストップ、下段左から、状態表示欄、起動しているプロセスIDリストの表示欄。ただし、プロセス間の実行命令時刻は、10ms程度ズレが生じるため、マイコン基板にRTCを搭載(32.768kHzが多い)してもよいが、面倒な割には精度は上がらない。時刻確認のためのタイムスタンプ機能(クリックするとPC側の時刻をデータに追加する)も搭載している。コード例は、他の項目で機能毎に分解して紹介する。


*** 他フォームの表示と終了 [#g7681371]
フォームの開始
        Dim f As New Form2()
        f.Show(Me)

フォームの終了
        Me.Close()

*** 他のプログラムの起動 [#r11746c4]
フォームにProcessを配置する。

        'TEST.exeプログラムを起動
        'Microsoft.VisualBasic.Interaction.Shell("TEST.exe", AppWinStyle.NormalFocus)
        Process.Start("TEST.exe")

        'プログラムを起動したことをStatusStripのLabelに表示(無くてもよい)
        ToolStripStatusLabel1.Text = "New TEST is invoked"

*** プロセスIDの取得と表示 [#d876a4b5]

フォームにComboBoxとProcessを配置する。現在起動しているTEST.exeのプロセスIDを取得して、ComboBoxのリストに表示する。

    'フォームのClass
    Dim procID(32) As Integer   '動作中のTEST.exeのProcess ID
    Dim Nproc As Integer        '動作中のTEST.exeのプロセス数

    '先に起動していたプロセスIDの取得
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'FVSプロセスのリスト作成
        getID()
    End Sub

    'プロセスの起動毎に、getID()を実行する

    'プロセスIDの取得とComboBoxへのリスト表示
    Private Sub getID()
        Dim processes() As Process
        'Processの再チェック
        processes = Process.GetProcesses()
        'TESTプロセスのリスト再作成
        ComboBox1.Items.Clear()
        ComboBox1.Text = "TEST Process ID"
        Nproc = 0
        For i As Integer = 0 To processes.Count - 1
            If processes(i).ProcessName = "TEST" Then
                procID(Nproc) = processes(i).Id
                ComboBox1.Items.Add(procID(Nproc).ToString())
                Nproc = Nproc + 1
            End If
        Next
        ToolStripStatusLabel2.Text = Nproc.ToString()
    End Sub

*** 複数のプログラムへのコマンドの通知 [#ifcc6900]

        'コマンドを送るプロセスのリスト作成(プロセスIDの取得の項参照)
        getID()
        '例えば、[CTRL] + [s] を子プロセスのあるコマンド1に割り当ててあるとする
        For i = 0 To Nproc - 1
            AppActivate(procID(i))
            SendKeys.Send("^s")
        Next
        ToolStripStatusLabel3.Text = "Running in mode 1"
        '必要ならフォーカスを制御元である自分に戻す
        Me.Activate()

*** ホットキーの作成 [#tc1a992f]
フォーカスの有無にかかわらず、ホットキーのポーリングを行うには、(1) GetAsyncKeyState API関数, (2) RegisterHotKey API関数, の方法が一般的だが、実際に実装してみると、かなり処理が重い。計測の開始、停止を制御するだけであれば、フォーカスを持つフォームのキーイベントを受け取れればよいことが多いので、下記のような簡便な方法でも対応可能。

    'キーイベントの取得
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
        'コマンドを送るプロセスのリスト作成(プロセスIDの取得の項参照)
        getID()
        'Form1に対してMe.KeyPreview = Trueにしておくこと
        If e.KeyCode = Keys.T Then    '[CTRL] + [t] でコマンド1開始
            If e.Control Then
                For i = 0 To Nproc - 1
                    AppActivate(procID(i))
                    SendKeys.Send("^t")
                Next
                ToolStripStatusLabel3.Text = "Running in mode 1"
            End If
        ElseIf e.KeyCode = Keys.S Then    '[CTRL] + [s] でコマンド2開始
            If e.Control Then
                For i = 0 To Nproc - 1
                    AppActivate(procID(i))
                    SendKeys.Send("^s")
                Next
                ToolStripStatusLabel3.Text = "Running in mode 2"
            End If
        ElseIf e.KeyCode = Keys.X Then    '[CTRL] + [x] でコマンド停止
            If e.Control Then
                For i = 0 To Nproc - 1
                    AppActivate(procID(i))
                    SendKeys.Send("^x")
                Next
                ToolStripStatusLabel3.Text = "Stopped"
            End If
        End If
        '次のキーイベントを受け取るため、フォーカスを自分に戻しておく
        Me.Activate()
    End Sub

*** データのファイル読み出し [#kf06524f]
フォームにOpenFileDialogを配置。

    '起動フォームのクラスより前にインポート
    Imports System.IO

    Private Sub ReadCSV(ByRef DataLine() As String)
        OpenFileDialog1.FileName = "calibration_data.csv"
        OpenFileDialog1.Filter = "CSVファイル|*.csv|全てのファイル|*.*"
        If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            Using reader As New StreamReader(OpenFileDialog1.FileName)
                For i As Integer = 0 To calEL
                    DataLine(i) = reader.ReadLine
                Next
            End Using
        End If
    End Sub

*** データのファイル書きだし [#ua324d32]
フォームにSaveFileDialogを配置。

    '起動フォームのクラスより前にインポート
    Imports System.IO

    Private Sub WriteCSV(ByRef DataLine As String)
        SaveFileDialog1.FileName = "measurement_data.csv"
        SaveFileDialog1.Filter = "CSVファイル|*.csv|全てのファイル|*.*"
        If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            Using writer As New StreamWriter(SaveFileDialog1.FileName)
                writer.Write(DataLine)
            End Using
        End If
    End Sub

*** ファイル名に日付を付けてデータを保存(計測データ保存の基本形) [#ja173cc1]
フォームにSaveFileDialogを配置。

    '起動フォームのクラスより前にインポート
    Imports System.IO

    'ヘッダー文字列の設定
    header = "Input (V), Output (A)" + Chr(13) + Chr(10)
    'データのファイル書き出しルーチンの呼び出し
    saveData(header)

    Private Sub saveData(ByRef header As String)
        SaveFileDialog1.FileName = DateTime.Now.ToString("\d\a\t\ayyyyMMdd-HHmmss") + ".csv"
        SaveFileDialog1.Filter = "CSVファイル|*.csv|全てのファイル|*.*"
        If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            If File.Exists(SaveFileDialog1.FileName) Then
                Dim result As DialogResult
                result = MessageBox.Show("同じ名前のファイルがあります。上書きしますか?", "ファイルの新規作成", MessageBoxButtons.YesNo)
                If result <> Windows.Forms.DialogResult.Yes Then Return
            End If
            '日本語文字コード指定書き込み(Shift-JIS)
            Using writer As New StreamWriter(SaveFileDialog1.FileName, False, System.Text.Encoding.GetEncoding("shift_jis"))
                'ヘッダーの書き込み
                writer.Write(header)            
                'データの書き出し
                For i As Integer = 0 To Nd - 1
                    writer.WriteLine(input(i).ToString() + "," + output(i).ToString())
                Next
            End Using
        End If
    End Sub

*** ヘルプの作成 [#c3ecbb0b]
ヘルプは、HTMLで提供する。インストールしておいたHELPファイルを参照させるか、インターネットを通じてHELPファイルを提供しているURLを参照させる。ヘルプは、頻繁に改訂が必要なため、URLを参照させたほうが便利。

        'HELPファイルのパス指定
        'Dim helpFileName As String = ".\help_files\help.html"
        Dim helpFileName As String = "http://jaco.ec.t.kanazawa-u.ac.jp/j/"

        'HELPファイルのオープン
        Try
            Help.ShowHelp(Me, helpFileName)
        Catch ex As Exception
            MessageBox.Show("ヘルプファイルが見つかりません")
        End Try

*** コマンドラインをEnterキーでシリアルポートに送信 [#xaa2dca5]

    'シリアルポート送信処理
    Private Sub TexBox_Cmd_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox_Cmd.KeyPress
        If e.KeyChar = Chr(13) Then     'Enterキーの判定
            If SerialPort1.IsOpen Then
                If String.IsNullOrEmpty(TextBox_Cmd.Text) = False Then  'TextboxがNullの場合は送信無し
                    Try
                        'シリアルポートからコマンドを送信する.
                        SerialPort1.Write(TextBox_Cmd.Text + Chr(13) + Chr(10))
                        'コマンドボックスをクリアする
                        TextBox_Cmd.Clear()
                    Catch ex As Exception
                        MsgBox(ex.Message)
                    End Try
                    'e.KeyChar = ""          'Enterキーのクリア
                End If
            Else
                MessageBox.Show("シリアルポートが開いていません", "Error", MessageBoxButtons.OK)
            End If
        End If
    End Sub

*** シリアルポート受信内容のテキストボックス表示 [#xaf735de]

    'デリゲートの宣言
    Private Delegate Sub Delegate_RcvDataToTextBox()
    Private Delegate Sub Delegate_logData()

    'シリアルポート受信イベント処理
    Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

        'シリアルポートをオープンしていない場合、処理を行わない.
        If SerialPort1.IsOpen Then
            Try
                '受信バッファの行データ読み出し(ASCII)
                'rcvDataStr = SerialPort1.ReadLine()
                '受信バッファの行データ読み出し(Binary)
                '(配列変数, 配列変数のオフセット(Byte), 読み出しByte数)
                'SerialPort1.Read(rcvDataBin, 0, 16)
                '受信バッファの全データ読み出し
                rcvDataStr = SerialPort1.ReadExisting()
                '
                '受信データの変数処理ルーチンに転送(ASCIIモード受信処理)
                Invoke(New Delegate_logData(AddressOf Me.logData))
                '
                '受信したデータをテキストボックス処理ルーチンに転送
                Invoke(New Delegate_RcvDataToTextBox(AddressOf Me.RcvDataToTextBox))
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        Else
            MessageBox.Show("シリアルポートが開いていません", "Error", MessageBoxButtons.OK)
        End If
    End Sub

    '受信データをテキストボックスの最後に追記する
    Private Sub RcvDataToTextBox()
        If IsNothing(rcvDataStr) = False Then
            TextBox1.AppendText(rcvDataStr)
        End If
    End Sub

    '受信データを処理する
    Private Sub logData()
        '受信データの処理内容
    End Sub

*** ベクトルの描画 [#g3cd8559]

    '起動フォームのクラスより前にインポート
    Imports System.Drawing

    'データ
    Dim X(8), Y(8) As Double

    Private Sub vactorDraw()
        Dim ix(8), iy(8), im(8), norm As Integer
        Dim prsclr(8) As Color      '色分け用変数
        norm = 20                   '表示倍率調整
        '座標の計算
        For i As Integer = 0 To 7
            ix(i) = (X(i) + 125) * norm
            iy(i) = (Y(i) + 125) * norm
            im(i) = Math.Sqrt((X(i) * X(i)) + (Y(i) * Y(i)))
        Next
        '軸の描画
        Dim gport As New Bitmap(PictureBox1.Width, PictureBox1.Height)
        Dim g As Graphics = Graphics.FromImage(gport)
        g.DrawLine(Pens.LightGray, 125, 0, 125, 250)
        g.DrawLine(Pens.LightGray, 0, 125, 250, 125)
        g.DrawEllipse(Pens.LightGray, 94, 94, 62, 62)
        g.DrawEllipse(Pens.LightGray, 62, 62, 125, 125)
        g.DrawEllipse(Pens.LightGray, 31, 31, 187, 187)
        g.DrawEllipse(Pens.LightGray, 0, 0, 250, 250)
        '時間に対するペン色の割り当て
        Dim BPen0 As New Pen(Color.Black, 2)
        Dim BPen1 As New Pen(Color.DimGray, 2)
        Dim BPen2 As New Pen(Color.Gray, 2)
        Dim BPen3 As New Pen(Color.DarkGray, 2)
        Dim BPen4 As New Pen(Color.Silver, 2)
        Dim BPen5 As New Pen(Color.LightGray, 2)
        Dim BPen6 As New Pen(Color.Gainsboro, 2)
        Dim BPen7 As New Pen(Color.WhiteSmoke, 2)
        'ベクトルの→描画
        g.DrawEllipse(BPen7, ix(7) - 2, iy(7) - 2, 4, 4)
        g.DrawLine(BPen7, ix(7), iy(7), 125, 125)
        g.DrawEllipse(BPen6, ix(6) - 2, iy(6) - 2, 4, 4)
        g.DrawLine(BPen6, ix(6), iy(6), 125, 125)
        g.DrawEllipse(BPen5, ix(5) - 2, iy(5) - 2, 4, 4)
        g.DrawLine(BPen5, ix(5), iy(5), 125, 125)
        g.DrawEllipse(BPen4, ix(4) - 2, iy(4) - 2, 4, 4)
        g.DrawLine(BPen4, ix(4), iy(4), 125, 125)
        g.DrawEllipse(BPen3, ix(3) - 2, iy(3) - 2, 4, 4)
        g.DrawLine(BPen3, ix(3), iy(3), 125, 125)
        g.DrawEllipse(BPen2, ix(2) - 2, iy(2) - 2, 4, 4)
        g.DrawLine(BPen2, ix(2), iy(2), 125, 125)
        g.DrawEllipse(BPen1, ix(1) - 2, iy(1) - 2, 4, 4)
        g.DrawLine(BPen1, ix(1), iy(1), 125, 125)
        g.DrawEllipse(BPen0, ix(0) - 2, iy(0) - 2, 4, 4)
        g.DrawLine(BPen1, ix(0), iy(0), 125, 125)
        'オブジェクトの開放
        BPen0.Dispose()
        BPen1.Dispose()
        BPen2.Dispose()
        BPen3.Dispose()
        BPen4.Dispose()
        BPen5.Dispose()
        BPen6.Dispose()
        BPen7.Dispose()
        g.Dispose()
        PictureBox1.Image = gport
    End Sub

*** チャートコントロールによるグラフの表示 [#t7cb6f0d]

    '起動フォームのクラスより前にインポート
    Imports System.Windows.Forms.DataVisualization.Charting

    '過去8点のベクトル描画の例
    Private Sub vectorChart()
        Dim series1 As New Series()
        'チャート表示用変数
        Dim chartMag As Double
        Dim chartDir As Double
        'グラフのタイプを設定
        series1.ChartType = SeriesChartType.Polar
        'データ系列の初期化
        Chart1.Series.Clear()
        'マーカの設定
        series1.MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Star4
        Chart1.Palette = ChartColorPalette.SemiTransparent
        series1.MarkerSize = 20
        'データポイントの設定
        For i As Integer = 0 To 7
            'データ数(pid)がプロット数に足りない場合(0, 0)をデータポイントに設定
            If i > pid Then
                chartMag = 0
                chartDir = 0
            Else
                chartMag = Double.Parse(mag(pid - i)) 
                chartDir = Double.Parse(dir(pid - i))
            End If
            'X-Yデータポイントの追加
            series1.Points.AddXY(chartDir, chartMag)
        Next
        'グラフ出力
        Chart1.Series.Add(series1)
    End Sub

*** Visual Studio Express 2012 のOS互換性エラー [#n57315e5]

Windows 7 (64bit)に Visual Studio Express 2012 for Desktop をインストールして起動すると、OSの互換性に問題があるというメッセージが出る場合がある(出ない場合もある)。patch_KB2781514を適用(エラーメッセージから検索できる)しても、問題が解決しない場合は、Visual Studio 2012 Update 3 により解決する。
http://www.microsoft.com/visualstudio/jpn/visual-studio-update#story-update

* その他 [#v4883135]

*** Ngraph [#h48e5594]
- クリップボードにグラフをコピーすると落ちる
-- Windows10では、クリップボードにコピーするとNgraphが落ちるが、拡張メタファイルではなく、メタファイルの形式ならコピーできる。

- 目盛数字の数が少ない
-- Ngraphは、目盛数字が少ないことが多い(1個だけとか)。軸の目盛り数字の設定だけではなく、スケールの増分を変える必要がある。

- ギリシャ文字を表示
-- %F{Sym}文字 (Symの大文字小文字に注意)

*** レーザーカッター [#m9c29214]
- 2つの図形を接続する
-- レーザーカッターで複雑な形を作成するとき、2つのオブジェクトを接続したい場合が多い。CorelDrawでは、2つのオブジェクトを重ねて置いた後、いらない線を切り取る。
+++左側ツールバーで、整形ツールを選択
+++線上の切るポイントをクリックして選択
+++選択したポイントを右クリックして分割を選択
+++同様にして、反対側の切り取りポイントを設定
+++切り取る線分上を右クリックして、コンテクストメニューから削除を選択
---線の太さ分を残すため、切り取りポイントの選択は、十分拡大して正確に行う。

*** 金沢大学へのVPN接続 [#s6bae72f]

2016年夏より、Cisco VPN のサポートが終了し、F5 Networks に一本化されました。総合メディア基盤センターのVPNサーバにWEBブラウザでアクセスすると、VPN拡張機能がインストールされますが、Microsoft Edgeにはインストールできないようです。また、Google Chrome ver.52以降)にインストールできないようなので、以下のように対応。

-Windows 10
++Microsoftストアで、F5 Accessを検索してインストール
++Windows10のVPN設定ページで「VPN接続を追加する」をクリック
---VPNプロバイダ F5 Access
---接続名 Kanazawa Univ VPN
---サーバー名またはアドレス vpngw02.kanazawa-u.ac.jp

-Android(iOSでも同じ)
++Google Playで、F5 Edge Clientを検索してインストール
++F5 Edge Clientを起動し、「サーバの設定」をタップ
---名前 Kanazawa Univ VPN
---サーバー vpngw02.kanazawa-u.ac.jp
---ユーザ名 金沢大学のネットワークID

*** WinSCPでディレクトリツリーが取得できない [#n2ef4f0c]

とりあえず、下記で接続してみる。

- プロトコル = FTP
- セッションの設定
-- 設定 - FTP - ディレクトリ一覧にMLSDコマンドを使用 = OFF
-- 設定 - 接続 - パッシブモード = ON

*** Google Chromeでプロファイルを元に戻す [#k328d85b]

Chromeでは、アカウントごとに異なるプロファイルが設定できるが、別アカウントで同じプロファイル(ブックマークなど)を共有したい場合も多い。専用のプロファイルがないアカウントで、時々プロファイル作成メッセージが表示され、OKボタンをクリックしてしまうと、新しいプロファイルが紐付けされる。下記の手順で、これを元に戻すことができる。

- 別のアカウントでChromeを起動(右上のアカウント画像で確認・・・枠外のほう)
- 右上のアカウント画像(枠外のほう)をクリックし、メニューから、他のプロファイルに示されている「歯車」アイコンをクリック
- 不要なプロファイルの右上の点アイコンをクリックし、削除を選ぶ(必要なプロファイルを消さないように注意)
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS