
Radim neki programcic oko serialPorta, medjutim to sad i nije u centru ovog pitanja, ali cu ipak trenutni problem iskoristiti za objasnjenje problema. Naime, imam formu Form1 na kojoj imam elemente button, radiobutton, textBox,... Sama forma je interfejs, dok sam u class PortProperties definisao objekat SerialPort i sve potrebne parametre za njegovo otvaranje, zatvaranje i sve promene na elementima na Form1 koji se vezuju za ove evente. Sve ovo radi super, ali mi je koncept bio da sada i Write i Received Data odvojim kao posebne klase jer je prijem i slanje podataka malo komplikovaniji, pa nebih da zatrpam class PortProperties. Medjutim, tu sam naisao na problem. Pritiskom dugmeta koje se nalazi na Form1 trebo bi da posaljem neki string npr. "Hello!". Ono sto mi je uspelo izgleda otprilike ovako:
Code:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
PortProperties portProperties = new PortProperties();
private void btnSend_Click(object sender, EventArgs e)
{
portProperties.Send("NUL");
}
private void btnOpen_Click(object sender, EventArgs e)
{
portProperties.OpenPort();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
portProperties.ClosePort();
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
PortProperties portProperties = new PortProperties();
private void btnSend_Click(object sender, EventArgs e)
{
portProperties.Send("NUL");
}
private void btnOpen_Click(object sender, EventArgs e)
{
portProperties.OpenPort();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
portProperties.ClosePort();
}
}
Code:
class PortProperties
{
Send send = new Send();
private string _baudRate = string.Empty;
private string _parity = string.Empty;
private string _stopBits = string.Empty;
private string _dataBits = string.Empty;
private string _portName = string.Empty;
private SerialPort comPort = new SerialPort();
public string BaudRate
{
get { return _baudRate; }
set { _baudRate = value; }
}
public string Parity
{
get { return _parity; }
set { _parity = value; }
}
public string StopBits
{
get { return _stopBits; }
set { _stopBits = value; }
}
public string DataBits
{
get { return _dataBits; }
set { _dataBits = value; }
}
public string PortName
{
get { return _portName; }
set { _portName = value; }
}
public PortProperties()
{
_baudRate = string.Empty;
_parity = string.Empty;
_stopBits = string.Empty;
_dataBits = string.Empty;
_portName = "COM3";
public PortProperties(string baud, string par, string sBits, string dBits, string name)
{
_baudRate = baud;
_parity = par;
_stopBits = sBits;
_dataBits = dBits;
_portName = name;
}
public bool OpenPort()
{
//tamo neki kod kojim se postavljaju parametri porta
comPort.Open();
}
public bool ClosePort()
{
comPort.Close();
}
public void Send(string msg)
{
send.WriteData(comPort ,msg);
}
}
class PortProperties
{
Send send = new Send();
private string _baudRate = string.Empty;
private string _parity = string.Empty;
private string _stopBits = string.Empty;
private string _dataBits = string.Empty;
private string _portName = string.Empty;
private SerialPort comPort = new SerialPort();
public string BaudRate
{
get { return _baudRate; }
set { _baudRate = value; }
}
public string Parity
{
get { return _parity; }
set { _parity = value; }
}
public string StopBits
{
get { return _stopBits; }
set { _stopBits = value; }
}
public string DataBits
{
get { return _dataBits; }
set { _dataBits = value; }
}
public string PortName
{
get { return _portName; }
set { _portName = value; }
}
public PortProperties()
{
_baudRate = string.Empty;
_parity = string.Empty;
_stopBits = string.Empty;
_dataBits = string.Empty;
_portName = "COM3";
public PortProperties(string baud, string par, string sBits, string dBits, string name)
{
_baudRate = baud;
_parity = par;
_stopBits = sBits;
_dataBits = dBits;
_portName = name;
}
public bool OpenPort()
{
//tamo neki kod kojim se postavljaju parametri porta
comPort.Open();
}
public bool ClosePort()
{
comPort.Close();
}
public void Send(string msg)
{
send.WriteData(comPort ,msg);
}
}
Code:
class Send
{
public void WriteData(SerialPort comPort, string msg)
{
comPort.Write(msg);
}
}
class Send
{
public void WriteData(SerialPort comPort, string msg)
{
comPort.Write(msg);
}
}
Ovo je sve nesto ukratko, ali ovaj kod radi dobr. Medjutim, ne deluje mi elgantno. Nekako sticem utisak da moze i drugacije da se izorganizuje kod ali mi nikako ne pada na pamet neko resenje. Imali neko neku sugestiju, predlog?