C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Runtime.InteropServices;
namespace Adc_Display
{public partial class Form1 : Form{[DllImport("kernel32")]private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);//系统dll导入ini写函数[DllImport("kernel32")]private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);//系统dll导入ini读函数//System.AppDomain.CurrentDomain.BaseDirectory用来得到exe文件的路径string FileName = System.AppDomain.CurrentDomain.BaseDirectory + "data.ini";//ini文件名StringBuilder temp = new StringBuilder(255);//存储读出ini内容变量string CurrentPortName;//当前串口号名字public Form1(){InitializeComponent();serialPort1.DataReceived += new SerialDataReceivedEventHandler(PortDataReceivedEvent); //串口数据接收事件 System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;//注册一个窗口关闭的一个处理函数,在关闭窗口的时候记忆串口号this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(Form1_FormClosing);}/*窗口关闭执行此函数。窗口关闭时保存串口号,起到一个保存串口号的功能。*/private void Form1_FormClosing(object sender,EventArgs e){/*(1)在data.ini文件中保存的内容如下:[PortData]PorName=COM3   (2)WritePrivateProfileString函数四个参数表示:第一个:串口总类。比如PortData第二个:自定义的串口名字。比如PortName第三个:要保存的串口号。第四个:data.ini文件的绝对路径。*/WritePrivateProfileString("PortData", "PortName", CurrentPortName, FileName);}/*Form1_Load:窗口加载的时候会调用, Form1_Paint:需要绘制窗口时,都会调用  */private void Form1_Load(object sender, EventArgs e){this.Size = new Size(620, 107);//缩小/*GetPrivateProfileString读函数参数说明如下:第一个:在PortData串口总类下面读。第二个:在PortData串口总类下面读名为PortName的值。第三个:如果PortName变量中的值没有或读失败,就把COM1作为默认值。第四个:把从PortName变量中读出的值保存在temp变量中。第五个:读的字节数最大为256。第六个:在FileName变量保存的路径下读ini文件。*/GetPrivateProfileString("PortData", "PortName", "COM1", temp, 256, FileName);//读取ini值,默认是COM1comboBox1.Text = temp.ToString();//temp是数组,把他变为字符串,显示在 comboBox1中}TrackBar[] GetTrackBar(){return new TrackBar[] { trackBar1, trackBar2, trackBar3, trackBar4, trackBar5, trackBar6, trackBar7, trackBar8, trackBar9, trackBar10,};//返回一个对象数组}private void PortDataReceivedEvent(object sender, SerialDataReceivedEventArgs args) //串口数据接收{TrackBar[] MytrackBar = GetTrackBar();byte[] Data = new byte[serialPort1.BytesToRead];serialPort1.Read(Data, 0, Data.Length);//读foreach (byte MyData in Data){for (int i = 1; i < 10; i++){MytrackBar[10 - i].Value = MytrackBar[10 - i - 1].Value;}trackBar1.Value = (int)MyData;string str = MyData.ToString("x");//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(620, 107); //缩小serialPort1.Close();//此处可不加try,catchTrackBar[] MyProgeressBar = GetTrackBar();foreach (TrackBar theBar in MyProgeressBar)//遍历,每个trackBar归零{theBar.Value = 0;}button1.Text = "打开串口";}else{try{serialPort1.PortName = comboBox1.Text;//串口号serialPort1.Open(); //打开CurrentPortName = comboBox1.Text;groupBox2.Visible = true; //第二个框框可见this.Size = new Size(620, 436); //放大button1.Text = "关闭串口";//按键标题}catch{MessageBox.Show("串口打开错误", "错误");}}}}
}

www.DoYoung.net(部分代码来至杜洋工作室)

C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值相关推荐

  1. C#之windows桌面软件第十课:电脑ADC值显示(上位机)(单通道显示)

    C#之windows桌面软件第十课:电脑ADC值显示(上位机) (单通道显示) using System; using System.Collections.Generic; using System ...

  2. 计算机组装与维修图文,{企业管理流程图}电脑组装与维护培训讲义版十二课电脑组装流程图解(50页)-原创力文档...

    电脑组装与维护培训教程(P4版)> {企管理流程} 程解 首页 末页 向上 向下 返回 结束 调音 首页 末页 向上 向下 返回 结束 调音 电脑组装与维护培训教程(P4版)> 课前导读 ...

  3. C#之windows桌面软件第十三课:C#中常用的类有哪些?构造函数怎么用?

    C#之windows桌面软件第十三课:C#中常用的类有哪些?构造函数怎么用? using System; using System.Collections.Generic; using System. ...

  4. C#之windows桌面软件第十一课:电脑ADC值显示(上位机)(多通道显示)

    C#之windows桌面软件第十一课:电脑ADC值显示(上位机)(多通道显示) using System; using System.Collections.Generic; using System ...

  5. C#之windows桌面软件第九课:汉字串口助手

    C#之windows桌面软件第九课:汉字串口助手 using System; using System.Collections.Generic; using System.ComponentModel ...

  6. C#之windows桌面软件第八课:汉字(GB2312)与编码(UTF-8)之间的相互转换

    C#之windows桌面软件第八课:汉字(GB2312)与编码(UTF-8)之间的相互转换 using System; using System.Collections.Generic; using ...

  7. C#之windows桌面软件第七课:(下集)串口工具实现数据校验、用灯反应设备状态

    C#之windows桌面软件第七课:(下集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...

  8. C#之windows桌面软件第六课:(上集)串口工具实现数据校验、用灯反应设备状态

    C#之windows桌面软件第六课:(上集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...

  9. OpenGL教程翻译 第二十二课 使用Assimp加载模型

    第二十二课 使用Assimp加载模型 原文地址:http://ogldev.atspace.co.uk/(源码请从原文主页下载) 背景 到现在为止我们都在使用手动生成的模型.正如你所想的,指明每个顶点 ...

最新文章

  1. php 常用字符串函数
  2. 如何获取握手包_白话详解TCP的三次握手到底做了些什么
  3. 欧洲的数据中心与美国的数据中心如何区分?
  4. 2018年测试状况调查
  5. 2021年中国研究生数学建模竞赛D题参考思路
  6. 微生物组对肥胖影响的最新研究分析
  7. access百科 pc_PC Access SMART
  8. 【前端】静态网页和动态网页
  9. 面板数据熵值法-Python
  10. 条形码生成软件如何批量生成ISBN条码
  11. 腾讯云TVP大佬十年心血MySQL工作笔记,看完还不懂MySQL来打我!
  12. Android布局优化之merge标签
  13. 常用JS操作(复选框、单选框、下拉框)
  14. Spring框架学习,day02
  15. Service粘性启动方式
  16. Redis-Jedis
  17. matlab数据采集柜,MATLAB数据采集工具箱
  18. html实现游戏鼠标样式,巧妙运用CSS立刻改变鼠标的样式
  19. Private关键字详解
  20. [LeetCode]241.Different Ways to Add Parenthese

热门文章

  1. 【Android 高性能音频】AAudio 音频流 PCM 采样 的 采样 缓冲 播放 的 连续机制 ( 数据回调机制 | 数据回调函数指针 | 实现数据回调函数 | 设置数据回调函数 )
  2. 【Android 应用开发】 自定义 圆形进度条 组件
  3. 【Android 应用开发】Activity生命周期 与 Activity 之间的通信
  4. Variational Inference
  5. oracle操作字符串:拼接、替换、截取、查找
  6. c# list排序的三种实现方式 (转帖)
  7. Delphi CxGrid 汇总(3)
  8. Http Tunnel 小记
  9. Jquery中bind和live的区别
  10. es2017 提供的针对字符串填充的函数:padStart、padEnd