bobmarley12345

arduinovoltmeterc#bit

Jun 6th, 2019
146
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public partial class MainWindow : Window
  2.     {
  3.         SerialPort mainport = new SerialPort();
  4.         public MainWindow()
  5.         {
  6.             InitializeComponent();
  7.         }
  8.  
  9.         private void Button_Click(object sender, RoutedEventArgs e)
  10.         {
  11.             if (!mainport.IsOpen)
  12.             {
  13.                 try
  14.                 {
  15.                     mainport.PortName = COMPortList.SelectedItem.ToString();
  16.                     mainport.BaudRate = 115200;
  17.                     mainport.DataBits = 8;
  18.                     mainport.StopBits = StopBits.One;
  19.                     mainport.Parity = Parity.None;
  20.                 }
  21.                 catch (Exception owo) { MessageBox.Show(owo.Message); }
  22.                 try
  23.                 {
  24.                     //Connect
  25.                     mainport.Open();
  26.                     ((Button)e.Source).Content = "Disconnect";
  27.                     StartReceivingData();
  28.                 }
  29.                 catch (Exception owo) { MessageBox.Show(owo.Message); }
  30.             }
  31.             else
  32.             {
  33.                 try
  34.                 {
  35.                     Task.WhenAll(tasks);
  36.                     mainport.Close();
  37.                     ((Button)e.Source).Content = "Connect";
  38.                 }
  39.                 catch (Exception owo) { MessageBox.Show(owo.Message); }
  40.             }
  41.         }
  42.  
  43.         private List<Task> tasks = new List<Task>();
  44.  
  45.         private void StartReceivingData()
  46.         {
  47.             tasks.Add(startListening());
  48.         }
  49.         private async Task startListening()
  50.         {
  51.  
  52.             try
  53.             {
  54.                 await Task.Factory.StartNew(() =>
  55.                 {
  56.                     while (mainport.IsOpen)
  57.                     {
  58.                         try
  59.                         {
  60.  
  61.                             string message = mainport.ReadLine();
  62.                             Application.Current.Dispatcher.BeginInvoke(new Action(() => { Voltage.Content = message; }));
  63.  
  64.                         }
  65.                         catch (TimeoutException)
  66.                         {
  67.                             //There will be a timeout/Operation timed out exception going mental here so nothing is really needed here...
  68.                         }
  69.                         catch (IOException owo) { MessageBox.Show(owo.Message); }
  70.                         catch (Exception owo) { MessageBox.Show(owo.Message); }
  71.                     }
  72.                 });
  73.             }
  74.             catch { }
  75.         }
  76.  
  77.         private void Window_Loaded(object sender, RoutedEventArgs e)
  78.         {
  79.             foreach(string comPort in SerialPort.GetPortNames())
  80.             {
  81.                 COMPortList.Items.Add(comPort);
  82.             }
  83.         }
  84.     }
RAW Paste Data