なべひろBlog

プログラミングをメインに仕事に関するアレコレを発信しています。

KiCadでなぜ既存のライブラリを使わず新しく作るのか

KiCadには回路図を作るために必要なライブラリが標準でたくさんあります。 これらはメーカやメーカでもジャンルごとに分けてありますので目的のライブラリを探すのは大変ではありません。 ちなみにXilinxのFPGAは7つのライブラリに分けてあります。 確かにこ…

KiCadを使う前に

KiCadは何度か構築した事がありますが(転職とか)私が最初に必ずやる事があります。 まずは自分のライブラリーを作ってデフォルトのライブラリーとは分けて管理する事です。 具体的にはDドライブに専用のフォルダを作っておきOSのクリーンインストールやパ…

KiCadを使う

社内で回路作成の仕事が来て、ユニバーサル基板でちまちま作るレベルではなさそうなので久しぶりにKiCadを使います。 KiCadの情報は検索すればそれなりにヒットしますが、備忘録も兼ねて書きたいと思います。 ちなみに『KiCad』の日本ユーザ コミュニティと…

WPFでボタンが押された時の処理が終わるまで簡単にボタンを押せないようにする

存在は知ってましたが他に優先順位の高い案件が多かったので後回しになってました。 結果から言えばもっと早くやるべきでしたね(汗 簡単に言えばボタンを押して処理が終わるまでボタンを押せないようにするのが楽にできます。 私のような装置系は特にボタン…

Prism使ったWPFでLivetCask.Messagingを使ってみる

ViewModelから使用者にメッセージを出したい時ってのは結構あります。 普通にMessageBox.Showの記述をすればメッセージは表示されますし、何か支障があるか?と言われれば何もありません。 ViewModelでViewを操作するなんて云々と巷では言われており、確かに…

Prismを使ったWPFアプリケーションで多重起動を抑制する

多重起動が問題になるケースはごくまれですが、利用者が気づかず複数開いたウィンドウで「ソフトを終了したのに起動している!」といったプチパニックを起こさないためにも多重起動は対処した方がいいと思います。 多重起動が不具合だと勘違いされ呼ばれる方…

MVVMなWPFアプリでDataGridの行と列情報を取得してみる

コレ、検索してもなかなか良い感じの情報にヒットしないんですよね。 てな事で検索情報とプロパティを眺めながら試してみました。 データがBindingされていればセル内の編集された値は反映できるので行とか列の情報なんてあまり必要としません。 今回行と列…

常にワーストケースを考える

これ以外と抜けてる事が多いです。 特に経験が浅い人とか普段から色んなケースを想定できない人に多いですね。 ソフト的な話で見た事のあるのが戻り値がBOOL型のWindowsAPIの戻り値を見ないケースが多いです。 実行したWindowsAPIが成功するとか失敗した時の…

WPFアプリのImageにファイルを掴ませないようにする

前回MVVMなWPFアプリでImageにドラッグ&ドロップをやる手段を書きましたが、あの方法には困った問題が1つあります。 それは表示していた(している)ファイルをアプリケーションが掴んでいるのでファイルの削除ができません。 表示されてなければそのうち離し…

MVVMなWPFアプリケーションでドラッグ&ドロップをしてみる

まあ、検索すれば幾つかヒットするネタではありますが、ドンピシャでヒットしなかったので検証してみます。 構成は.NET Core3.1なWPFアプリでPrismとReactivePropertyを使っています。 やっている事はImageにドラッグ&ドロップされたJPGファイルを表示するだ…

.NET Core 3.1で作ったWPFアプリでPostgreSQLへEntityFrameworkを使ってアクセスしてみる

WinFormsではEntityFramwworkを使ってPostgreSQLへアクセスした実績はありますが、WPFましてや.NET Coreでは初めてなのできちんと動作できるか検証してみます。 まずはNuGetで「Npgsql.EntityFrameworkCore.PostgreSQL」をインストールします。 あと、何かと…

C#でアプリの設定値を管理する

C#

アプリ運用で設定値の運用は大事な項目です。 WinFormsでは(WPFでは見た事がないだけ)プロパティに「設定」があり、それに項目を追加して運用できます。 しかし、これは運用面においてはイマイチです。それは 1.決まった型の変数しか設定できない。 2.アプリ…

C#で数値入力の補助をしてみる

C#

C#で数値「だけ」を入力させるコードは世の中にたくさんあります。 ベタな手法でWinFormsだとKeyPressイベントで数値か否かをチェックしてイベントをキャンセル状態にしますね。 必要に応じて符号などもOKな条件を追記すれば符号あり、小数点ありの数値入力…

安全な装置を考える

本日、入社2年目のまだ新人君が作った装置のレビューがありました。 Windowsアプリも必要だったので、製作途中から参加してたのですが完成品を見たのは今日が初めてでした。 装置はレーザーマーカーを用いて製品にシリアル番号をマーキングする装置です。 初…

.NET Core 3.1アプリが起動できない

最近ようやくWPFで作った.NET Coreアプリをデバッグし始めました。 自分のPCでは問題なく動作してたので新しいPCにコピーして起動したら .NET Coreをインストールしなきゃダメってなメッセージが出て起動しません。 あれ?.NET Coreって.NET Frameworkみたい…

.NET Frameworkから.NET Core 3xに移行したら出た例外 StreamWriter編

最近やっと.NETCore 3.1のアプリをデバッグし始めました。 しかし、いきなり実績のあった処理で例外が出て戸惑ってしまいました。 これからも色々出ると思うので備忘録として残していきます。 今回の事象はStreamWriterでの例外です。 こんなプログラムを作…

PrismのIDialogServiceを試してみる

MVVMなWPFでダイアログを出して見るべく色々検索してましたが、正直いって「何か面倒じゃね?」ってのが素直な感想でした。 もしかしたらダイアログを出す以外のコードが多くて、ぱっと見で私がきちんと見てないだけだったかもしれませんがWinFormsと比べる…

C#で見やすく簡単に文字列に変数を加える

C#6.0で追加された機能ですが、C#のサンプルプログラムはそれ以前のバージョンで作られているコードも多く便利なのに見落としがちな手法です。 知っている人は多いかもしれませんが、意外と新しめのサンプルコードでも使ってない人も見受けられます。 (実は…

質の高いプログラム(コントロールの配置が適切である)

質の高いプログラムのお話の最後です。 まあ、ネタが出てくれば続編があるかもしれません。 今回のお話は「コントロールの配置が適切である」です。 産業器機だとタッチパネルデザインになりますね。 まずは制御器機のタッチパネルに関する内容から書きたい…

質の高いプログラム(止まらないに関連)

以前書いた の続で で題材にした若い二人が作った装置で最近起きた出来事をネタにしようと思います。 その装置を使った製品の増産計画が発表され製造現場はおろか私の部署も機械が停止しないよう、今のうちにやれる事(事前に消耗品を準備するとか)をやるよう…

WinFormsのコントロールを別Taskで動かす

今時WinFormsかよ!と言わないでください。 サクサクっとテスト用アプリなんか作る時には一番簡単です。 動作も軽いですし、ネットを検索すれば情報は山のように出てきます。 いつからか忘れましたが.NET Frameworkも別タスク(スレット?)での処理が楽になり…

成功率は100%でお願いします。

装置開発は苦難の連続です。 新しい装置開発ですんなり完成する事はベテランでも滅多にありません。 そんな中、若い二人が小型部品の組み立て装置を完成させました。 アイデアも素晴らしく、他の製品用組立装置にも流用可能であり今後期待の持てる装置です。…

質の高いプログラム(止まらない)

質の高いプログラムの続きです。 止まらないプログラムなんて当たり前の話なのですが意外と盲点もあります。 PCアプリでは滅多にありませんが機械制御などでよく使われているエアーシリンダーを例にします。 エアーシリンダーとはソレノイドバルブ(電磁弁)を…

MVVMなWPFアプリケーションを.NET Coreに移植してみる

最近ようやくVisualStudio2019Proを導入しました。(私的には.NETCore3.0が出るまで不要だったので) そこで、いままでのWPFアプリを.NET Coreに移植は問題なくできるのか確認してみました。 対象となるのは以前制作したバーコードリーダー読み込みソフトです…

質の高いプログラム (使用者に優しい)

質の高いプログラムとは何でしょう? 仕様書通りに作ったプログラム?←それは当たり前の話であって質が高いとは言えないと思います。 作る側、使う側、どんな機能があるかなど色々な要素を基に質の基準は変わるとは思いますが、私が考える質の高さは 1. 使用…

MVVMなWPFでDataGridの内容変更をキャッチする

編集可能なDataGridでユーザが編集したら、内容を即座にキャッチしたい事がよくあります。 内容が変更されたらXMLファイルに保存するとか、内容をチェックするとか使い道は色々あります。 MVVMなWPFアプリでReactivePropertyを使えばTextBoxなどはSubscribe…

特に理由はありません?

私の仕事は主にプログラミングですが、年も年なので未経験者や若い人の指導も結構あります。 装置を作るにあたって選択する器機類のアドバイス、どのようにセンサーなどをチョイスするかの指導、プログラミング以外が大半かもしれません。 もし間違った考え…

MVVMなWPFアプリケーションでボタンを「押した」「離した」の情報をキャッチする

各種装置と連携したアプリを作るとよく出くわす機能としてボタンを押したらモータを回転させ、ボタンを離すまで回転は持続するという機能です。 Jog動作というヤツですね。 これもWinFormsなどでは特に深く考えなくてもボタンを押した時のイベントと離した時…

MVVMなWPFアプリケーションでバーコードリーダーの情報をキャッチする

私が所属している会社は機械要素部品を製造しています。 製品の情報をバーコードから参照してゴニョゴニョしますので、バーコードリーダーを使います。 バーコードリーダーは特殊な物ではなく殆どがキーボードと同じ振る舞いをします。 なのでPreviewKeyDown…

ここに記載するプログラム情報について

このブログにはソースコードを記載しますが、コピペしたら動くソースコードは記載しません。 丁寧に数十行から百数十行にもおよぶ全コードを記載する方もおられますが(素晴らしい!)私がよく直面する問題が「俺が欲しい情報はこの数十行もあるコードのうちの…