2021年4月 1日 (木)

スクリプトラベルを配列に収集する

ページの全アイテムのスクリプトラベルを配列に収集する

InDesign javacript でページ内の全アイテムのスクリプトラベルを集める。

配列のキーにスクリプトラベル、値にオブジェクトを設定する。

/*
 * 指定ページの全アイテムのスクリプトラベルを配列に収集する *
 */
function collectAllLabels(myPage, lblName) {
    var hm = [];
    var myItems= myPage.allPageItems; // ページ中の全アイテムの一覧
    // 配列にラベルをキー、値にオブジェクトとする
    for (var i = 0; i < myItems.length; i++) {
        if (myItems[i].label) {
            hm[myItems[i].label] = myItems[i];
        }
    }
    for (var j = 0; j < lblName.length; j++){
        if (!hm[lblName[j]]) {
            throw new Error("スクリプトラベルに"+lblName[j]+"が見つかりません。\r\n");
        }
    }
    return hm;
}

2021年3月28日 (日)

HD-WLSU2/R1 のRAIDOのリビルト

今回 HD-WLSU2/R1 の HDD を交換して以下のことがわかった。

  1. ドライブナビなるソフトの中に RAID ユーティリティーは入っている。
  2. ドライブを交換して電源接続・PC に接続し電源が入るとリビルドは勝手に始まっている(ような感じ)。

バッファローの USB2.0 外付け HDD の HD-WLSU2/R1 を RAID1 で使用していて片方台の HDD が壊れた(ぽい)ので交換した。

検索してみると RAID ユーティリティーなるプログラムが必要とのことバッファローの Web ページからダウンロードする。

HDD が届いたので壊れた片方を交換し RAID ユーティリティーをインストール&実行するも対応のドライブが見つからない。

ダウンロードしたのは raidutility_4_12_86.exe で新しいシリーズ用らしく使用できない。バッファローのWebページを探したがHD-WLSU2/R1用はない。HD-WLSU2/R1 用には drivenavi_hdwlsu2_101.exe のみ。

RAID のリビルトをあきらめ、RAID の再構成することにする。そこで取説をよく読んでみるとこの中に RAID ユーティリティーが入っていた。

そこで RAID ユーティリティーを実行してみるとリビルドが20%終わっていた。すでにリビルドは開始していたようだ。

 

2020年8月 9日 (日)

Windows10 バックアップ(ファイル履歴)で以前使用していたバックアップドライブに再接続する

Windows10 バックアップ

Windows10のバックアップ(ファイル履歴)で一度外したバックアップドライブに再接続する方法がわからなかったので調べた。
検索では見つからなかったので、バックアップ(ファイル履歴)基本設定とともにメモしておきます。

バックアップを開始する
[設定][更新とセキュリティ][バックアップ][+ドライブの追加]
[ドライブを検索しています]が終わると
[ドライブを選んでください]に変わります
バックアップに使用するドライブを選択する。

設定を変更する
[設定][更新とセキュリティ][バックアップ][その他のオプション]
[ファイルのバックアップを実行] バックアップの実行間隔で規定値は1時間、10分から毎日が選択できる
[バックアップアップを保持] バックアップを保持する期限で規定値は無期限、領域が足りなくなるまで、1か月から2年が選択できる
[バックアップ対象フォルダー] バックアップをしたいフォルダーを追加することができる
[除外するフォルダー] バックアップ対象フォルダーないでバックアップおしないフォルダをを追加する

ファイルを復元する
[設定][更新とセキュリティ][バックアップ][その他のオプション]
[現在のパックアップからファイルを復元]
元の位置にファイルを復元する:右上[歯車]アイコンをクリックし[復元]
別の位置にファイルを復元する:右上[歯車]アイコンをクリックし[復元場所の選択]

バックアップのドライブを外す
[設定][更新とセキュリティ][バックアップ][その他のオプション]
[ドライブの使用を停止]

一度外したバックアップドライブに再接続する
[設定][更新とセキュリティ][バックアップ][その他のオプション][詳細設定の表示]
[ドライブを検索しています]でバックアップに使われていたドライブが検索される
[オンする]ボタンで以前使用していたバックアップドライブに接続し、切断時の状態から追加して使用できる。

2016年11月 9日 (水)

SPIFFS 用のFTPサーバーをSD対応に変更

報告のみです
SPIFFS用のFTPサーバーをSDファイルシステム用に変更について。
SPIFFSとSDファイルシステムは互換性が無いためスケッチで"SPIFFS"を"SD"に変更しても動作しません。
スケッチだけでなくESP8266FtpServerSD.cppなどの以下の項目の対応することによりSDファイルシステムで動作出来ました。

  • 全ての"SPIFFS"を"SD"に変更しインクルードファイルを変更
  • SPIFFSにはディレクトリがないのでCWDコマンドのコード追加
  • LIST,MLSD,MLSTのディレクトリ処理を変更
  • RNTO(Rename To)は未実装

以上でFFFTPで接続しファイルのアップロード、ダウンロードは出来ました。

ただし、SDファイルシステムはファイル名が8.3形式なので長いファイル名のファイルが使えない。
ファイル名を8.3に短くするとHTML内のコードでファイルしてを変更しなければならない。

2016年10月25日 (火)

ESPr Developer(ESP-WROOM-02開発ボード) 購入

スイッチサイエンスさんの以下の基板を購入しました。

この基板はESP8266とUSBシリアル変換のFT231がのっていてATMEGA CPUのARDUINOと同じようにソフトウェアの開発に使う事ができます。
ARDUINO IDEからプログラムを書き込むときESP8266はA0端子をLOWにしてリセットする必要がありますが、この基板ではFT231のDTRとRTSからA0を制御し自動で書き込み出来るようになっています。
ARDUINO IDEは1.6.5にボートマネージャ"esp8266byESP8266 Community version 1.6.5-947-g39819f0"をインストールして使用しています。

2016年10月22日 (土)

ESP8266のアナログ入力とVCCの電圧測定方法

アナログ入力
ESP8266にはTOUT端子がありこの電圧のADC値を読み取ることができます。
TOUT端子の電圧を測定するためには以下のようにA0をanalogReadすれば読み出せます。

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void loop() {
  // put your main code here, to run repeatedly:
  int v=analogRead(A0);
  Serial.println("VCC="+String(v/1000.0)+"V");
  delay(1000);
}

読み取り値は10ビットの0から1023の値で、TOUT端子が1Vのとき1000となります。

次にVCCの測定方法

以下のようにADC_MODEをADC_VCCに変更するとVCC電圧を測定できます。この値を1/1000すると電圧値になります。

#include <ESP8266WiFi.h>
ADC_MODE(ADC_VCC)

void setup() {
  Serial.begin(115200);
}

void loop() {
  int v=ESP.getVcc();
  Serial.println("VCC="+String(v/1000.0)+"V");
  delay(1000);
}

TOUTピンは何も接続しないでください。チップ内でVCCを1/4し1Vの基準電圧で測定し、ライブライ内で4倍した結果がESP.getVcc()から返ってきます。

ADC_MODEはマクロで以下のように定義されています。

enum ADCMode {
    ADC_TOUT = 33,
    ADC_TOUT_3V3 = 33,
    ADC_VCC = 255
    ADC_VDD = 255
};

#define ADC_MODE(mode) extern "C" int __get_adc_mode() { return (int) (mode); }

マクロで定義されいる__get_adc_mode()は以下のように使用されている

extern int __wrap_register_chipv6_phy(uint8_t* unused) {
    phy_init_data[107] = __get_adc_mode();
    return __real_register_chipv6_phy(phy_init_data);
}

ADC_VCCとADC_VDDを指定したときVCCの値が返ります。それ以外は1023が返ります。
anaroguRead()もESP.getVcc()も同じADCを使っていて、動作中のモード切り替えは出来ないと思われます。

調査には以下を使いました。

2016年10月 7日 (金)

Windows10完全シャットダウンの設定方法

Windows10のシャットダウンは、次の起動時に高速起動するためスタンバイの機能を使用してシャットダウンするよう、デフォルトで設定されいる。
このため、メモリーの追加やハードディスクの取り外しなどで不具合が発生する。
これまでと同じような方法を完全シャットダウンとか呼ばれている。

 

以下の方法で設定を解除出来る
画面左下の「スタート」ボタン右クリック
「電源オプション(O)」選択
「電源の追加設定」クリック
「電源ボタンの動作の選択する」選択
「現在利用可能ではない設定を変更します」を選択
「高速スタートアップを有効にする(推奨)」のチェックを外す
「変更の保存」ボタンクリック

2016年10月 6日 (木)

ROBOCOPYでフォルダとフォルダの時間のみをコピーする

ROBOCOPYでフォルダとフォルダの時間のみをコピーする

robocopy.exeを使ってディレクトリ構造のみコピーする。

ファイルを暗号化(EFS)するとディレクトリのタイムスタンプが更新される。
ディレクトリのタイムスタンプを変えたくない場合一度フォルダツリーのみを
コピーしてそこにタイムスタンプを覚えておく。
暗号化完了後に保存していたディレクトリツリーを元に戻す。

robocopy src det /S /E /DCOPY:T /XF *

"/S"       サブディレクトリもコピー
"/E"       空のサブディレクトリもコピー
"/DCOPY:T" ディレクトリのタイムスタンプをコピー
"/XF *"    全てのファイルを除外する

2016年3月16日 (水)

3ステップ(3行)でExcelのVBAでAdobe PDFを使ってPDFを作成する

ExcelのVBAにてAcrobatでPDFファイルを作成する方法。

条件は以下の通り
・プリンタ名は"Adobe PDF"
・プリンターポートは"Ne03"
・出力フォルダは"C:\tmp"
・ファイル名は"test.ps"および"test.pdf"
・出力するシートは現在選択されているシート

以下のコードはExcel 2007とAdobe Acrobat X Standardで動作確認しました。

Sub makePDF()     Application.ActivePrinter = "Adobe PDF on Ne03:"     ActiveWindow.SelectedSheets.PrintOut _         Copies:=1, _         preview:=False, _         printtofile:=True, _         collate:=True, _         prtofileName:="C:\tmp\test.ps"     CreateObject("PdfDistiller.PdfDistiller.1").FileToPDF _
       "C:\tmp\test.ps", _        "C:\tmp\test.pdf", _        vbNullString End Sub

プリンターのポート番号はレジストリの
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices]
に一覧があります。

2015年9月24日 (木)

ESP8266 に SD カードと DS3231 リアルタイムクロックをつなぐ その後

ESP8266 に SD カードと DS3231 リアルタイムクロックをつなぐ

Moo Soft さんよりアドバイスをいただきI2Cインターフェースの DS3231 リアルタイムクロックと microSD カードの同時使用が可能になりました。Moo Soft さんありがとうございます。
ATMEGA328PとSPIでつなぎI/Oとリアルタイムクロックを処理させようとか考えていました。

I2Cインターフェースはソフトウェアで実現しているのでしょうか?C:\Users\xxxx\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\1.6.5-947-g39819f0\libraries\Wire\Wire.cppからライブラリが呼ばれていてライブラリのソースが無いので確認できませんでした。

現状を整理すると

イニシャライズは

    SD.begin(sdCardCS);
    Wire.begin(2, 5);

接続は以下の表でカッコ内はピン番号を示す。

8266 *1接続microSD *2I2CFT232RL *3
(1)3V3 3.3V (4)VDD
(2)EN 3.3V
(3)IO14 (5)CLK
(4)IO12 (7)DAT0
(5)IO13 (3)VMD
(6)IO15 GND
(7)IO2 SDA
(8)IO0 10KΩプルアップ (2)DTR *4
(9)GND GND (6)VSS
(10)IO4 (2)CD
(11)RXD (1)TXD
(12)TXD (5)RXD
(13)GND GND
(14)IO5 SCL
(15)RST (3)RTS *5
(16)TOUT
(17)IO16 LED *6
(18)GND GND

*1 8266のピン番号・名称は "ESP-WROOM-02 WiFi Module" のピン番号とモジュールに印刷されている名称
*2 microSDのピン番号は秋月のK-05488のマイクロSDカードDIP化キットのピン番号
*3 FT232RLのピン番号はFT232RLのLD SSOP Packageのピン番号
*4 SWを経由してIO0に接続。ARDUINO IDEの書き込み開始時にSWを押している。
*5 0.1μFのコンデンサでRSTに接続。
*6 出力1で点灯。
*  電源関係は一部省略

«ESP8266 に SD カードと DS3231 リアルタイムクロックをつなぐ