c#串口通信Word格式文档下载.docx
《c#串口通信Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c#串口通信Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
(btn就是button的简写了)。
我认为这种命名控件的方式比较好,建议大家使用,如果你有好的命名方式,希望你能告诉我!
下面我们将各个功能按照从主到次的顺序逐个实现。
(我分块给出代码实现,详细代码见链接:
《C#串口通信工具》)
一、获取计算机的COM口总个数,将它们列为控件cbSerial的候选项,并将第一个设为cbSerial的默认选项。
这部分是在窗体加载时完成的。
请看代码:
(很多信息代码的注释里讲的很清楚,我就不赘述了。
)
[csharp]
viewplaincopyprint?
1.//检查是否含有串口
2.
string[]
str
=
SerialPort.GetPortNames();
3.
if
(str
==
null)
4.
{
5.
MessageBox.Show("
本机没有串口!
"
Error"
);
6.
return;
7.
}
8.
9.
//添加串口项目
10.
foreach
(string
s
in
System.IO.Ports.SerialPort.GetPortNames())
11.
{//获取有多少个COM口
12.
cbSerial.Items.Add(s);
13.
14.
15.
//串口设置默认选择项
16.
cbSerial.SelectedIndex
0;
//设置<
span
style="
font-size:
18px;
>
<
strong>
cbSerial的默认选项<
/strong>
/span>
二、“串口设置”
这面我没代码编程,直接从窗体上按照串口信息设置就行。
我们仅设置它们的默认选项,但这里我用到了ini文件,暂时不讲,我们先以下面形式设置默认。
1.
cbBaudRate.SelectedIndex
5;
cbDataBits.SelectedIndex
3;
cbStop.SelectedIndex
cbParity.SelectedIndex
radio1.Checked
true;
//发送数据的“16进制”单选按钮(这里我忘了改名,现在看着很不舒服!
)
rbRcvStr.Checked
三、打开串口
在发送信息之前,我们需要根据选中的选项设置串口信息,并设置一些控件的属性,最后将串口打开。
private
void
btnSwitch_Click(object
sender,
EventArgs
e)
3.<
white-space:
pre"
//sp1是全局变量。
SerialPort
sp1
new
SerialPort();
(!
sp1.IsOpen)
try
//设置串口号
string
serialName
cbSerial.SelectedItem.ToString();
sp1.PortName
serialName;
//设置各“串口设置”
strBaudRate
cbBaudRate.Text;
strDateBits
cbDataBits.Text;
strStopBits
cbStop.Text;
Int32
iBaudRate
Convert.ToInt32(strBaudRate);
17.
iDateBits
Convert.ToInt32(strDateBits);
18.
19.
sp1.BaudRate
iBaudRate;
//波特率
20.
sp1.DataBits
iDateBits;
//数据位
21.
switch
(cbStop.Text)
//停止位
22.
23.
case
1"
:
24.
sp1.StopBits
StopBits.One;
25.
break;
26.
1.5"
27.
StopBits.OnePointFive;
28.
29.
2"
30.
StopBits.Two;
31.
32.
default:
33.
Error:
参数不正确!
34.
35.
36.
(cbParity.Text)
//校验位
37.
38.
无"
39.
sp1.Parity
Parity.None;
40.
41.
奇校验"
42.
Parity.Odd;
43.
44.
偶校验"
45.
Parity.Even;
46.
47.
48.
49.
50.
51.
52.
(sp1.IsOpen
true)//如果打开状态,则先关闭一下
53.
54.
sp1.Close();
55.
56.
//状态栏设置
57.
tsSpNum.Text
串口号:
+
|"
;
58.
tsBaudRate.Text
波特率:
59.
tsDataBits.Text
数据位:
60.
tsStopBits.Text
停止位:
61.
tsParity.Text
校验位:
62.
63.
//设置必要控件不可用
64.
cbSerial.Enabled
false;
65.
cbBa