WindowsFromでなくプログラムを作成する時代がそろそろとやってきている。WPFだけどVisual Studio2017ではクラシックスタイルとカテゴリ分けされている・・・。
ということはMSの押しであるUWPで作成しなければならないということに。
時代は「Model-View-ViewModel (MVVM、モデル・ビュー・ビューモデル)」だからね。
しかし、検索するといい話が出てこない。会社のマシンがWin7なのでUWPのプログラム環境にならない。仕方ないまずはWPFでXAMLでの開発を行ってみることに。
●必須
1.MySQLへの接続
2.GPIBアクセス
1.MySQLへの接続
nugetでドライバは組み入れられなかった。ソリューションエクスプローラへの追加で以下の参照マネージャーから既にダウンロードとセットアップの終わっているドライバを追加する。
以前取得したサーバーとの接続リソースがどんどん増えてしまった失敗を回避するにはMySQLのアクセスをクラスにしないと駄目だ。何となくクラス化するご利益が分かってきたような気がする。
using MySql.Data.MySqlClient; namespace WpfApp2 { /// <summary> /// MainWindow.xaml の相互作用ロジック /// </summary> public partial class MainWindow : Window { My_SQL mysql = new My_SQL(); string qcmd = ""; string connectionString = ""; public MainWindow() { InitializeComponent(); string msg = "はい(Yes) リモートサーバ接続\r\n\r\nいいえ(No) ローカルPCサーバー"; MessageBoxResult res = MessageBox.Show(, "確認", MessageBoxButton.YesNo, MessageBoxImage.Exclamation); connectionString = ""; if( res == MessageBoxResult.Yes) { connectionString = "12.345.67.89"; } else { connectionString = "127.0.0.1"; } mysql.setServerIP(connectionString); }
2.GPIB
まずは組み入れ。ドライバは事前に入れていたもの。それを参照で追加すればいいだけだった。
戸惑うのはツールボックスの部品たちのプロパティの扱い。かなり違っている。慣れないとプログラムの生産性は落ちる。TEXIOの安定化電源を制御してみる。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Ivi.Visa.Interop; //-- USB GPIBユニット( Agilent 82357B )用 namespace WpfApp3 { /// <summary> /// MainWindow.xaml の相互作用ロジック /// </summary> public partial class MainWindow : Window { private ResourceManager rm = null; private FormattedIO488 Pwr = null; public MainWindow() { InitializeComponent(); rm = new ResourceManager(); Pwr = new FormattedIO488(); Pwr.IO = rm.Open("GPIB::1::INSTR") as IMessage; } private void Button_Click(object sender, RoutedEventArgs e) { try { Pwr.WriteString("PW0,SW1"); } catch{ }//--今回は処理なし } private void Button_Click_1(object sender, RoutedEventArgs e) { Pwr.WriteString("PW0,SW0"); } } }
No tags for this post.