• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

C#.NET的界面编程--4使用串口发送数据

武飞扬头像
DRobot
帮助1

目录

一、【程序实现】

步骤1、先设计窗口,把各种需要的控制布局在窗口内

步骤2、制定应用的功能方案

步骤3、制定后台逻辑

二、【运行效果】


    本节主要介绍了c# 使用线程对串口serialPort进行收发数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。

一、【程序实现】

步骤1、先设计窗口,把各种需要的控制布局在窗口内

学新通

步骤2、制定应用的功能方案

我们需要按下按键,通过串口发送数据。

步骤3、制定后台逻辑

具体程序如下:

  1.  
    using System;
  2.  
    using System.Collections.Generic;
  3.  
    using System.ComponentModel;
  4.  
    using System.Data;
  5.  
    using System.Drawing;
  6.  
    using System.Linq;
  7.  
    using System.Text;
  8.  
    using System.Windows.Forms;
  9.  
     
  10.  
    namespace WindowsFormsApplication1
  11.  
    {
  12.  
    public partial class Form1 : Form
  13.  
    {
  14.  
    public Form1()
  15.  
    {
  16.  
    InitializeComponent();
  17.  
    }
  18.  
    private void Form1_Load(object sender, EventArgs e)
  19.  
    //双击面板,创建初始化函数
  20.  
    //功能:在下拉框控件comboBox1添加内容
  21.  
    {
  22.  
    string str;
  23.  
    //用了临时存储i大写的十六进制格式的字符串
  24.  
    for (int i = 0; i < 256; i )
  25.  
    //循环256次,这个过程i的值有256个
  26.  
    {
  27.  
    str = i.ToString("x").ToUpper();
  28.  
    //i.ToString(),如果括号是空的,就转换为i数值的字符串形式:“i”,如果i=11,则得到字//符串“11”
  29.  
    //.ToString("x")是将数字转换为16进制字符串,括号里的“x”表示16进制,告诉i.ToString()
  30.  
    //函数转换为16进制数之后,再去字符串“i(16进制)”
  31.  
    //.ToUpper()是将字符串所有字符大写,比如说“0xab”转换为大写“0XAB” 对于//的小写函数为“.tolower()”
  32.  
     
  33.  
     
  34.  
    comboBox1.Items.Add("0x" (str.Length == 1 ? "0" str : str));
  35.  
     
  36.  
    if (str.Length == 1)
  37.  
    //如果是一位的(0xA),str.Length表示数字长度,“A”是1;“A0”是2
  38.  
    {
  39.  
    str = "0" str;
  40.  
    //如果是一位的(0xA),为了对齐,在数据前加一个字符“0”(0x0A)
  41.  
    comboBox1.Items.Add("0x" str);
  42.  
    //统一添加“0x”
  43.  
     
  44.  
    }
  45.  
     
  46.  
    comboBox1.Text = "0X00";
  47.  
    //初始值,就是没点进去的文本显示
  48.  
    }
  49.  
    }
  50.  
     
  51.  
     
  52.  
    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
  53.  
    {
  54.  
     
  55.  
    }
  56.  
     
  57.  
    private void button1_Click(object sender, EventArgs e)//按键点击事件
  58.  
    {
  59.  
    string data = comboBox1.Text;
  60.  
    //存储当前下拉框的内容,也就是刚才赋值的"0X00"
  61.  
    string convertdata = data.Substring(2, 2);
  62.  
    //把字符分开,(2, 2):从第2位开始读,读2个,即"0X00"就读00
  63.  
    byte[] buffer = new byte[1];
  64.  
    //数据一个字节就够用了(固定语法)(byte相当于单片机中的unsigned)写字节的函数serialPort1.Write(buffer, 0, 1)需要数组
  65.  
    buffer[0] = Convert.ToByte(convertdata, 16);
  66.  
     
  67.  
    //将字符串转化为byte型变量(byte相当于单片机中的unsigned)
  68.  
    //将字符串转换为数值(16进制)((convertdata, 16))
  69.  
     
  70.  
    try//防止出错
  71.  
    {
  72.  
    //串口功能
  73.  
    serialPort1.Open(); //打开串口
  74.  
    serialPort1.Write(buffer, 0, 1);
  75.  
    //serialPort1.Write使用缓存区的数据,将指定数量的字节写入串行端口
  76.  
    //写缓存区数据,就是发送数据,(buffer, 0, 1):从数组buffer的第0位开始读,1:读1个字节(也可以一个变量)
  77.  
    serialPort1.Close();//关闭串口
  78.  
     
  79.  
    }
  80.  
    Catch
  81.  
    //如果出错就执行此代码。这个的处理出错的函数
  82.  
     
  83.  
    {
  84.  
    //在try中,如果出错,就执行catch
  85.  
     
  86.  
    if (serialPort1.IsOpen)
  87.  
    //判断串口是否打开,会返回ture或者f,两种状态。
  88.  
     
  89.  
    //如果串口打开的话,就可能在try的下一个语句出错,也就是这一句://serialPort1.Write(buffer, 0, 1);//读缓存区数据
  90.  
    serialPort1.Close();
  91.  
    //如果是写数据时出错,此时窗口状态为开,就应关闭串口,防止下次不能使用
  92.  
    //因为串口是开的,如果不处理的话,下一次按下按键会先执行try中的 //serialPort1.Open(); 这时就会出错了
  93.  
    MessageBox.Show("端口错误","错误");
  94.  
    }
  95.  
    }
  96.  
     
  97.  
     
  98.  
    }
  99.  
    }
学新通

二、【运行效果】

    在Visual Studio中按下F5运行该程序,运行正常!

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfhhjg
系列文章
更多 icon
同类精品
更多 icon
继续加载