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 mycomserialport
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); //初始化组件
}
public string byteToHexStr(byte[] bytes)
{
string returnStr = "";
StringBuilder strb=new StringBuilder();
if (bytes != null)
{ for (int i = 0; i < bytes.Length; i++)
{
strb.Append( bytes[i].ToString("X2"));
strb.Append(" ");
}
}
returnStr = strb.ToString();
return returnStr;
}
private void Assign Text Box Value(TextBox textBox1, string textBoxValue)
{
textBox1.Text += textBoxValue;
}
private delegate void TextBoxValueAssignDelegate(TextBox textBox1, string textBoxValue); private void Open_btn_Click(object sender, EventArgs e)
{
try
{
Close_btn.Enabled = true;
Open_btn.Enabled = false;
label1.Text = "串口" + serialPort1.PortName.ToString() + "已打开!";
serialPort1.Open();
}
catch
{
Close_btn.Enabled = false;
Open_btn.Enabled = true;
label1.Text = "串口" + serialPort1.PortName.ToString() + "打开失败!";
} } private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// 获取字节长度
int bytes = serialPort1.BytesToRead;
// 创建字节数组
byte[] buffer = new byte[bytes];
// 读取缓冲区的数据到数组
serialPort1.Read(buffer, 0, bytes);
// 显示读取的数据到数据窗口
this.BeginInvoke(new TextBoxValueAssignDelegate(this.AssignTextBoxValue), new object[] { textBox1, byteToHexStr(buffer) + "\n" });
} private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.serialPort1.IsOpen)
{
serialPort1.Close();
Close_btn.Enabled = false;
Open_btn.Enabled = true;
}
serialPort1.PortName = comboBox1.SelectedItem.ToString();
} private void Form1_Load(object sender, EventArgs e)
{
//获取串口
Microsoft.VisualBasic.Devices.Computer pc = new Microsoft.VisualBasic.Devices.Computer();
foreach (string s in pc.Ports.SerialPortNames)
{
this.comboBox1.Items.Add(s);
}
this.comboBox1.SelectedIndex = 0;
this.comboBox2.SelectedIndex = 0;
this.comboBox3.SelectedIndex = 0;
this.comboBox4.SelectedIndex = 0;
this.comboBox5.SelectedIndex = 0;
Close_btn.Enabled = false;
Open_btn.Enabled = true;
label1.Text="请选择串口!";
Hex_rbtn.Checked = true;
} private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.serialPort1.IsOpen)
{
serialPort1.Close();
Close_btn.Enabled = false;
Open_btn.Enabled = true;
}
switch (comboBox3.SelectedIndex)
{
case 0:
serialPort1.Parity = Parity.None;
break;
case 1:
serialPort1.Parity = Parity.Odd;
break;
case 2:
serialPort1.Parity = Parity.Even;
break;
default:
MessageBox.Show("请选择串口!");
break;
} } private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.serialPort1.IsOpen)
{
serialPort1.Close();
Close_btn.Enabled = false;
Open_btn.Enabled = true;
}
serialPort1.BaudRate = Convert.ToInt32(comboBox2.SelectedItem);
}
private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.serialPort1.IsOpen)
{
serialPort1.Close();
Close_btn.Enabled = false;
Open_btn.Enabled = true;
}
serialPort1.DataBits = Convert.ToInt16(comboBox4.SelectedItem);
} private void comboBox5_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.serialPort1.IsOpen)
{
serialPort1.Close();
Close_btn.Enabled = false;
Open_btn.Enabled = true;
}
int stopd = Convert.ToInt16(comboBox5.SelectedValue);
switch (stopd)
{
case 0:
serialPort1.StopBits = StopBits.One;
break;
case 1:
serialPort1.StopBits = StopBits.Two;
break;
}
} private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
this.serialPort1.Close();
} private void Close_btn_Click(object sender, EventArgs e)
{
this.serialPort1.Close();
Close_btn.Enabled = false;
Open_btn.Enabled = true;
} private void Cl_btn_Click(object sender, EventArgs e)
{
textBox1.Text = "";
} private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length > 32760)
{
textBox1.Text = "";
}
} private void timer1_Tick(object sender, EventArgs e)
{
try
{
serialPort1.Write(textBox2.Text);
}
catch
{
label1.Text = "发送失败!";
}
}
private void Send_btn_Click(object sender, EventArgs e)
{
if(serialPort1.IsOpen)
{
if (Send_btn.Text == "发送")
{
timer1.Start();
Send_btn.Text = "停止";
}
else
{
timer1.Stop();
Send_btn.Text = "发送";
}
}
else
{
label1.Text = "出口未打开!";
}
}
}
}
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 mycomserialport
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); //初始化组件
}
public string byteToHexStr(byte[] bytes)
{
string returnStr = "";
StringBuilder strb=new StringBuilder();
if (bytes != null)
{ for (int i = 0; i < bytes.Length; i++)
{
strb.Append( bytes[i].ToString("X2"));
strb.Append(" ");
}
}
returnStr = strb.ToString();
return returnStr;
}
private void Assign Text Box Value(TextBox textBox1, string textBoxValue)
{
textBox1.Text += textBoxValue;
}
private delegate void TextBoxValueAssignDelegate(TextBox textBox1, string textBoxValue); private void Open_btn_Click(object sender, EventArgs e)
{
try
{
Close_btn.Enabled = true;
Open_btn.Enabled = false;
label1.Text = "串口" + serialPort1.PortName.ToString() + "已打开!";
serialPort1.Open();
}
catch
{
Close_btn.Enabled = false;
Open_btn.Enabled = true;
label1.Text = "串口" + serialPort1.PortName.ToString() + "打开失败!";
} } private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// 获取字节长度
int bytes = serialPort1.BytesToRead;
// 创建字节数组
byte[] buffer = new byte[bytes];
// 读取缓冲区的数据到数组
serialPort1.Read(buffer, 0, bytes);
// 显示读取的数据到数据窗口
this.BeginInvoke(new TextBoxValueAssignDelegate(this.AssignTextBoxValue), new object[] { textBox1, byteToHexStr(buffer) + "\n" });
} private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.serialPort1.IsOpen)
{
serialPort1.Close();
Close_btn.Enabled = false;
Open_btn.Enabled = true;
}
serialPort1.PortName = comboBox1.SelectedItem.ToString();
} private void Form1_Load(object sender, EventArgs e)
{
//获取串口
Microsoft.VisualBasic.Devices.Computer pc = new Microsoft.VisualBasic.Devices.Computer();
foreach (string s in pc.Ports.SerialPortNames)
{
this.comboBox1.Items.Add(s);
}
this.comboBox1.SelectedIndex = 0;
this.comboBox2.SelectedIndex = 0;
this.comboBox3.SelectedIndex = 0;
this.comboBox4.SelectedIndex = 0;
this.comboBox5.SelectedIndex = 0;
Close_btn.Enabled = false;
Open_btn.Enabled = true;
label1.Text="请选择串口!";
Hex_rbtn.Checked = true;
} private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.serialPort1.IsOpen)
{
serialPort1.Close();
Close_btn.Enabled = false;
Open_btn.Enabled = true;
}
switch (comboBox3.SelectedIndex)
{
case 0:
serialPort1.Parity = Parity.None;
break;
case 1:
serialPort1.Parity = Parity.Odd;
break;
case 2:
serialPort1.Parity = Parity.Even;
break;
default:
MessageBox.Show("请选择串口!");
break;
} } private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.serialPort1.IsOpen)
{
serialPort1.Close();
Close_btn.Enabled = false;
Open_btn.Enabled = true;
}
serialPort1.BaudRate = Convert.ToInt32(comboBox2.SelectedItem);
}
private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.serialPort1.IsOpen)
{
serialPort1.Close();
Close_btn.Enabled = false;
Open_btn.Enabled = true;
}
serialPort1.DataBits = Convert.ToInt16(comboBox4.SelectedItem);
} private void comboBox5_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.serialPort1.IsOpen)
{
serialPort1.Close();
Close_btn.Enabled = false;
Open_btn.Enabled = true;
}
int stopd = Convert.ToInt16(comboBox5.SelectedValue);
switch (stopd)
{
case 0:
serialPort1.StopBits = StopBits.One;
break;
case 1:
serialPort1.StopBits = StopBits.Two;
break;
}
} private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
this.serialPort1.Close();
} private void Close_btn_Click(object sender, EventArgs e)
{
this.serialPort1.Close();
Close_btn.Enabled = false;
Open_btn.Enabled = true;
} private void Cl_btn_Click(object sender, EventArgs e)
{
textBox1.Text = "";
} private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length > 32760)
{
textBox1.Text = "";
}
} private void timer1_Tick(object sender, EventArgs e)
{
try
{
serialPort1.Write(textBox2.Text);
}
catch
{
label1.Text = "发送失败!";
}
}
private void Send_btn_Click(object sender, EventArgs e)
{
if(serialPort1.IsOpen)
{
if (Send_btn.Text == "发送")
{
timer1.Start();
Send_btn.Text = "停止";
}
else
{
timer1.Stop();
Send_btn.Text = "发送";
}
}
else
{
label1.Text = "出口未打开!";
}
}
}
}
命名空间,类名是不是和.cs里一致
Form1 .Designer.cs文件:
namespace WindowsFormsApplication9
{
public partial class Form1
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null; /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
} #region Windows 窗体设计器生成的代码 /// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 262);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false); } #endregion
}
}
Form1.cs的命名空间是:namespace mycomserialport
Form1.Designer.cs的命名空间是:namespace WindowsFormsApplication9
修改成一致就行