0

から wpf を作成し、シリアル ポートから 2 バイトを取得するたびにそれらの違いを見つけ、while ループで違いをテキスト ボックスで表示します。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {

    }
    SerialPort port;
    private void StartButton_Click(object sender, RoutedEventArgs e)
    {
        port = new SerialPort("COM3");
        port.BaudRate = 9600;
        port.DtrEnable = true;
        port.RtsEnable = true;
        port.Handshake = Handshake.None;
        port.Open();
        try
        {
            if (!port.IsOpen)
                throw new Exception();
        }
        catch (Exception)
        {
            Console.Out.WriteLine("port is not open!!");
        }
        while (port.IsOpen)
        {
            var b1 = port.ReadByte();
            var b2 = port.ReadByte();
            double t1 = b1 * 1e-9;
            double t2 = b2 * 1e-9; ;
            var dift = t2 - t1;
            if (dift == 0)
            {
                this.SpeedTextBox.Text = "0";
                continue;
            }
            this.SpeedTextBox.Text = dift;
        }
    }

    private void StopButton_Click(object sender, RoutedEventArgs e)
    {
        if (port != null)
        {
            if (port.IsOpen) port.Close();
            port.Dispose();
        }
    }
}

しかし、それを実行して StartButton をクリックすると、フォームは機能しなくなります。プログラムがデータを受信することはわかっています (別の単純なプログラムでテストしました)。しかし、ここで何がうまくいかないのかわかりません!!

誰でも私を助けることができますか?

前もって感謝します。

4

2 に答える 2