hello leong

hello leong

  • NA
  • 13
  • 6.2k

How can I call Serial Port declare in Main Form from a class

Mar 10 2011 7:47 AM
I can call serial port in main from by clicking the button 1.

[code]
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO.Ports;

  10. namespace WindowsFormsApplication1
  11. {
  12.     public partial class MainForm : Form
  13.     {
  14.         public MainForm()
  15.         {
  16.             InitializeComponent();
  17.         }

  18.         private void button1_Click(object sender, EventArgs e)
  19.         {
  20.             try
  21.             {
  22.                 serialPort1.PortName = "COM1";
  23.                 serialPort1.BaudRate = 9600;
  24.                 serialPort1.DataBits = 8;
  25.                 serialPort1.Parity = Parity.None;
  26.                 serialPort1.StopBits = StopBits.One;
  27.                 serialPort1.Open();
  28.                 disconnectBtn.Enabled = true;
  29.                 connectBtn.Enabled = false;
  30.             }

  31.             catch
  32.             {
  33.                 MessageBox.Show("Error", "Unable To Access", MessageBoxButtons.OK, MessageBoxIcon.Error);
  34.             }

  35.             if (connectBtn.Enabled == false)
  36.             {
  37.                 textBox1.Text = "Connected";
  38.             }
  39.         }

  40.         private void disconnectBtn_Click(object sender, EventArgs e)
  41.         {
  42.             try
  43.             {
  44.                 serialPort1.Close();
  45.                 connectBtn.Enabled = true;
  46.                 disconnectBtn.Enabled = false;
  47.             }
  48.             catch
  49.             {
  50.                 MessageBox.Show("Error", "Unable To Access", MessageBoxButtons.OK, MessageBoxIcon.Error);
  51.             }
  52.             if (disconnectBtn.Enabled == false)
  53.             {
  54.                 textBox1.Text = "Disconnected";
  55.             }
  56.         }

  57.         private void button1_Click_1(object sender, EventArgs e)
  58.         {
  59.             serialPort1.Write(new byte[] {0x55}, 0, 1); //OK
  60.         }

  61.         private void button2_Click(object sender, EventArgs e)
  62.         {
  63.             Class1 sp = new Class1();
  64.             sp.serialOut();
  65.         }
  66.     }
  67. }

[/code]

But, when i click button2 link to class2 to call serial port, it does not work.
[code]
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO.Ports;

  6. namespace WindowsFormsApplication1
  7. {
  8.     class Class1
  9.     {
  10.         public void serialOut()
  11.         {
  12.             MainForm _mainForm = new MainForm();
  13.             _mainForm.serialPort1.Open(); //UnauthorizedAccessException was unhandle
  14.             _mainForm.serialPort1.Write(new byte[] { 0x55 }, 0, 1); //InvalidOperationException was unhandle
  15.         }
  16.     }
  17. }

[/code]

I had set the serialPort1 to public in properties.

How can i solve this? Thank you.


Answers (15)