Professional Documents
Culture Documents
Vung Nho 200
Vung Nho 200
#pragma once
namespace VCSerialPort {
/// <summary>
/// Summary for MyForm
/// </summary>
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
public: String^ datain;
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::TextBox^ tbSend;
private: System::Windows::Forms::TextBox^ tbReceive;
protected:
private: System::Windows::Forms::Button^ btSend;
private: System::Windows::Forms::Button^ btExit;
private: System::IO::Ports::SerialPort^ serialPort1;
private: System::Windows::Forms::Label^ label1;
private: System::ComponentModel::IContainer^ components;
protected:
private:
/// <summary>
/// Required designer variable.
/// </summary>
}
#pragma endregion
}
private: System::Void btSend_Click(System::Object^ sender, System::EventArgs^ e)
{
serialPort1->Write(tbSend->Text);
}
private: System::Void DisplayText(System::Object^ sender, System::EventArgs^ e) {
tbReceive->Text=(datain);
}
private: System::Void serialPort1_DataReceived(System::Object^ sender,
System::IO::Ports::SerialDataReceivedEventArgs^ e)
{
datain = serialPort1->ReadExisting();
this->Invoke(gcnew EventHandler(this, &MyForm::DisplayText));
}
private: System::Void btExit_Click(System::Object^ sender, System::EventArgs^ e)
{
serialPort1->Close();
this->Close();
}
};
}
C#SerialPort
using System;
using System.Windows.Forms;
using System.IO.Ports;
namespace SerialCS
{
public partial class Form1 : Form
{
SerialPort ComPort = new SerialPort();
internal delegate void SerialDataReceivedEventHandlerDelegate(
object sender, SerialDataReceivedEventArgs e);
delegate void SetTextCallback(string text);
string InputData = String.Empty;
int RcvNumber;
Label[] lamp = new Label[8];
public Form1()
{
InitializeComponent();
ComPort.DataReceived +=
new SerialDataReceivedEventHandler(Received_1);
}
private void Exit_Click(object sender, EventArgs e)
{
ComPort.Close();
Application.Exit();
}
private void Settings_Click(object sender, EventArgs e)
{
string[] ArrayComPortsNames = null;
int index = -1;
string ComPortName = null;
//Com Ports
ArrayComPortsNames = SerialPort.GetPortNames();
do
{
index += 1;
cboPorts.Items.Add(ArrayComPortsNames[index]);
}
while (!((ArrayComPortsNames[index] == ComPortName) ||
(index == ArrayComPortsNames.GetUpperBound(0))));
Array.Sort(ArrayComPortsNames);
if (index == ArrayComPortsNames.GetUpperBound(0))
{
ComPortName = ArrayComPortsNames[0];
}
cboPorts.Text = ArrayComPortsNames[0];
//Baud Rate
cboBaudRate.Items.Add(9600);
cboBaudRate.Items.Add(19200);
cboBaudRate.Items.Add(38400);
cboBaudRate.Items.Add(57600);
cboBaudRate.Items.Add(115200);
cboBaudRate.Items.ToString();
//get first item print in text
cboBaudRate.Text = cboBaudRate.Items[0].ToString();
//Data Bits
cboDataBits.Items.Add(7);
cboDataBits.Items.Add(8);
cboDataBits.Text = cboDataBits.Items[0].ToString();
//Stop Bits
cboStopBits.Items.Add("One");
cboStopBits.Items.Add("OnePointFive");
cboStopBits.Items.Add("Two");
cboStopBits.Text = cboStopBits.Items[0].ToString();
//Parity
cboParity.Items.Add("None");
cboParity.Items.Add("Even");
cboParity.Items.Add("Mark");
cboParity.Items.Add("Odd");
cboParity.Items.Add("Space");
cboParity.Text = cboParity.Items[0].ToString();
//Handshake
cboHandShaking.Items.Add("None");
cboHandShaking.Items.Add("XOnXOff");
cboHandShaking.Items.Add("RequestToSend");
cboHandShaking.Items.Add("RequestToSendXOnXOff");
cboHandShaking.Text = cboHandShaking.Items[0].ToString();
}
private void Open_Click(object sender, EventArgs e)
{
if (Open.Text == "CLOSED")
{
ComPort.PortName = Convert.ToString(cboPorts.Text);
ComPort.BaudRate = Convert.ToInt32(cboBaudRate.Text);
ComPort.DataBits = Convert.ToInt16(cboDataBits.Text);
ComPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits),
cboStopBits.Text);
ComPort.Handshake = (Handshake)Enum.Parse(typeof(Handshake),
cboHandShaking.Text);
ComPort.Parity = (Parity)Enum.Parse(typeof(Parity), cboParity.Text);
ComPort.ReadTimeout = 4000;
ComPort.WriteTimeout = 6000;
try
{
ComPort.Open();
if (ComPort.IsOpen)
{
Open.Text = "OPENED";
btSend.Enabled = true;
Settings.Enabled = false;
groupBox1.Enabled = false;
groupBox2.Enabled = false;
}
}
catch (UnauthorizedAccessException ex)
{
MessageBox.Show(ex.Message);
}
}
else if (Open.Text == "OPENED")
{
Open.Text = "CLOSED";
ComPort.Close();
btSend.Enabled = false;
Settings.Enabled = true;
groupBox1.Enabled = true;
groupBox2.Enabled = true;
}
}
private void Received_1(object sender, SerialDataReceivedEventArgs e)
{
if (!rbHex.Checked == true)
{
InputData = ComPort.ReadExisting();
if (InputData != String.Empty)
{
//Show data in Rich Text Box
BeginInvoke(new SetTextCallback(SetText), new object[] { InputData });
}
}
else
{
int number = ComPort.BytesToRead;
byte[] buffer = new byte[number];
ComPort.Read(buffer, 0, number);
String data = BitConverter.ToString(buffer);
//Show received Hex in Rich Text box
BeginInvoke(new SetTextCallback(SetText), new object[] { data });
//Show first byte in TextBox tbDec
int firstbyte = buffer[0];
BeginInvoke(new SetTextCallback(SetTextBox), new object[] {
firstbyte.ToString( )});
//Show 8 bits in color of Labels
int i;
for (i = 7; i >= 0; i--)
{
byte a = buffer[0];
byte c = (byte)(Math.Pow(2, i));
if ((a & c) == c)
lamp[i].BackColor = System.Drawing.Color.Green;
else
lamp[i].BackColor = System.Drawing.Color.Red;
}
}
}
private void SetTextBox(string num)
{
tbDec.Text = num;//Show string in TextBox
}
private void SetText(string text)
{
//Show received Data in Rich Text Box
ReceiveData.Text += text + "\n";//Show string in TextBox
}
private void btSend_Click(object sender, EventArgs e)
{
if (!rbHex.Checked == true)
try
{
tbNumber.Text = "";
ComPort.Write(txtSend.Text);
}
catch
{ }
else
{
try
{
byte[] data = StringToByteArray(txtSend.Text);
ComPort.Write(data, 0, data.Length);
}
catch
{ }
}
}
}