使用上位机制作串口通信博客

引言

        串口通信是嵌入式系统开发中常见的通信方式之一。使用串口通信,我们能够实现实现上位机(通常是PC)与下位机(如STM32、51单片机等微控制器)之间的数据交换。我们将使用上位机软件制作一个串口通信程序,以与STM32和51单片机等微控制器进行通信。

1.准备软件

     1.1安装虚拟串口

          安装vspd配置虚拟串口,以便于我们看到数据是否能够发送和接收。

                                

     1.2选择串口通信软件

        有很多串口通信软件可以供我们选择操作。本次中,我们将使用SSCOM为例进行说明。使用USB转串口线或其他串口连接线将STM32等微控制器与PC的串口连接。

2.配置串口通信软件

  2.1打开串口通信软件

        启动已安装的串口通信软件(如SSCOM)。配置串口参数:在软件中找到串口配置选项,并设置正确的串口参数,如波特率、数据位、停止位、校验位等。这些参数应与STM32等微控制器中设置的参数相匹配。打开串口:在配置完成后,点击“打开串口”或类似的按钮,以建立与STM32等微控制器的连接。

3.设置界面

                                        

将串口号、数据位等进行相应的配置,代码如下:

 if(button1.Text ==  "打开串口")
 {
     com.PortName = comboBox1.Text;//串口号
     com.BaudRate = int.Parse(comboBox5.Text);//波特率
     com.DataBits = int.Parse(comboBox2.Text);
     switch (comboBox3.SelectedIndex)//停止位
     {
         case 0:
             com.StopBits = StopBits.One; break;
         case 1:
             com.StopBits = StopBits.Two; break;
         case 2:
             com.StopBits = StopBits.OnePointFive; break;
         case 3:
             com.StopBits = StopBits.None; break;
     }

     switch (comboBox4.SelectedIndex)//校验位
     {
         case 0: com.Parity = Parity.None; break;
         case 1: com.Parity = Parity.Odd; break;
         case 2: com.Parity = Parity.Even; break;
     }
     com.Open();
     timer.Start();
     button1.Text = "关闭串口";
 }
 else
 {
     com.Close();
     timer.Enabled = false;
     button1.Text = "打开串口";
     button5.Text = "打开";
     textBox1.Text = ""; 
     textBox2.Text = "";
     textBox3.Text = "";
     textBox4.Text = "";
 }

3.1编写按钮功能

  3.1.1发送数据

        在串口通信软件的发送区域中输入要发送的数据,然后点击“发送”或类似的按钮。数据将通过串口发送到STM32等微控制器。代码如下:

Byte[] buffer_On = new Byte[1];
buffer_On[0] = 0x37;
Byte[] buffer_Off = new Byte[1];
buffer_Off[0] = 0x66;


if (button5.Text == "打开")
{
    com.Write(buffer_On, 0, 1);
    textBox2.Text = "On";
    button5.Text = "关闭";
}
else
{
    com.Write(buffer_Off, 0, 1);
    textBox2.Text = "Off";
    button5.Text = "打开";
}

3.1.2接收数据

        在串口通信软件的接收区域中,您将能够看到从STM32等微控制器接收到的数据。这些数据可以是STM32发送的响应,也可以是STM32主动发送的数据。代码如下:


            DateTime dateTime = DateTime.Now;
            string Da = com.ReadLine();
            double T = double.Parse(Da);
            if (T > 32.00)
            {
                using (DateEntities2 Dt = new DateEntities2())
                { 
                    try
                    { 
                        string  T_number = textBox1.Text.Trim();
                        string Time = DateTime.Now.ToString();

                        double T1 = double.Parse(T_number);
                        T_D t_d = new T_D();
                        t_d.T = T1;
                        t_d.Time = Time;
                        Dt.T_D.Add(t_d);
                        Dt.SaveChanges();
                        MessageBox.Show(DateTime.Now.ToString()+"添加成功");
                    }
                    catch
                    {
                        MessageBox.Show(DateTime.Now.ToString()+"添加失败");
                    }
                    
                }
            }
            this.Invoke(new Action(() =>
                {
                    
                    //string Da1 = com.ReadLine();
                    textBox1.Text = Da;
                })); 

4.调试与测试

4.1验证连接

        在发送和接收数据之前,确保串口连接正常。您可以通过发送简单的测试数据(如ASCII码字符)并检查接收区域是否收到正确的响应来验证连接。根据STM32等微控制器的数据格式要求,测试不同的数据格式(如文本、二进制等)的发送和接收。如果在测试过程中遇到问题,如数据丢失、乱码等,请检查串口参数设置是否正确,以及STM32等微控制器的程序是否存在问题。

        显而易见,本次的结果成功。

5.扩展功能

5.1添加用户界面

        根据需要,您可以在串口通信软件中添加用户界面元素,如按钮、文本框等,以提供更友好的用户体验。

5.2实现自动化

        通过编写脚本或使用软件的自动化功能,您可以实现更复杂的串口通信任务,如定时发送数据、自动解析接收到的数据等。

5.3与其他软件集成

        还可以将串口通信软件与其他软件(如数据库、网络应用等)集成,以实现更广泛的应用场景。

结尾

        通过本博客,我们介绍了如何使用上位机软件制作一个串口通信程序,以与STM32等微控制器进行通信。通过配置串口参数、发送和接收数据以及调试与测试等步骤,您可以轻松地实现串口通信功能。希望这个教程能为您在嵌入式系统开发中提供有价值的参考!

  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值