三分钟开发出基本的串口通信应用 ----基于comY的例子(ComXYZ控件已经开源,文中有连接)

1、开发环境:基于VS2010的串口通信程序,语言:c#

2、方法有几个?

方法1:使用SerialPort组件,“勉强”可以。

方法2:使用ComY组件,绝对可以。

方法3:使用ComZ控件,绝对可以。

3、第一个例子(方法2)

3.1、新建项目TestComY,并拖放如下控件/组件并定义其名称如下表。

序号

控件类型

控件名称

用途

显示信息

备注

01

RichTextBox

RxRichTextBox

显示接收

 

接收区

02

RichTextBox

TxRichTextBox

输入发送数据

1234567890

发送区

03

TextBox

RxTextBox

显示接收数量

 

计数器值

04

TextBox

TxTextBox

显示发送数量

 

计数器值

05

label

label1

指示接收计数区

R

计数器标识

06

label

Label2

指示发送计数区

T

计数器标识

07

Button

BtnClearCounter

清空计数器值

清零

 

08

Button

BtnComOpen

打开串口

打开

 

09

Button

BtnComClose

关闭串口

关闭

 

10

Button

BtnComTx

发送数据区的数据

发送

 

11

Button

BtnComRx

接收并显示数据

接收

 

12

comY

comY1

通信组件

 

通信服务

 

效果图如下

三分钟开发出基本的串口通信应用 ----基于comY的例子(ComXYZ控件已经开源,文中有连接)_第1张图片

3.2、编写代码

双击界面中的五个按钮得到如下代码。

namespace TestComY

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void BtnComTx_Click(object sender, EventArgs e)

        { }

        private void BtnComRx_Click(object sender, EventArgs e)

        { }

        private void BtnComOpen_Click(object sender, EventArgs e)

        { }

        private void BtnComClose_Click(object sender, EventArgs e)

        { }

        private void BtnClearCounter_Click(object sender, EventArgs e)

        { }

    }

}

 

3.3、打开串口

private void BtnComOpen_Click(object sender, EventArgs e)

        {

            comY1.SetPortPara("COM1",115200);

            comY1.Open();

            BtnComOpen.Enabled = false;

            BtnComClose.Enabled = true;

        }

3.4、关闭串口

private void BtnComClose_Click(object sender, EventArgs e)

        {

            comY1.Close();

            BtnComClose.Enabled = false;

            BtnComOpen.Enabled = true;

        }

3.5、发送数据及显示发送数据量

private void BtnComTx_Click(object sender, EventArgs e)

        {

            comY1.Send(TxRichTextBox.Text);

            TxTextBox.Text = comY1.TxCounterVal.ToString();

        }

3.6、接收数据及显示接收数据量

private void BtnComRx_Click(object sender, EventArgs e)

        {

            if (comY1.IsGotNewData() == true)

                RxRichTextBox.Text += comY1.GetRxHexWithBlankString();

            RxTextBox.Text = comY1.RxCounterVal.ToString();

        }

 

3.7、清空计数器

private void BtnClearCounter_Click(object sender, EventArgs e)

        {

            RxTextBox.Text = "";

            TxTextBox.Text = "";

            comY1.RxCounterVal = 0;

            comY1.TxCounterVal = 0;

        }

 

3.8、代码量

实现基本功能全部代码不到50行,如下图

三分钟开发出基本的串口通信应用 ----基于comY的例子(ComXYZ控件已经开源,文中有连接)_第2张图片

3.8、运行效果图

3.8.1、打开串口

三分钟开发出基本的串口通信应用 ----基于comY的例子(ComXYZ控件已经开源,文中有连接)_第3张图片

3.8.2、发送数据

三分钟开发出基本的串口通信应用 ----基于comY的例子(ComXYZ控件已经开源,文中有连接)_第4张图片

3.8.3、接收数据

三分钟开发出基本的串口通信应用 ----基于comY的例子(ComXYZ控件已经开源,文中有连接)_第5张图片

3.8.4、关闭串口点发送

三分钟开发出基本的串口通信应用 ----基于comY的例子(ComXYZ控件已经开源,文中有连接)_第6张图片

3.9、发送接收中文及ASCII

3.9.1、打开串口修改如下

private void BtnComOpen_Click(object sender, EventArgs e)

        {

            comY1.SetPortPara("COM1",115200);

            comY1.IsHexMode = false;                                                        //添加代码

            comY1.Open();

            BtnComOpen.Enabled = false;

            BtnComClose.Enabled = true;

        }

3.9.2、接收代码修改如下

private void BtnComRx_Click(object sender, EventArgs e)

        {

            if (comY1.IsGotNewData() == true)

            {

                if (comY1.IsHexMode==true)                                            //添加代码

                    RxRichTextBox.Text += comY1.GetRxHexWithBlankString();

                else

                    RxRichTextBox.Text += comY1.GetRxAsciiString();               //添加代码

            }

            RxTextBox.Text = comY1.RxCounterVal.ToString();

        }

3.9.3、运行效果图如下

三分钟开发出基本的串口通信应用 ----基于comY的例子(ComXYZ控件已经开源,文中有连接)_第7张图片

4、第2个例子(方法3)

待续...

 开源地址:https://github.com/3137908255/ComXYZ

你可能感兴趣的:(C#编程)