搜索
返回列表 发新帖本帖赏金 10.00元(功能说明)我要提问

[STM32] Visual Studio 2019 +STM32实现串口通讯详解

[复制链接]
1777|17
 楼主 | 2021-3-18 09:04 | 显示全部楼层 |阅读模式
本帖最后由 刘东君 于 2021-3-18 16:47 编辑

#申请原创# @21小跑堂
1.下载 免费版 Visual Studio 2019 并进行安装 https://visualstudio.microsoft.com/zh-hans/
无标题1.png
2.双击软件创建项目

无标题1.png

3.选择Windows窗体应用程序(.NET Framework)创建项目。

无标题3.png

4.项目创建完成,初始界面。

无标题4.png

5.选择左侧的工具栏,选择 组件,然后双击 串口组件将串口添加进入项目。

无标题5.png

6.开完会了继续编辑,(●'◡'●)
7.点击鼠标右键,修改串口模块的属性,包括 波特率等,本实验采用默认。
无标题8.png
8.双击串口模块,添加数据接收中断函数
无标题9.png
9.添加按钮模块,控制STM32开发板LED灯的亮灭。
无标题10.png
10.好的现在基本界面与模块添加完成,开始写程序,添加程序各种变量:
       //串口通讯命令
        public static byte[] SendOrder = new byte[3] { 0x5A,0x00, 0xA5 }; //中间为命令,头尾为校验  00 关灯 01开灯 02关蜂鸣器 03开蜂鸣器
        // 串口接收
        public static byte[] revcmd = new byte[3];


11. 开灯LED0程序如下:
        private void button1_Click(object sender, EventArgs e)  //开灯LED0
        {
            try
            {
                if (serialPort1.IsOpen)
                {
                    serialPort1.Close();
                }
                serialPort1.Open();  //打开串口
                serialPort1.DiscardInBuffer();//清空缓冲区数据
                SendOrder[1] = 0x01;//发送开灯命令
                serialPort1.Write(SendOrder, 0, 3);//写入串口缓冲区
            }
            catch
            {
                MessageBox.Show("请检查串口1是否打开");
            }
        }


12.关灯LED0程序如下:
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                if (serialPort1.IsOpen)
                {
                    serialPort1.Close();
                }
                serialPort1.Open();  //打开串口
                serialPort1.DiscardInBuffer();//清空缓冲区数据
                SendOrder[1] = 0x00;//发送开灯命令
                serialPort1.Write(SendOrder, 0, 3);//写入串口缓冲区
            }
            catch
            {
                MessageBox.Show("请检查串口1是否打开");
            }
        }

13.蜂鸣器程序留给大家写,偷个懒(●'◡'●)

14.串口接收函数如下:
       private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) //串口接收中断
        {
            try
            {
                serialPort1.Read(revcmd, 0, 3); // 将接收缓冲区输入revcmd

            }
            catch
            {
                MessageBox.Show("请检查串口1是否打开");
            }
            this.Invoke(new EventHandler(ComService)); //调用事件处理函数
        }

15.串口接收数据处理函数如下:
        private void ComService(object sender, EventArgs e)
        {
            if ((revcmd[0] == 0x5A) & (revcmd[1] == 0x01) & (revcmd[2] == 0xA5))
            {
                button5.Text = "灯开了";
                button5.BackColor = Color.FromArgb(255, 0, 0); //设置控件颜色为红色
               // button5.BackColor = Color.FromKnownColor(KnownColor.LightSeaGreen);; //设置控件颜色为

            }
            if ((revcmd[0] == 0x5A) & (revcmd[1] == 0x00) & (revcmd[2] == 0xA5))
            {
                button5.Text = "灯关了";
                button5.BackColor = Color.FromArgb(224, 224, 224);//灰色
            }
        }

16.上位机程序编写完成。附件如下:

VS2019_STM32串口通信.rar (41.29 KB, 下载次数: 218)

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 10.00 元 2021-03-19
理由:恭喜通过原创文章审核!请多多加油哦!

评论

Altiumhu 2021-3-19 08:21 回复TA
牛B,谢谢分享 
刘东君 2021-3-18 16:17 回复TA
@zhengfish :有的 
zhengfish 2021-3-18 10:59 回复TA
看图.NET有控件支持串口访问? 
21小跑堂 2021-3-18 09:25 回复TA
静静等待您此文的后续。。。 

相关帖子

| 2021-3-18 09:07 | 显示全部楼层
程序呢  ??

使用特权

评论回复
 楼主 | 2021-3-18 09:14 | 显示全部楼层

正在写着呢。。。。

使用特权

评论回复
| 2021-3-18 09:24 | 显示全部楼层
VS2019有串口类吗?

使用特权

评论回复
 楼主 | 2021-3-18 09:41 | 显示全部楼层

有的 ,我正在写

使用特权

评论回复
| 2021-3-18 10:18 | 显示全部楼层
看看

使用特权

评论回复
| 2021-3-18 14:08 | 显示全部楼层
谢谢分享,继续

使用特权

评论回复
| 2021-3-18 14:56 | 显示全部楼层
哈哈,看看

使用特权

评论回复
| 2021-3-18 15:53 | 显示全部楼层
感觉这是在线直播

使用特权

评论回复
| 2021-3-18 16:33 | 显示全部楼层

你说的这个串口类,是原来VC6上的MSCOMM控件吧?

使用特权

评论回复
| 2021-3-18 17:27 | 显示全部楼层
恩. dotnet 还是个不错的选择.
不过我准备用flutter搞一个试试

使用特权

评论回复
| 2021-3-20 11:30 | 显示全部楼层
厉害

使用特权

评论回复
| 2021-4-9 09:35 | 显示全部楼层
厉害

使用特权

评论回复
| 2021-4-9 22:26 | 显示全部楼层
因为目前的中美关系,微软已经停止对大陆VS2019的下载了。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
返回列表 发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表