using
System;
using
System.Drawing;
using
System.Collections;
using
System.ComponentModel;
using
System.Windows.Forms;
using
System.Data;
using
System.Threading;
namespace
BusApp
{
///
<summary>
///
Form1 的摘要说明。
///
</summary>
public
class
Form1 : System.Windows.Forms.Form
{
private
System.Windows.Forms.Label label1;
private
System.Windows.Forms.Label label2;
private
System.Windows.Forms.Button button1;
private
System.Windows.Forms.GroupBox groupBox1;
private
System.Windows.Forms.Label label3;
private
System.Windows.Forms.Label label4;
private
System.Windows.Forms.Label label5;
private
System.Windows.Forms.Label label6;
private
System.Windows.Forms.Button button2;
private
System.Windows.Forms.Button button3;
private
System.Windows.Forms.Button button4;
private
System.Windows.Forms.TextBox textBox8;
private
System.Windows.Forms.Label label7;
public
int
iPort
=
1
;
//
1,2,3,4
public
int
iRate
=
9600
;
//
1200,2400,4800,9600
public
byte
bSize
=
8
;
//
8 bits
public
byte
bParity
=
0
;
//
0-4=no,odd,even,mark,space
public
byte
bStopBits
=
1
;
//
0,1,2 = 1, 1.5, 2
public
int
iTimeout
=
1000
;
public
mycom mycom1
=
new
mycom();
public
byte
[] recb;
private
System.Windows.Forms.TextBox msg;
private
System.Windows.Forms.TextBox t_port;
private
System.Windows.Forms.TextBox t_rate;
private
System.Windows.Forms.TextBox t_bytesize;
private
System.Windows.Forms.TextBox t_stopbyte;
private
System.Windows.Forms.TextBox t_parity;
private
System.Windows.Forms.TextBox t_send;
private
System.Windows.Forms.Button button5;
//
readTimeOut
///
<summary>
///
必需的设计器变量。
///
</summary>
private
System.ComponentModel.Container components
=
null
;
public
Form1()
{
InitializeComponent();
}
///
<summary>
///
清理所有正在使用的资源。
///
</summary>
protected
override
void
Dispose(
bool
disposing )
{
if
( disposing )
{
if
(components
!=
null
)
{
components.Dispose();
}
}
base
.Dispose( disposing );
}
#region
Windows 窗体设计器生成的代码
///
<summary>
///
设计器支持所需的方法 - 不要使用代码编辑器修改
///
此方法的内容。
///
</summary>
private
void
InitializeComponent()
{
this
.msg
=
new
System.Windows.Forms.TextBox();
this
.label1
=
new
System.Windows.Forms.Label();
this
.label2
=
new
System.Windows.Forms.Label();
this
.t_send
=
new
System.Windows.Forms.TextBox();
this
.button1
=
new
System.Windows.Forms.Button();
this
.groupBox1
=
new
System.Windows.Forms.GroupBox();
this
.button2
=
new
System.Windows.Forms.Button();
this
.t_port
=
new
System.Windows.Forms.TextBox();
this
.label3
=
new
System.Windows.Forms.Label();
this
.t_rate
=
new
System.Windows.Forms.TextBox();
this
.label4
=
new
System.Windows.Forms.Label();
this
.t_bytesize
=
new
System.Windows.Forms.TextBox();
this
.label5
=
new
System.Windows.Forms.Label();
this
.t_stopbyte
=
new
System.Windows.Forms.TextBox();
this
.label6
=
new
System.Windows.Forms.Label();
this
.t_parity
=
new
System.Windows.Forms.TextBox();
this
.button3
=
new
System.Windows.Forms.Button();
this
.button4
=
new
System.Windows.Forms.Button();
this
.textBox8
=
new
System.Windows.Forms.TextBox();
this
.label7
=
new
System.Windows.Forms.Label();
this
.button5
=
new
System.Windows.Forms.Button();
this
.groupBox1.SuspendLayout();
this
.SuspendLayout();
//
//
msg
//
this
.msg.ForeColor
=
System.Drawing.Color.Green;
this
.msg.Location
=
new
System.Drawing.Point(
0
,
0
);
this
.msg.Multiline
=
true
;
this
.msg.Name
=
"
msg
"
;
this
.msg.ScrollBars
=
System.Windows.Forms.ScrollBars.Vertical;
this
.msg.Size
=
new
System.Drawing.Size(
512
,
264
);
this
.msg.TabIndex
=
0
;
this
.msg.Text
=
""
;
//
//
label1
//
this
.label1.Location
=
new
System.Drawing.Point(
16
,
24
);
this
.label1.Name
=
"
label1
"
;
this
.label1.Size
=
new
System.Drawing.Size(
56
,
16
);
this
.label1.TabIndex
=
1
;
this
.label1.Text
=
"
串口号:
"
;
//
//
label2
//
this
.label2.ForeColor
=
System.Drawing.Color.FromArgb(((System.Byte)(
192
)), ((System.Byte)(
64
)), ((System.Byte)(
0
)));
this
.label2.Location
=
new
System.Drawing.Point(
8
,
280
);
this
.label2.Name
=
"
label2
"
;
this
.label2.Size
=
new
System.Drawing.Size(
80
,
16
);
this
.label2.TabIndex
=
1
;
this
.label2.Text
=
"
设置数据包:
"
;
//
//
t_send
//
this
.t_send.BorderStyle
=
System.Windows.Forms.BorderStyle.FixedSingle;
this
.t_send.ForeColor
=
System.Drawing.Color.FromArgb(((System.Byte)(
255
)), ((System.Byte)(
128
)), ((System.Byte)(
0
)));
this
.t_send.Location
=
new
System.Drawing.Point(
80
,
272
);
this
.t_send.Name
=
"
t_send
"
;
this
.t_send.Size
=
new
System.Drawing.Size(
344
,
21
);
this
.t_send.TabIndex
=
2
;
this
.t_send.Text
=
""
;
//
//
button1
//
this
.button1.Location
=
new
System.Drawing.Point(
432
,
272
);
this
.button1.Name
=
"
button1
"
;
this
.button1.Size
=
new
System.Drawing.Size(
40
,
23
);
this
.button1.TabIndex
=
3
;
this
.button1.Text
=
"
发送
"
;
this
.button1.Click
+=
new
System.EventHandler(
this
.button1_Click);
//
//
groupBox1
//
this
.groupBox1.Controls.Add(
this
.button2);
this
.groupBox1.Controls.Add(
this
.t_port);
this
.groupBox1.Controls.Add(
this
.label1);
this
.groupBox1.Controls.Add(
this
.label3);
this
.groupBox1.Controls.Add(
this
.t_rate);
this
.groupBox1.Controls.Add(
this
.label4);
this
.groupBox1.Controls.Add(
this
.t_bytesize);
this
.groupBox1.Controls.Add(
this
.label5);
this
.groupBox1.Controls.Add(
this
.t_stopbyte);
this
.groupBox1.Controls.Add(
this
.label6);
this
.groupBox1.Controls.Add(
this
.t_parity);
this
.groupBox1.ForeColor
=
System.Drawing.Color.FromArgb(((System.Byte)(
192
)), ((System.Byte)(
64
)), ((System.Byte)(
0
)));
this
.groupBox1.Location
=
new
System.Drawing.Point(
8
,
304
);
this
.groupBox1.Name
=
"
groupBox1
"
;
this
.groupBox1.Size
=
new
System.Drawing.Size(
176
,
216
);
this
.groupBox1.TabIndex
=
4
;
this
.groupBox1.TabStop
=
false
;
this
.groupBox1.Text
=
"
参数设置
"
;
//
//
button2
//
this
.button2.FlatStyle
=
System.Windows.Forms.FlatStyle.Popup;
this
.button2.Location
=
new
System.Drawing.Point(
80
,
184
);
this
.button2.Name
=
"
button2
"
;
this
.button2.TabIndex
=
3
;
this
.button2.Text
=
"
应用设置
"
;
this
.button2.Click
+=
new
System.EventHandler(
this
.button2_Click);
//
//
t_port
//
this
.t_port.BorderStyle
=
System.Windows.Forms.BorderStyle.FixedSingle;
this
.t_port.Location
=
new
System.Drawing.Point(
80
,
16
);
this
.t_port.Name
=
"
t_port
"
;
this
.t_port.Size
=
new
System.Drawing.Size(
80
,
21
);
this
.t_port.TabIndex
=
2
;
this
.t_port.Text
=
"
1
"
;
//
//
label3
//
this
.label3.Location
=
new
System.Drawing.Point(
16
,
58
);
this
.label3.Name
=
"
label3
"
;
this
.label3.Size
=
new
System.Drawing.Size(
56
,
16
);
this
.label3.TabIndex
=
1
;
this
.label3.Text
=
"
波特率:
"
;
//
//
t_rate
//
this
.t_rate.BorderStyle
=
System.Windows.Forms.BorderStyle.FixedSingle;
this
.t_rate.Location
=
new
System.Drawing.Point(
80
,
50
);
this
.t_rate.Name
=
"
t_rate
"
;
this
.t_rate.Size
=
new
System.Drawing.Size(
80
,
21
);
this
.t_rate.TabIndex
=
2
;
this
.t_rate.Text
=
"
9600
"
;
//
//
label4
//
this
.label4.Location
=
new
System.Drawing.Point(
16
,
92
);
this
.label4.Name
=
"
label4
"
;
this
.label4.Size
=
new
System.Drawing.Size(
56
,
16
);
this
.label4.TabIndex
=
1
;
this
.label4.Text
=
"
数据位:
"
;
//
//
t_bytesize
//
this
.t_bytesize.BorderStyle
=
System.Windows.Forms.BorderStyle.FixedSingle;
this
.t_bytesize.Location
=
new
System.Drawing.Point(
80
,
84
);
this
.t_bytesize.Name
=
"
t_bytesize
"
;
this
.t_bytesize.Size
=
new
System.Drawing.Size(
80
,
21
);
this
.t_bytesize.TabIndex
=
2
;
this
.t_bytesize.Text
=
"
8
"
;
//
//
label5
//
this
.label5.Location
=
new
System.Drawing.Point(
16
,
126
);
this
.label5.Name
=
"
label5
"
;
this
.label5.Size
=
new
System.Drawing.Size(
56
,
16
);
this
.label5.TabIndex
=
1
;
this
.label5.Text
=
"
停止位:
"
;
//
//
t_stopbyte
//
this
.t_stopbyte.BorderStyle
=
System.Windows.Forms.BorderStyle.FixedSingle;
this
.t_stopbyte.Location
=
new
System.Drawing.Point(
80
,
118
);
this
.t_stopbyte.Name
=
"
t_stopbyte
"
;
this
.t_stopbyte.Size
=
new
System.Drawing.Size(
80
,
21
);
this
.t_stopbyte.TabIndex
=
2
;
this
.t_stopbyte.Text
=
"
1
"
;
//
//
label6
//
this
.label6.Location
=
new
System.Drawing.Point(
16
,
160
);
this
.label6.Name
=
"
label6
"
;
this
.label6.Size
=
new
System.Drawing.Size(
56
,
16
);
this
.label6.TabIndex
=
1
;
this
.label6.Text
=
"
校验位:
"
;
//
//
t_parity
//
this
.t_parity.BorderStyle
=
System.Windows.Forms.BorderStyle.FixedSingle;
this
.t_parity.Enabled
=
false
;
this
.t_parity.Location
=
new
System.Drawing.Point(
80
,
152
);
this
.t_parity.Name
=
"
t_parity
"
;
this
.t_parity.Size
=
new
System.Drawing.Size(
80
,
21
);
this
.t_parity.TabIndex
=
2
;
this
.t_parity.Text
=
"
0
"
;
//
//
button3
//
this
.button3.Location
=
new
System.Drawing.Point(
472
,
272
);
this
.button3.Name
=
"
button3
"
;
this
.button3.Size
=
new
System.Drawing.Size(
40
,
23
);
this
.button3.TabIndex
=
3
;
this
.button3.Text
=
"
清空
"
;
this
.button3.Click
+=
new
System.EventHandler(
this
.button3_Click);
//
//
button4
//
this
.button4.FlatStyle
=
System.Windows.Forms.FlatStyle.Popup;
this
.button4.Location
=
new
System.Drawing.Point(
432
,
312
);
this
.button4.Name
=
"
button4
"
;
this
.button4.Size
=
new
System.Drawing.Size(
72
,
23
);
this
.button4.TabIndex
=
6
;
this
.button4.Text
=
"
初始化
"
;
//
//
textBox8
//
this
.textBox8.BorderStyle
=
System.Windows.Forms.BorderStyle.FixedSingle;
this
.textBox8.ForeColor
=
System.Drawing.Color.FromArgb(((System.Byte)(
255
)), ((System.Byte)(
128
)), ((System.Byte)(
0
)));
this
.textBox8.Location
=
new
System.Drawing.Point(
288
,
312
);
this
.textBox8.Name
=
"
textBox8
"
;
this
.textBox8.Size
=
new
System.Drawing.Size(
136
,
21
);
this
.textBox8.TabIndex
=
7
;
this
.textBox8.Text
=
""
;
//
//
label7
//
this
.label7.Location
=
new
System.Drawing.Point(
200
,
320
);
this
.label7.Name
=
"
label7
"
;
this
.label7.Size
=
new
System.Drawing.Size(
100
,
16
);
this
.label7.TabIndex
=
8
;
this
.label7.Text
=
"
设置本机地址:
"
;
//
//
button5
//
this
.button5.FlatStyle
=
System.Windows.Forms.FlatStyle.Popup;
this
.button5.Location
=
new
System.Drawing.Point(
440
,
504
);
this
.button5.Name
=
"
button5
"
;
this
.button5.Size
=
new
System.Drawing.Size(
64
,
23
);
this
.button5.TabIndex
=
9
;
this
.button5.Text
=
"
关闭串口
"
;
this
.button5.Click
+=
new
System.EventHandler(
this
.button5_Click);
//
//
Form1
//
this
.AutoScaleBaseSize
=
new
System.Drawing.Size(
6
,
14
);
this
.ClientSize
=
new
System.Drawing.Size(
512
,
533
);
this
.Controls.Add(
this
.button5);
this
.Controls.Add(
this
.textBox8);
this
.Controls.Add(
this
.label7);
this
.Controls.Add(
this
.button4);
this
.Controls.Add(
this
.groupBox1);
this
.Controls.Add(
this
.button1);
this
.Controls.Add(
this
.t_send);
this
.Controls.Add(
this
.msg);
this
.Controls.Add(
this
.label2);
this
.Controls.Add(
this
.button3);
this
.Name
=
"
Form1
"
;
this
.Text
=
"
串口通讯(小y设计)
"
;
this
.Closing
+=
new
System.ComponentModel.CancelEventHandler(
this
.Form1_Closing);
this
.Load
+=
new
System.EventHandler(
this
.Form1_Load);
this
.groupBox1.ResumeLayout(
false
);
this
.ResumeLayout(
false
);
}
#endregion
///
<summary>
///
应用程序的主入口点。
///
</summary>
[STAThread]
static
void
Main()
{
Application.Run(
new
Form1());
}
//
程序开启,串口初始化
private
void
Form1_Load(
object
sender, System.EventArgs e)
{
mycom1.PortNum
=
iPort;
mycom1.BaudRate
=
iRate;
mycom1.ByteSize
=
bSize;
mycom1.Parity
=
bParity;
mycom1.StopBits
=
bStopBits;
mycom1.ReadTimeout
=
iTimeout;
if
(
this
.OpenCom())
msg.AppendText(
"
串口初始化成功……\r\n
"
);
else
msg.AppendText(
"
串口初始化失败!\r\n
"
);
}
//
显示包信息
public
string
dis_package(
byte
[] reb)
{
string
temp
=
""
;
foreach
(
byte
b
in
reb)
temp
+=
b.ToString(
"
X2
"
)
+
"
"
;
return
temp;
}
//
开串口
public
bool
OpenCom()
{
try
{
if
(mycom1.Opened)
{
mycom1.Close();
mycom1.Open();
//
打开串口
}
else
{
mycom1.Open();
//
打开串口
}
return
true
;
}
catch
(Exception e)
{
MessageBox.Show(
"
错误:
"
+
e.Message);
return
false
;
}
}
//
发送按钮
private
void
button1_Click(
object
sender, System.EventArgs e)
{
if
(t_send.Text
==
""
)
{MessageBox.Show(
"
发送数据为空!
"
);
return
;}
byte
[] temp1
=
mysendb();
int
sendnumb
=
0
;
try
{
sendnumb
=
mycom1.Write(temp1);
msg.AppendText(
"
\r\n发送数据(
"
+
sendnumb
+
"
):
"
+
dis_package(temp1));
recb
=
mycom1.Read(
50
);
//
if(recb.Length!=0)
msg.AppendText(
"
\r\n接收到数据包:
"
+
dis_package(recb));
}
catch
{msg.AppendText(
"
\r\n发送失败!
"
);
return
;}
//
OpenCom();
}
//
去掉发送数组中的空格
public
string
delspace(
string
putin)
{
string
putout
=
""
;
for
(
int
i
=
0
;i
<
putin.Length;i
++
)
{
if
(putin[i]
!=
'
'
)
putout
+=
putin[i];
}
return
putout;
}
//
提取数据包
public
byte
[] mysendb()
{
string
temps
=
delspace(t_send.Text);
byte
[] tempb
=
new
byte
[
50
];
int
j
=
0
;
for
(
int
i
=
0
;i
<
temps.Length;i
=
i
+
2
,j
++
)
tempb[j]
=
Convert.ToByte(temps.Substring(i,
2
),
16
);
byte
[] send
=
new
byte
[j];
Array.Copy(tempb,send,j);
return
send;
}
//
清空按钮
private
void
button3_Click(
object
sender, System.EventArgs e)
{
t_send.Text
=
string
.Empty;
msg.Text
=
string
.Empty;
}
//
参数设置
private
void
button2_Click(
object
sender, System.EventArgs e)
{
mycom1.PortNum
=
Convert.ToInt16(t_port.Text);
//
1,2,3,4
mycom1.BaudRate
=
Convert.ToInt16(t_rate.Text);
//
1200,2400,4800,9600
mycom1.ByteSize
=
Convert.ToByte(t_bytesize.Text,
10
);
//
8 bits
mycom1.Parity
=
Convert.ToByte(t_parity.Text,
10
);
//
0-4=no,odd,even,mark,space
mycom1.StopBits
=
Convert.ToByte(t_stopbyte.Text,
10
);
//
0,1,2 = 1, 1.5, 2
//
iTimeout=3;
if
(
this
.OpenCom())
msg.AppendText(
"
串口初始化成功……\r\n
"
);
else
msg.AppendText(
"
串口初始化失败!\r\n
"
);
}
//
程序关闭,结束串口
private
void
Form1_Closing(
object
sender, System.ComponentModel.CancelEventArgs e)
{
mycom1.Close();
}
private
void
button5_Click(
object
sender, System.EventArgs e)
{
if
(mycom1.Opened)
{
mycom1.Close();
button5.Text
=
"
开启串口
"
;
msg.AppendText(
"
\r\n串口被关闭……
"
);
}
else
{
mycom1.Open();
button5.Text
=
"
关闭串口
"
;
msg.AppendText(
"
\r\n串口成功开启……
"
);
}
}
}
}