2018年10月

Powershellでシリアル通信する

Ppweshellを用いてarduinoにシリアル通信するメモ。

以下のサイトを参考にした。

Powershell でシリアル通信

#arduinoが接続されているCOMポートを指定
$com = New-Object System.IO.Ports.SerialPort "COM1" 
#機器側の改行コードと合わせる(CR+LF)
$com.NewLine = [Char]0x0D + [Char]0x0A
$com.Open()
$com.ReadLine()
$com.WriteLine('a')
$com.Close()
$com.Dispose()

ReadLine()を使用する際はarduino側で、データを送信時に改行を入れないと通信が切断されずフリーズした様になってしまうので、注意が必要。

//これらはNG
Serial.print("hello")
Serial.write("hello");

//これはOK
Serial.println("hello");

//これもOK
Serial.write("hello");
Serial.write("\n");

マスプロTVチューナーDT35

安く卓上テレビ環境を構築すべくDT35を中古で購入。
リモコンが付属していなかったが、手元で操作すれば良いと考えて よく調べもせず購入。しかしリモコンが無いとチャンネル設定が出来ないことが判明。
リモコンコードを手に入れてarduinoで送信出来ないか調べてみた。

リモコンデータベースのコードを試す

リモコンデータベースサイトからマスプロのTVチューナーを探し(殆どNECフォーマット)送信してみるが、反応無し。

JP1 Remotes

Slingbox用?のリモコンデータ登録サイトにDT35と、同一のリモコンを用いるDT400のリモコンコードのバイナリファイルが公開されていたので、ダウンロードして中身を確認する

RemoteMasterをダウンロード

バイナリファイルを開くために必要。 とりあえずv2.03を使用。

RMファイルをダウンロード

RemoteMasterから直接バイナリファイルを開く方法がわからなかったので、Toshiba RD-XS55 のRMファイルをダウンロード。 RMファイル開いた後、バイナリファイルをインポートする方法をとった。

RemoteMasterを起動

RemoteMasterを起動→[file]-[open]からRD-XS55のRMファイル(拡張子.rmdu)ファイルを開く。 [Advanced]-[import binary upgrade]から目的のバイナリファイル(.bin)を開く。

内容の確認

開いてみるとDT35、DT400共にNECフォーマットであった。 しかし、同じリモコンであるはずだが、各ボタンの送信データは異なっていた。

電源ボタンのコード

DT35:0x47
DT400:0xE0

NECフォーマットは16bitのカスタムコードと 16bitのデータコード(8bit+8bitの反転)らしいので
0x47B8
0xB847
0xE01F
0x1FE0
のいずれかではないかと推測できるが、カスタムコードが判らずここでギブアップ。 別途リモコンを購入した。

DT35

DT35_image4
DT35_image5


DT400
DT400_image7
DT400_image8



リモコンコードの解析

購入したリモコンで電源ボタンのコードを解析してみた所、
535A1FE0であったので、DT400のバイナリデータが対応していたことが判明した。

また、カスタムコードもRemoteMasterのFixed Data欄の0xAC 0xA5を反転させると0x535Aになる。 同じNECフォーマットのRD-XS55のFixed Data:0x5D 0xC2。
別途調べたRD-XS38のカスタムコードが0xA23Dとこれも反転しているので、 その前についている20が反転を表すコードなのかもしれない。

pdfの内容を画像(jpeg)で出力する方法

pdfの内容を画像(jpeg)で出力する方法を調べた

Webサイトからオンラインで処理するツールは除外した。

Xpdfのpdfimages.exeを使用する

  • pdfファイルから画像を抽出できるツール
  • 画像のみを"抽出"するので全ページを変換する用途には向かない
  • ページ内に複数の画像ファイルが存在する場合には、パーツごとに出力される
  • 出力される画像はPBMまたはPGMフォーマット(DCTフォーマットで保存された画像はjpegで出力される)

以下を実行すると c:\work以下にsample-image-0000.pbmから連番でファイルが出力される。

./pdfimages.exe -j c:\work\sample.pdf c:\work\sample_image

PDF-XChange Editor

  • pdfファイルの閲覧・編集ソフト
  • 画像ファイルへのエクスポート機能があるが、コマンドラインからの実行が出来ないので複数ファイルの処理には向かない

Ghostscript

  • https://ja.wikipedia.org/wiki/Ghostscript
  • 画像品質や解像度、リサイズした状態で出力可能
  • 日本語(2バイト?)のフォルダ・ファイル名と、とことん相性が悪い
  • 日本語のファイルの場合、一旦リネームして処理後に元に戻す等の工夫が必要
./gswin64c.exe -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeggray -dJPEGQ=94 -r300 -sOutputFile=c:\work\output%03d.jpg c:\work\input.pdf

BSのチャンネル

2018/10/13 チャンネル名称変更

BSチャンネル
TP 周波数 チャンネル名 サービスID TSID(16進) TSID(10進)
BS1/TS0 11.72748 BS朝日 151 0x4010 16400
BS1/TS1 11.72748 BS-TBS 161 0x4011 16401
BS1/TS2 11.72748 BSテレ東 171 0x4012 16402
BS3/TS0 11.76584 WOWOWプライム 191 0x4030 16432
BS3/TS1 11.76584 BSプレミアム 103 0x4031 16433
BS3/TS2 11.76584 ディズニー・チャンネル 256 0x4632 17970
BS5/TS0 11.80420 WOWOWライブ 192 0x4450 17488
BS5/TS1 11.80420 WOWOWシネマ 193 0x4451 17489
BS7/TS0 11.84256 BS朝日 4K 2018年12月以降
BS7/TS1 11.84256 BSジャパン 4K 2018年12月以降
BS7/TS2 11.84256 BS日テレ 4K 2018年12月以降
BS9/TS0 11.88092 BS11 211 0x4090 16528
BS9/TS1 11.88092 スター・チャンネル1 200 0x4091 16529
BS9/TS2 11.88092 TwellV 222 0x4092 16530
BS11/TS0 11.91928 FOX bs238 238 0x46b0 18096
BS11/TS1 11.91928 BSスカパー! 241 0x46b1 18097
BS11/TS2 11.91928 BSキャンパスex、on 231, 232, 233 0x46b2 18098
BS13/TS0 11.95764 BS日テレ 141 0x40d0 16592
BS13/TS1 11.95764 BSフジ 181 0x40d1 16593
BS13/TS2 11.95764 BSアニマックス 236 0x46d2 18130
BS15/TS1 11.99600 NHKBS1 101 0x40f1 16625
BS15/TS2 11.99600 スター・チャンネル2,3 201,202 0x40f2 16626
BS17/TS1 12.03439 NHK SHV 4K 2018年12月以降
BS17/TS2 12.03439 BS-TBS 4K 2018年12月以降
BS17/TS3 12.03439 BSフジ 4K 2018年12月以降
BS19/TS0 12.07272 グリーンチャンネル 234 0x4730 18224
BS19/TS1 12.07272 J SPORTS 1 242 0x4731 18225
BS19/TS2 12.07272 J SPORTS 2 243 0x4732 18226
BS21/TS0 12.11108 シネフィルwowow 252 0x4750 18256
BS21/TS1 12.11108 J SPORTS 3 244 0x4751 18257
BS21/TS2 12.11108 J SPORTS 4 245 0x4752 18258
BS23/TS0 12.14944 BS釣りビジョン 251 0x4770 18288
BS23/TS1 12.14944 日本映画専門チャンネル 255 0x4771 18289
BS23/TS2 12.14944 D-Life 258 0x4772 18290

Powershellで外部プログラム(exe)を実行する方法

ファイルのフルパスかexeファイルのあるディレクトリに移動して直接記述する

cd c:\work
./ffmpeg.exe -i video.mp4

exeファイルのパスを変数に入れて実行演算子&を先頭につける

$exe="c:\work\ffmpeg.exe"
&$exe

#パスにスペースが入る場合も実行時演算子を使用する
$exe="C:\Program Files\internet explorer\iexplore.exe"
&$exe
#または
&"C:\Program Files\internet explorer\iexplore.exe"

終了コードを取得したい場合

#Start-Processコマンドを使用する
try{
    $exe="c:\work\ffmpeg.exe"
    $arg=-i video.mp4 -vcodec copy -acodec copy video2.mp4
    $proc = Start-Process $exe $arg -PassThru -Wait
    write-host $proc.ExitCode
} finally {
    $proc.Close()
}