C# ADC数据波形显示

1. 串口显示汉字的程序设计

using System;
using System.Text;
using System.Windows.Forms;

namespace 汉字显示
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private byte[] StringToBytes(string TheString)
        {
            Encoding FromEncoding = Encoding.GetEncoding("UTF-8");
            Encoding ToEncoding = Encoding.GetEncoding("gb2312");
            byte[] FromBytes = FromEncoding.GetBytes(TheString);
            byte[] ToBytes = Encoding.Convert(FromEncoding, ToEncoding, FromBytes);
            return ToBytes;
        }
        private string BytesToString(byte[] Bytes)
        {
            string MyString;
            Encoding FromEncoding = Encoding.GetEncoding("gb2312");
            Encoding ToEncoding = Encoding.GetEncoding("UTF-8");
            byte[] ToBytes = Encoding.Convert(FromEncoding, ToEncoding, Bytes);
            MyString = ToEncoding.GetString(ToBytes);
            return MyString;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            byte[] StringsToByte = StringToBytes(textBox1.Text);
            textBox2.Text = "";
            foreach(byte MyByte in StringsToByte)
            {
                string str = MyByte.ToString("x").ToUpper();
                textBox2.Text += "0x" + (str.Length == 1 ? "0" + str : str) + " ";
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            byte[] data = new byte[textBox3.Text.Length / 2];
            int i;
            try
            {
                string buffer = textBox3.Text;
                buffer = buffer.Replace("0x", string.Empty);
                buffer = buffer.Replace(" ", string.Empty);
                for(i = 0; i <buffer.Length / 2; i++)
                {
                    data[i] = Convert.ToByte(buffer.Substring(i * 2, 2), 16);
                }
                textBox4.Text = BytesToString(data);
            }
            catch
            {
                //防止convert转换异常
                MessageBox.Show("数据转换错误,请输入数字。", "错误");
            }
        }
    }
}

在这里插入图片描述

2. 多路ADC数据的波形显示

using System;
using System.Drawing;
using System.IO.Ports;
using System.Windows.Forms;

namespace Adc_Display
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(PortDataReceivedEvent);
            //不检查跨线程操作
            System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
        }
        ProgressBar[] GetProgressBar()
        {
            return new ProgressBar[] {progressBar1, progressBar2, progressBar3, progressBar4, progressBar5,
                                        progressBar6, progressBar7, progressBar8, progressBar9, progressBar10
            };
        }   
        private void PortDataReceivedEvent(object sender, SerialDataReceivedEventArgs args)
        {
            ProgressBar[] MyProgressBar = GetProgressBar();
            byte[] Data = new byte[serialPort1.BytesToRead];
            serialPort1.Read(Data, 0, Data.Length);
            foreach(byte MyData in Data)
            {
                for(int i = 1; i <10; i++)
                {
                    MyProgressBar[10 - i].Value = MyProgressBar[10 - i - 1].Value;
                }
                progressBar1.Value = (int)MyData;
                string str = MyData.ToString();
                textBox1.Text = "0x" + (str.Length == 1 ? "0" + str : str);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                groupBox2.Visible = false;//第二个框框不可见
                this.Size = new Size(550, 130);
                serialPort1.Close();
                ProgressBar[] MyProgressBar = GetProgressBar();
                //遍历 每个ProgressBar归零
                foreach(ProgressBar theBar in MyProgressBar)
                {
                    theBar.Value = 0;
                }
                button1.Text = "打开串口";
            }
            else
            {
                try
                {
                    serialPort1.PortName = comboBox1.Text;
                    serialPort1.Open();
                    groupBox2.Visible = true;
                    this.Size = new Size(550, 470);
                    button1.Text = "关闭串口";
                }
                catch
                {
                    MessageBox.Show("串口打开错误", "错误");
                }
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.Size = new Size(550, 130); 
            string Buffer;
            comboBox1.Items.Clear();
            for (int i = 1; i < 20; i++)
            {
                try
                {
                    Buffer = "COM" + i.ToString();
                    serialPort1.PortName = Buffer;
                    serialPort1.Open();//如果失败后面代码不会执行
                    comboBox1.Items.Add(Buffer);
                    serialPort1.Close();
                }
                catch
                {
                }
            }
            comboBox1.SelectedIndex = 0;
        }
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值