WPF

c#

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.
タイトルとURLをコピーしました