C# odwołanie do struktury

0

Witam
Tworzę aplikacje do komunikacji z arduino i mam parobem z odwołaniem się do struktury danych. Szukałem informacji na msdn i w internecie ale wszystko wygląda tak jak mam ja. Visual studio krzyczy że jest niedostępne na tym poziomie ochrony.

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;

public struct ramka 
{
    char kod_rozkazu;
    int wartosc;
    int temp_akt;
    int tempwy_akt;
    int wilgotnosc_akt;
    int jasnosc_akt;
    int kolor_akt;
}

namespace ArduinoappPc01
{
    public partial class Form1 : Form
    {
        private SerialPort myport;
        // private DataTime datatime;
        private string in_data;
        bool stan;
        public Form1()

        {
            InitializeComponent();
        }


        public ramka rozkaz = new ramka();
        private void button1_Click(object sender, EventArgs e)
        {
            myport = new SerialPort();
            myport.BaudRate = 9600;
            myport.PortName = port_name_tb.Text;
            myport.Parity = Parity.None;
            myport.DataBits = 8;
            myport.StopBits = StopBits.One;
            myport.DataReceived += myport_DataReceived;

            try
            {
                myport.Open();
                stan = true;
                textBox2.Clear();
                textBox2.Text += "Połączono" + Environment.NewLine;
                //  data_tb.Text = "";
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error");
            }
        }
        private void myport_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {

          //  in_data = myport.ReadLine();
           // this.Invoke(new EventHandler(displaydata_event));



        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                myport.Close();
                stan = false;
                textBox2.Clear();
                textBox2.Text += "Rozłączono";
            }
            catch (Exception ex2)
            {
                MessageBox.Show(ex2.Message, "Error");
            }

        }
        
        private void textBox4_TextChanged(object sender, EventArgs e)
        {

         rozkaz.kod_rozkazu 
         
        }
    }
}

Dokładnie chodzi o odwołanie

rozkaz.kod_rozkazu 
 

Do

public struct ramka 
{
    char kod_rozkazu;
    int wartosc;
    int temp_akt;
    int tempwy_akt;
    int wilgotnosc_akt;
    int jasnosc_akt;
    int kolor_akt;
}
 
0

Wrzuć cały kod (lub inaczej: minimalny przedstawiający problem - ale taki, co chociaż jest poprawny pod względem składni).

0

Domyślnie pola są private więc nie możesz odnosić się do nich z zewnątrz.

0

To jest cały kod który mam na chwile obecną.
Tak wiem dlatego inicjalizuje metodę

 public ramka rozkaz = new ramka();
0

Domyslny (jesli nie okreslisz go explicite) poziom dostepu do pol w klasie/strukturze to private.
Zamien

 char kod_rozkazu;

na

 public char kod_rozkazu;

i juz bedziesz mogl sie odwolac do swojego pola spoza wnetrza struktury.

Aczkolwiek nie jest to najlepsze rozwiazanie ze wzgledu na enkapsulacje i problemy ze strukturami, ktore sa mutable.

0
Trzeźwy Terrorysta napisał(a):

To jest cały kod który mam na chwile obecną.
Tak wiem dlatego inicjalizuje metodę

 public ramka rozkaz = new ramka();

To nie ma nic do rzeczy.
Teraz pole rozkaz z klasy Form1 jest publiczne, ale wszystkie wewnętrzne pola struktury i tak są prywatne.

0

To jest cały kod który mam na chwile obecną.

No ale przecież tam nic z tym polem kod_rozkazu nie robisz (abstrahując już od jego widoczności) - ani nie czytasz, ani nie przypisujesz.
To tak, jak gdybyś napisał sobie w kodzie tak znikąd 9999 albo witajswiecie i dziwił się że nie działa.

0

Kod_rozkazu był nieużywany dla przykładu, docelowo będzie miał przypisane funkcję. Problem rozwiązałem poprzez dopisanie public elementom struktury

0

Witam,

Możesz podać przykład danych które pojawiają się na porcie szeregowym, czym są rozdzielane poszczególne ramki?

Pozdrawiam,

mr-owl

1 użytkowników online, w tym zalogowanych: 0, gości: 1