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.

