没有合适的资源?快使用搜索试试~ 我知道了~
用C#一步步写串口通信.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
2 浏览量
2022-11-25
21:02:50
上传
评论
收藏 495KB DOCX 举报
。。。
资源推荐
资源详情
资源评论


















我们来看具体的实现步骤。
公司要求实现以下几个功能:
1):实现两台计算机之前的串口通信,以 16 进制形式和字符串两种形
式传送和接收。
2):根据需要设置串口通信的必要参数。
3):定时发送数据。
4):保存串口设置。
看着好像挺复杂,其实都是纸老虎,一戳就破,前提是你敢去戳。
我尽量讲的详细一些,争取说到每个知识点。
在编写程序前,需要将你要测试的 COM 口短接,就是收发信息
都在本地计算机,短接的方式是将COM 口的 2、3 号针接起来。COM
口各针的具体作用,度娘是这么说的:COM 口。记住 2、3 针连接一
定要连接牢固,我就是因为接触不良,导致本身就不通,白白花掉了一
大半天时间调试代码。
下面给出主要的操作界面,如下:


一、获取计算机的 COM 口总个数,将它们列为控件 cbSerial 的候选
项,并将第一个设为 cbSerial 的默认选项。
这部分是在窗体加载时完成的。请看代码:
(很多信息代码的注释里讲的很清楚,我就不赘述了。)
[csharp] view plaincopyprint?
1.
//检查是否含有串口
2.
string[] str = SerialPort.GetPortNames();
3.
if (str == null)
4.
{
5.
MessageBox.Show("本机没有串口!", "Error");
6.
return;
}
7.
8.
9.
//添加串口项目
10.
11.
12.
13.
14.
15.
foreach (string s in System.IO.Ports.SerialPort.GetPortNames())
{//获取有多少个 COM 口
cbSerial.Items.Add(s);
}
//串口设置默认选择项

16.
cbSerial.SelectedIndex = 0;
//
设
置
<span style="font-size:18px; "><strong>cbSerial
</strong></span>
的 默 认 选 项
二、“串口设置”
这面我没代码编程,直接从窗体上按照串口信息设置就行。我们仅设置
它们的默认选项,但这里我用到了 ini 文件,暂时不讲,我们先以下面
形式设置默认。
[csharp] view plaincopyprint?
1.
2.
3.
4.
5.
cbBaudRate.SelectedIndex = 5;
cbDataBits.SelectedIndex = 3;
cbStop.SelectedIndex = 0;
cbParity.SelectedIndex = 0;
radio1.Checked = true; //发送数据的“16 进制”单选按钮(这里我忘了改名,
现在看着很不舒服!)
6.
rbRcvStr.Checked = true;
三、打开串口
在发送信息之前,我们需要根据选中的选项设置串口信息,并设置一些
控件的属性,最后将串口打开。
[csharp] view plaincopyprint?

1.
2.
3.
private void btnSwitch_Click(object sender, EventArgs e)
{
<span style="white-space:pre"> </span>//sp1
量。 SerialPort sp1 = new SerialPort();
是
全
局
变
4.
if (!sp1.IsOpen)
5.
{
6.
try
7.
{
8.
//设置串口号
9.
string serialName = cbSerial.SelectedItem.ToString();
sp1.PortName = serialName;
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
//设置各“串口设置”
string strBaudRate = cbBaudRate.Text;
string strDateBits = cbDataBits.Text;
string strStopBits = cbStop.Text;
Int32 iBaudRate = Convert.ToInt32(strBaudRate);
Int32 iDateBits = Convert.ToInt32(strDateBits);
sp1.BaudRate = iBaudRate;
sp1.DataBits = iDateBits;
switch (cbStop.Text)
//波特率
//数据位
//停止位
剩余24页未读,继续阅读
资源评论

苦茶子12138
- 粉丝: 5132
- 资源: 9万+

上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
