using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespace CS_W32_serial_ctrl { public partial class Form1 : Form { SerialPort serialPort; //Tady mi neni jasny co se deje // >> vytvoření proměnné typu SerialPort (třída pro obsluhu COMu), ale zatím je neinicializovaná // přesněji jde o referenci na objekt typu ... public Form1() { InitializeComponent(); comboBox1.Tag = SerialPort.GetPortNames(); if ( ( (string[]) (comboBox1.Tag) ).Length != 0) /* AHA TAK TAKHLE SE PRETYPOVAVA TEDA,NECHAPU ALE KDYZ TO MA BEJT POLE TAK ZE V TY ZAVORCE JE STRING[] A PROC KDYZ JE TO POLE SE TADY NEMUSI UVIST HRANATA ZAVORKA,TAKHLE ((string[]) (comboBox1.Tag))[].Length ??? */ { for (int i = 0; i < ((string[])(comboBox1.Tag)).Length; i++) { comboBox1.Items.Add(((string[])(comboBox1.Tag))[i]); } comboBox1.SelectedIndex = 0; } else { MessageBox.Show("V počítači není žádný PORT !!!"); } serialPort = new SerialPort(); // inicializace = vytvoření instance třídy SerialPort, její fyzický vznik v paměti. serialPort.PinChanged += new SerialPinChangedEventHandler(serialPort_PinChanged); serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived); //[1] } void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { serialPort.DiscardInBuffer(); } void serialPort_PinChanged(object sender, SerialPinChangedEventArgs e) { checkBox_Cd.Checked = serialPort.CDHolding; checkBox_Cts.Checked = serialPort.CtsHolding; checkBox_Dsr.Checked = serialPort.DsrHolding; } private void butt_open_Click(object sender, EventArgs e) { try { if (serialPort.IsOpen != true) { serialPort.PortName = ((string[])(comboBox1.Tag))[comboBox1.SelectedIndex];//nechapu ten zapis serialPort.Open(); label_stav.Text = "Port " + serialPort.PortName + " otevren."; butt_open.Text = "Close"; } else { serialPort.Close(); label_stav.Text = "Odpojeno"; butt_open.Text = "Open"; } } catch (Exception ex)//TOHLE TAKY NECHAPU !!!!!!! { MessageBox.Show(ex.Message); } } private void checkBox_Dtr_CheckedChanged(object sender, EventArgs e) { if (serialPort.IsOpen) { serialPort.DtrEnable = ((CheckBox)sender).Checked; /*A NESLO BY TU JEDNODUSE NAPSAT: serialPort.DtrEnable = CheckBox_Dtr.checked; PROSTE STAV BOXU PRI ZMENE SOUPNU NA PIN... } } private void checkBox_Rts_CheckedChanged(object sender, EventArgs e) { if (serialPort.IsOpen) { serialPort.RtsEnable = ((CheckBox)sender).Checked; } } } }