エントリー

録画用PC

  • 2020/06/24 13:35

810.jpg

EpgTimer+PT-1で録画用にしているPCがあるんですが、PCなんで当然他のアプリも起動しているわけです。


再生は、MPC-BEで再生しているんですが、一時停止や早送りなんかをいちいちマウス操作しないといけないのが面倒になってきました。

最近、こんなことばかり言ってるよなぁ~

専用PCにすればいいんでしょうけど、他のアプリも走っているんで、再生中にウインドウがアクティブじゃなくなっちゃうと、スペースキーとか受け付けないっていうか、別のアプリにキーを送っちゃうんです、ハイ
で、何とかならないかな~っていろいろ探していると、HidKeySequence.exeと、SendKey.exeを見つけた。

この2つを使って、10年前に購入した、USBテンキーを、ファンクションキーボードにしてみましょう。

HidKeySequenceは、キーボードデバイスを個別に認識するので、テンキーからのみ受け付けるようにできます。

押したテンキーを受け付けて、別のキーやマウスを含む動作を定義できます。
当初、マウスとのコンビネーションで設定していたんですが、連打するとダブルクリック扱いになって、別の動作が始まったるするんで、SendKeyの出番です。


SendKeyは、特定のアプリにキーコードを送ってくれるんでHidKeySequenceから、SendKeyに引数を付けて起動すれば、ウインドウがアクティブじゃなくても、動作させられます。


[テンキーのEnterで一時停止・解除を設定する場合]
SendKeys.exe "MPC-BE" [#32]


これで、一時停止が出来るようになりました。


他のキーも割り当てて、快適になりました。


これ、すっごく便利、他のアプリでも使えそうです。


テンキーがプログラムファンクションキーになるんです、あとはいつかシールでも作って貼ろうかな。

モニターの取り付け位置変更

809.jpg

キーボードやマウスを机から追い出したんですが、モニターは増えていきます。

実際、目の前に6面あります・・・・( ノД`)シクシク…

そうなると、机の上がまた圧迫されてきたので、モニターアームを導入しました。

2面×3本です

しかし、違うメーカーのモニタって、VISAの取り付け位置がこんなに違うとは思ってなかったです。

多少誤差があっても、センター付近だと思っていたんですが、LGのモニターと、LENOVOのモニターで、60~70mm取付位置が違うんです。

仕事で、縦で使用する事もあるんですが、LENOVOだと、大きく頭を振る形になります。

LGだと、ほぼセンターを中心に回転するんですが。

さて、そのモニターの中に、1つだけちょっとインチ数が小さい、モニター兼テレビがあるんですが、これがどうしても高さが合わなく、下のモニターと干渉してしまうので、VISAブラケットの取り付け位置を変更しました。

高さ変更するVISAブラケットも売ってるんだけど、高いのよコレ、モニターアームもう一個買えちゃう。

って訳で、ホームセンターで良さげなステー探してきました、本当は200mmのものが欲しかったんですが、150mmしか無かったので、とりあえず購入。

これで、35~40mmしか移動出来なかったんですが、後はアームの調整機能で、ギリ合わせた感じです。

実はこの後、このステーを、LENOVOのモニターに移動して、今度は35mm下げました。

今日手に入れた、IODATAのモニターが、LENOVOモニターよりちょうど35mm低かったんで・・・・(写真撮り忘れたので、テレビの方の写真です)

温度管理

サーバーを見に行かなくて良くなったんで、もう一つやりたかった事をやろうかと。

約10年以上前なんですが、猛暑の夏を乗り切れなかったPCが1台、月曜日に出勤すると、ブルースクリーンが出ていて、色々調べているとメモリーが熱でやられていました。

次の年から、サーバー機に入れ替えたおかげで、その後の猛暑も乗り越えてきたんですが、朝出勤するとファンが全開でとっても五月蠅い。

さらに、部屋が排熱でとっても熱い・・・

今年は猛暑だと言う噂もあるし、サーバーが増えたことと、常時電源が入っている、PCもあるので何とかしなければ。

KURO-RSは持っているんですが、エアコンの赤外線リモコンは、情報量が多いため、未対応。

って事で、トラ技やCQなんかとタイアップしている、ビット・トレード・ワンの赤外線リモコンキットを購入してみました。(AD00020)

このキット、フリスクサイズの基盤なんで、老眼の私には半田付けが辛い・・・

何とか完成して、HPからソフトをダウンロードして、テスト、無事動作の確認が出来ました。

ハード面は何とかなりそうなので、ソフトにかかります。

まず、温度の取得です。

USB温度計を購入しようかとも思ったんですが、PC内部には色々と温度センサーがあるんで、使えるものを探してみます。

CPUやGPUは負荷状態でかなり変動するので使えない、マザーボードの温度かHDDの温度が良さそう。

室温を色々と変えて、関係性をモニタリングしてみると、HDD温度が室温+10℃ぐらいでで推移していて、これが使えそうです。

当然、正確に+10℃ではなくバイアスがかかっているんですが、筐体の中の温度と言うことで、これを使おうと思います。(うちのマザーボードの温度は、良くわからない動きをするので・・・)

って分けで、HDDのS.M.A.R.Tから温度情報を取得します。(C#)

                ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData");
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    byte[] arrVendorSpecific = (byte[])queryObj.GetPropertyValue("VendorSpecific");
                    int tempIndex = Array.IndexOf(arrVendorSpecific, (byte)194);
                    hddchk[0] = arrVendorSpecific[tempIndex + 5].ToString() ;
                }

さて、この情報を元に赤外線リモコンでエアコンを入れれば・・・・

提供されているDLLって、32ビットなんだよ~、アプリは64ビット

リモコンアプリのソースも公開されているんで、USBデバイスを直接操作って手もあるんですが、何か方法を考えてみます。

BtoIrRemoconってプロンプトアプリがあるんですが、うちの環境では何故かうまく動作しないんで、作ってみました。

[C# x86]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Microsoft.Win32.SafeHandles;
using USB_IR_Library;

namespace IRCommand
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            int i_ret;
            SafeFileHandle handle_usb_device = null;    // USB DEVICEハンドル
            string[] cmds = System.Environment.GetCommandLineArgs();
            byte[] data = new byte[103];
            byte[] code = new byte[100];
            if (cmds.Length > 1)
            {
                for (int i = 0; cmds[1].Length / 2 > i; i++)
                {
                    data[i] = Convert.ToByte(cmds[1].Substring(i * 2, 2), 16);
                }
                int mode = (int)data[0];
                int ilen1 = (int)data[1];
                int ilen2 = (int)data[2];

                for (int i = 0; i < 100; i++)
                {
                    code[i] = data[i + 3];
                }

                try
                {
                    // USB DEVICEオープン
                    handle_usb_device = USBIR.openUSBIR(this.Handle);
                    if (handle_usb_device != null)
                    {
                        // USB DEVICEへ送信 パラメータ[USB DEVICEハンドル、フォーマットタイプ、送信赤外線コード、赤外線コードのビット長]
                        switch (mode)
                        {
                            case 1:
                                i_ret = USBIR.writeUSBIRex(handle_usb_device, USBIR.IR_FORMAT.AEHA, code, ilen1, ilen2);
                                break;
                            case 2:
                                i_ret = USBIR.writeUSBIRex(handle_usb_device, USBIR.IR_FORMAT.NEC, code, ilen1, ilen2);
                                break;
                            case 3:
                                i_ret = USBIR.writeUSBIRex(handle_usb_device, USBIR.IR_FORMAT.SONY, code, ilen1, ilen2);
                                break;
                            case 4:
                                i_ret = USBIR.writeUSBIRex(handle_usb_device, USBIR.IR_FORMAT.MITSUBISHI, code, ilen1, ilen2);
                                break;
                        }
                    }

                }
                catch
                {
                }
                finally
                {
                    if (handle_usb_device != null)
                    {
                        // USB DEVICEクローズ
                        i_ret = USBIR.closeUSBIR(handle_usb_device);
                    }
                }
            }
            Application.Exit();
        }
    }
}

フォームには何も入れない空です。
フォームアプリにしたのは、この先何か追加するかもしてないからです。
これに、赤外線リモコンのアプリで取得したコードを引数で与えると、動作しました。
あとは、アプリからプロセス起動させれば、温度によって、エアコンを入れたり、消したり出来るようになりました。
あと一つ問題は、設置場所です。

ネット上では、赤外線の出力が弱いという噂がありましたが、近づけても動作しない時がありました。

通常砲弾型のLEDの場合、先端から直進する部分が一番出力が強く、角度が付くと、減衰していくんです。

このキットに含まれているLEDは、50% Power Angle が15degなんで、ほぼ直進するはずなんdすけど、離して変な角度のほうが認識率が高い(反射かな)

猛暑が来るまで色々と探ってみます。

サーバーのRAID状態

  • 2020/06/09 07:49

807.jpg

R620を導入して、色々と整理していったんですが、ソフトRAIDのサーバー3台の、RAID状態を確認するのが面倒になってきました。

ほんの数分の作業なんですが、なんとなく毎日やるのが面倒・・・歳かな

ターミナルでサーバーにログインして、cat /proc/mdstat するだけなんですけどね。

ハードRAIDのサーバーは、表示ランプやLCDがあるので一目瞭然なので楽なんです。

もう一台、データ収集用PCが常時稼働していて、これでサーバ容量の監視をしているんですが、これにちょっと組み込んでみようかと。

ちなみに、組み込むのは、時代遅れのCoreDuo2 Q6600 Windows7のマシンなんですが、色々あってアップグレード出来ないんです(最近までWindowsVistaでした笑)

 

そうと決まれば、さっそく組み込みです。

ソースがC#なので

                for (int iloop = 1; iloop < 4; iloop++)
                {
                    ConnectionInfo info = new ConnectionInfo(ipAdd[iloop], 22, "****", new AuthenticationMethod[] { new PasswordAuthenticationMethod("USER", "PASSWORD") });
                    SshClient ssh = new SshClient(info);
                    ssh.Connect();
                    if (ssh.IsConnected)
                    {
                        SshCommand cmd = ssh.CreateCommand("cat /proc/mdstat");
                        cmd.Execute();
                        var stdOut = cmd.Result;
                        var stdErr = cmd.Error;
                        if (stdOut != string.Empty)
                        {
                            string[] rd = stdOut.Split('/');
                            string[] rd1 = rd[1].Split('[');
                            string[] rd2 = rd1[1].Split(']');

                            hddchk[iloop] = rd2[0];
                        }
                        ssh.Disconnect();
                    }
                }

を、1日1回実行する関数に追加(ユーザー名とパスワードはひみちゅ)

iloop=0は自分自身でRAIDが無いので除外です。

正直、正規表現など使えば、取得した文字列の分解はもっと簡単になるんでしょうけど、フォーマットが変わったときのデバッグ用です。

あくまで、自分用なので・・・・客先用だとちゃんとしますよ。

これで、いちいち確認に行かなくても良くなりました。

 

R620 DVD交換

806.jpg

R620のDVD-ROMですが、手に入れた当初から壊れてて動作しなかったんです。

まあ、OSやアプリのインストール自体は、USBをブータブルディスクにしたりして、何とかなったんですが、やっぱり少し面倒って事で取り換えることにしました。

最初は、そこらへんに転がっているジャンクのノートPCのDVD-Rでもって思ってたんですが、9.5mmの薄型なんですよR620って。

 

現役ノートから外すわけにもいかないので、とりあえずオークションで1,000円で落札です。

ブルーレイも考えたんですがね、USBメモリーの高容量化やUSB-HDDがあるんで、とりあえずはDVD-Rにしました。

 

ビデオカードも追加したし、音源も追加したし。

大きい・重い・多少うるさい・起動に時間がかかるってのを気にしなければ、快適になりました。

R620その後

  • 2020/05/12 22:37

セットアップしてから、既に仕事で使っています。

 

やっぱりノートパソコンと違って、画面が大きいのはいいですね~おじさんには

デュアルディスプレイなんで、資料を開きながら仕事も出来ますし。

何より、ソフトを多重に起動した時に、重くならないのがいいです。

良くあるのが、仕事をしている時に、電話がかかってきて別の仕事のソース開いて調べている時に、電話で別のデータ開いて・・・・と、重いソフトを幾つも立ち上げなきゃいけない時なんか、重くならないんで。

 

CPUとメモリーが効いてる感じです。

ただ、Mouse without Borders入れたから、早くマウスを動かすと、マウスカーソルが何処か他のパソコンに飛んで行っちゃって、見失う事が多々・・・

これは慣れるしか無いんでしょうね。

あと、昔の8bitマイコン時代からプログラムに勤しんでいる、おっさんプログラマーとしては、最近のストロークが小さくて静かなキーボード&マウスはあまり好きじゃ無いんですよ。

ストロークがある程度あって、カチカチと押した時の感触があるものが好きなんです(五月蠅いんですけど、一人で仕事してるんで)

個人的な好みは、PC-9801やX68000ぐらいの時のキーボードが好きなんですが(マウスは使い物になりませんが)

コロナ落ち着いたら、キーボードとマウス探しに行こうっと。

やっと机が

R620にHiper-VでWin7 32Bitももう一度インストールして、あとは仕事用のアプリを色々インストール、動作確認をして何とか使えるようになりました。

これで、机の上を占拠していたノートパソコンの1つを移動できます。

もう一つは、持ち運び用なので、デュアルディスプレイの横に、サブディスプレイとして配置して、Mouse without Bordersで繋ぎます。
 
もう一つ、データ収集用の常時電源の入ったWindowsVistaのパソコンもあるのですが、これもMouse without Bordersで繋ぎ、ほぼマルチディスプレイのようにマウスとキーボードを移動できます。(コピペは出来ないですが)

これで、机の隅に鎮座していた、ディスクトップ用のキーボードも外せます。

ああ、すっきりしたーって思ってたんですが、そうなるとどうしてもファイルサーバー&WEBサーバーの3台のキーボードが邪魔になってきました。

基本的に使うことはまれなので、ブックスタンドに立ててあるのと、通常時はTeraTermで接続して作業するんで撤去しても問題は無いんですが、たまにGUIで作業することもあるんで、置いてあるんです。

Hiper-VのWin7 32Bitでリモートディスクトップを使うことになるのなら、このサーバーにリモートディスクトップで接続してやるって事で、ごにょごにょとサーバーにインストールして、無事繋ぐことが出来ました。

まあ、以前から出来るのは判ってたんですが、面倒なのでやってなかったんです。

これで、サーバー用のキーボード&マウスも撤去できました。

PC自体の台数は減っていないんですが、何とか机の上がすっきりしました。

Windows10の2回起動

やっと、Windows10の2回起動が解決しました。

Windows何回入れなおしたことか・・・・

BIOSいじったり、ビデオカード外したり、付けたり・・・

結局、サーバー特有の、CPU・メモリー関係のドライバーが悪さをしていたみたいです。

再インストール中にエラーになって、これらのドライバーが読み込まれず、デバイスに!がついた状態だと、素直に再起動しだしたんです。

多分なんですが、インストール時にドライバーを読み込む順番が悪いんでしょうか?(エラーで他の更新プログラムが読み込めない)

さて、!がついた状態で更新をしてみると、これらの!の付いたドライバーも読み込まれるんですが、インストール順が更新プログラムの後にインストールされます。

ドキドキしながら再起動

見事、1回起動しました、その後何回やっても無事1回起動。

よしよし、トラブルが順番に改善していきます。

さて、再インストールで消えちゃったアプリ、インストールしなきゃ。

AVIUTILエンコード速度改善

AVIUTILのエンコードが遅い件ですが、何とか改善しました。

前回、拡張編集がシングルスレッドだと思っていたんですが、間違いでした(タブン)

 

色々と設定やら試してみていたんですが、どうも世の中の情報と食い違うんですよ。

どうしても、CPUのクロックが1.2G~1.5Gの間から上がらない、定格クロックは2.6Gのはず。

CHNEBENCHIをかけて高負荷をかけると、3Gまで上がるんですがなんで???

電源管理で、CPUを100%にしても上がらない・・・・

AVIUTILの設定を色々いじってみたんですが、どうしても上がらない・・・

 

BIOSの設定を眺めてみると、DELL Turbo Boostの設定があったんで、設定して最大パフォーマンスにしてみました。

ターボブーストが効いた状態で起動するんですが(3.1G)、ファンの音がジェット機並みにうるさいです、市販のディスクトップでは味わえないくらいの音なんです、これが。

いくら速くても使えないので元に戻して、色々と試してみてたんですが、どうもDellのBIOSでCPU電源管理(パフォーマンス管理)をするのが問題のようです。

まあ、そこはサーバなんですよ、いろんなOSを想定してるので、安全性第一って事でしょうか(OSの電源管理を信用してないんだな)

さて、OSに任せるとWindowsの電源管理でCPUのパワーをコントロールできるようになります。

この設定で、とりあえずエンコードしてみると、30分で終わりました(約半分)

ついでに、CPUを100%のままでエンコードすると、24分。

それでも、CPUの使用率はMAXで60%(平均50%)なんですが、半分でエンコード出来るようになったんで、とりあえずは良しとしましょう。

まあ、結局何処かでシングルコアの性能に左右されるって事が分りました。

E5-2690v2が安くなってきたら、CPU変えてみようっと。

 

起動時の不具合2

治ったと思った、起動時の不具合ですが、再発しました。
イベントログを探っていると、CPUのVT-xが他で使われていて(Hiper-V)、エラーだよんって(英語なんでテキトーです)
ここに書いてある呪文を実行しろって書いてあるんで、とりあえずやってみました。
そしたら、本体液晶に出てたCPUエラーが嘘のように消えた。
よし、っと思ったのもつかの間、また再現。
ほんの少しだけ、症状が出る時間が遅くなってるんだけど、逆に起動に時間がかかって困るぅ~
もうちょっと探らないと、たっ楽しい~

ユーティリティ

新着コメント

Re:2017ふれまにっ杯募集
2017/01/30 from tatsuru3284
Re:ついに
2016/03/18 from redinpules.stt.TV
Re:ついに
2016/03/17 from Tatsuru
Re:ついに
2016/03/17 from redinpules.stt.TV
Re:県オープンの余韻
2016/02/18 from Tatsuru

過去ログ

Feed