measurement studio测控与单片机通信上位机

2023-05-16

using NationalInstruments.Analysis;
using NationalInstruments.Analysis.Conversion;
using NationalInstruments.Analysis.Dsp;
using NationalInstruments.Analysis.Dsp.Filters;
using NationalInstruments.Analysis.Math;
using NationalInstruments.Analysis.Monitoring;
using NationalInstruments.Analysis.SignalGeneration;
using NationalInstruments.Analysis.SpectralMeasurements;
using NationalInstruments;
using NationalInstruments.UI;
using NationalInstruments.NetworkVariable;
using NationalInstruments.NetworkVariable.WindowsForms;
using NationalInstruments.Tdms;
using NationalInstruments.UI.WindowsForms;
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;


namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        //初始化公共数据
        int j ;
        List<double> list = new List<double> ();
        char[] temperature = { '0','0','0','0','0','0','0'};
        private StringBuilder builder = new StringBuilder();//避免在事件处理方法中反复的创建,定义到外面。  
        private bool Listening = false;//是否没有执行完invoke相关操作  
        private bool Closing = false;//是否正在关闭串口,执行Application.DoEvents,并阻止再次invoke  
        
        public Form1()
        {
            InitializeComponent();
        }


        private void switch1_StateChanged(object sender, ActionEventArgs e)
        {
            led1.Value = switch1.Value;
            
        }


        private void knob1_AfterChangeValue(object sender, AfterChangeNumericValueEventArgs e)
        {
            thermometer1.Value = knob1.Value;
        }


        private void button1_Click(object sender, EventArgs e)
        {
            
        }
        //串口初始化
        private void Form1_Load(object sender, EventArgs e)
        {
            serialPort1.PortName = "COM4";
            serialPort1.BaudRate = 9600;//波特率设置
            serialPort1.DataBits = 8;
            serialPort1.StopBits = System.IO.Ports.StopBits.One;
            serialPort1.Parity = System.IO.Ports.Parity.None;
            serialPort1.Open(); 
            timer1.Start();
        }


        #region 触发事件,刷新数据
        //触发事件,刷新数据
        private void timer1_Tick(object sender, EventArgs e)
        {
            double y = double.Parse(textBox1.Text);
            textBox2.Text = Convert.ToString(y);
            list.Add(y);
            double[] yy = new double[j];
            yy = list.ToArray();
            waveformPlot1.PlotY(yy);
        } 
        #endregion


        #region 关闭串口,退出程序
        //关闭串口,退出程序
        private void button2_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                Closing = true;
                while (Listening) Application.DoEvents();
                //打开时点击,则关闭串口  
                serialPort1.Close();
                Closing = false;
                Close();
            }
            else
            {
                try
                {
                    serialPort1.Open();
                }
                catch (Exception ex)
                {
                    //捕获到异常信息,创建一个新的comm对象,之前的不能用了。  
                    serialPort1 = new SerialPort();
                    //现实异常信息给客户。  
                    MessageBox.Show(ex.Message);
                }
            }
            //serialPort1.Close();
            //Close();
        } 
        #endregion


        #region 窗体关闭按钮
        //窗体关闭按钮
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                Closing = true;
                while (Listening) Application.DoEvents();
                //打开时点击,则关闭串口  
                serialPort1.Close();
                Closing = false;
                Close();
            }
            else
            {
                try
                {
                    serialPort1.Open();
                }
                catch (Exception ex)
                {
                    //捕获到异常信息,创建一个新的comm对象,之前的不能用了。  
                    serialPort1 = new SerialPort();
                    //现实异常信息给客户。  
                    MessageBox.Show(ex.Message);
                }
            }
        } 
        #endregion


        #region 接受数据
        //接受数据
        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            if (Closing) return;//如果正在关闭,忽略操作,直接返回,尽快的完成串口监听线程的一次循环  
            try
            {
                Listening = true;//设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。  
                temperature[0] = Convert.ToChar(serialPort1.ReadChar());
                if (temperature[0] == '-' || temperature[0] == '+')
                {
                    for (int i = 1; i < 7; i++)
                    {
                        temperature[i] = Convert.ToChar(serialPort1.ReadChar());
                    }
                    this.Invoke(new EventHandler(DisplayText));
                    j++;
                }
                else
                {
                    return;
                }
            }
            finally
            {
                Listening = false;//我用完了,ui可以关闭串口了。  
            }
        } 
        #endregion


        #region 显示数据
        //显示数据
        private void DisplayText(object sender, EventArgs e)
        {
            for (int i = 0; i < 7; i++)
            {
                builder.Append(temperature[i]);
            }
            textBox1.Text = Convert.ToString(builder);
            builder.Clear();
        } 
        #endregion
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

measurement studio测控与单片机通信上位机 的相关文章

  • Adaptive AUTOSAR----Adaptive studio

    Adaptive studio Adaptive Studio 是包含在 RTA VRTE SK 中的 AUTOSAR 编辑器 Adaptive studio 通过高级抽象支持所有 adaptives autosar arxml 元素的配置
  • 解决Android studio 模拟器闪烁黑屏问题

    首先 xff0c 必须感谢csdn大神给我的启示 xff0c 但是原文并没有解决我的问题 我在看 第一行代码 的时候 xff0c 跟着郭霖大神的思路 xff0c 想利用cmd命令查看虚拟机中的 db文件中的数据表 因为真机需要root才能查
  • Android Studio 配置 JDK1.8 使用Lambda表达式

    Android Studio 配置 JDK1 8 使用Lambda表达式 JDK1 8 添加几项新特性譬如对集合的优化语法的便捷配合Lambda表达式使用可以让代码更加简便美观 xff0c 但对于一些没有接触Lambda表达式的同学们来说就
  • Visual Studio 2022 C++开发 (Win)配置教程

    前言 本文将讲解如何在Window系统下配置Visual Studio 2022版本的C 43 43 开发环境 步骤 下载并且安装Visual Studio Tools xff08 1 xff09 下载 Visual Studio Tool
  • Visual Studio Code(VSCode) 编辑/编译/调试 C++ 代码

    前言 最近想要切换编辑工具 xff0c 之前工作中使用过 Source Insight xff0c Eclipse xff0c CLion 来写 C 43 43 代码 目前来说 Source Insight 已经非常古老 xff0c 只有编
  • android Studio keytool' 不是内部或外部命令,也不是可运行的程序 或批处理文件

    android Studio keytool 39 不是内部或外部命令 xff0c 也不是可运行的程序 或批处理文件 遇到这个问题好久了 xff0c 一直没解决今天搜集了大量的资料 xff0c 有的说什么Java没配置好 xff0c 不是扯
  • Visual Studio 2022 C++ CLR 的艰难除 Bug

    请看下面一段代码 xff1a 运行结果 xff1a 这是一个Button xff0c 要用到这段代码是因为字符串出了问题 xff1a 肯定是我写的类出问题了 xff0c 便是我在控制台下测试是正常的 代码 xff1a 运行结果 xff1a
  • Visual Studio配置OpenGL

    近期工作中需要用到OpenGL 而之前一直是用Opencv工作 xff0c 这就需要在VS上配置OpenGL 因为是首次在VS上配置OpenGL xff0c 以备自己和有需要的小伙伴不时之需 我的VS是2022版的 xff0c 但配置流程各
  • 利用Visual Studio创建C语言dll

    利用VS2019创建dll方法 动态链接库的定义及意义如何在VS创建dll入口函数DLLMain如何创建导出函数动态调用导出函数 动态链接库的定义及意义 动态链接库 xff08 Dynamic Link Library 或者 Dynamic
  • android studio 调用C++代码

    Android studio调用C 43 43 代码 JNI原理 JNI Java Native Interface 叫做JAVA本地接口 JAVA是一种跨平台的语言 xff0c 这种特性依赖的是Java虚拟机 xff0c 虚拟机由C C
  • 使用Android Studio打包Module成jar包

    现在假设我们想打包一个module成jar包的形式给其它应用调用 xff1a vrservice 1 0 jar 步骤1 在Module项目的build gradle文件中做如下配置 xff1a 生成jar包的配置如下 xff1a def
  • Ubuntu12.04下配置Android studio开发环境

    之前一直在Windows下面进行Android的开发任务 Ubuntu也是用的虚拟机 但是最近代码编译了 刷机总是出现一些莫名其妙的问题 于是决定进行一次大迁移 把虚拟机放弃了 直接使用Ubuntu系统 但是这样子要把studio里面的代码
  • 为什么 Graphics.MeasureString() 返回的数字高于预期数字?

    我正在生成收据 并使用 Graphics 对象调用 DrawString 方法来打印所需的文本 graphics DrawString string font brush widthOfPage 2F yPoint stringformat
  • 如何测量 .NET 中多个并发线程的代码块(线程)执行时间

    现在我们只使用这样的东西 stopWatch Start try method finally stopWatch Stop 这对于同步方法来说效果很好 但有些方法是异步执行的 因此当多个线程执行时时间会出现偏差 是否有与 System D
  • 测量 Android 上的数据漫游流量?

    刚从冰岛度过一个愉快的假期回来 正在等待我的电话公司的数据漫游账单 我希望尽可能限制我的流量 但我想提前知道 我使用了非常好的应用程序网络计数器但它根本没有测量漫游数据流量 所以我想构建自己的应用程序 仅测量漫游数据流量 我有一些布尔值要开
  • 如何测量对角线距离点?

    我可以计算水平点和垂直点 但我无法弄清楚如何使用对角点计算距离 有人可以帮我弄这个吗 这是我的水平和垂直测量的代码 private float ComputeDistance float point1 float point2 float
  • 测量 Java 程序内存使用情况的最佳方法?

    我目前正在使用VisualVM 但我遇到的问题是我无法保存它生成的图表 我需要报告一些有关其内存使用情况和运行时间的数据 尽管运行时间很容易获得System nanoTime 我也尝试过NetBeans 分析器但这不是我想要的 因为我不是在
  • 如何在没有扩展程序的情况下在 Chrome 中测量像素?

    由于工作中的安全限制 我不被允许安装 Chrome 扩展程序 Chrome 在开发者工具中内置了一个标尺 但我不知道如何像标尺允许的那样定义起点和终点 是否有无需安装 Chrome 扩展程序即可测量像素的工具或技术 您可以创建自己的标尺功能
  • 使用 SharedSizeGroup 测量/排列网格

    两个包含以某种方式指定的元素的网格和 SharedSizeGroup 似乎存在一些问题 这个问题是为了回答先前的问题 https stackoverflow com questions 3865033 grid height not adj
  • 如何广播对 Android 应用程序安装的推荐

    没有回答 几乎同样的问题 https stackoverflow com questions 18571920 how to get referrer url for apps downloaded from outside the mar

随机推荐

  • 云台、RS485简介与区别

    云台 云台 xff08 Pan amp Tilt amp Zoom xff09 xff0c 缩写为PTZ 云台就是两个交流电机组成的安装平台 xff0c 可以分别围绕一中心轴作水平和垂直的运动 xff0c 将摄像机安装于其上 xff0c 实
  • ubuntu14.04版本下ulimit连接数限制的解决方法

    Linux对于每个用户 xff0c 系统限制其最大进程数 为提高性能 xff0c 可以根据设备资源情况 xff0c 设置各linux 用户的最大进程数 可以使用ulimit a查看当前限制 xff1a 对于一些服务的资源限制 xff0c 如
  • 防止全局变量重复定义

    问题 xff1a 在 h文件中定义了全局变量 并用 ifndef identifier h define identifier h endif 但是依然出现重复定义问题 分析 xff1a ifndef这套条件编译是为了防止同一个 c文件中包
  • Checksum 校验和

    一 校验数据的一般算法比较 都是通过对数据进行校验产生一个校验值 xff0c 用来校验数据完整性 不同点 xff1a 算法不同 CRC采用多项式除法 xff0c MD5和SHA1使用的是替换 轮转等方法 xff1b 校验值的长度不同 CRC
  • GPIO小综合-按键实验

    之前用寄存器操作实现了跑马灯和蜂鸣器 这次接着输入寄存器IDR捕获按键 并且综合亮灯和发出声音 xff0c 作为寄存器GPIO小综合练习 首先查KEY的电路图 xff0c 分别用到了ACD几个时钟 KEY0对应PC8 xff0c KEY1对
  • 数据结构入门

    概念 数据 Data xff1a 是客观事物的符号表示 在计算机科学中指的是所有能输入到计算机中并被计算机程序处理的符号的总称 数据元素 Data Element xff1a 是数据的基本单位 xff0c 在程序中通常作为一个整体来进行考虑
  • Linux系统发布项目完整教程

    目录 1 后端代码打包 1 1后端代码中文件上传路径修改 1 2 后端代码打包 1 3 后端项目发布 2 前端静态资源打包 2 1 项目中关于路径修改的说明 2 2模拟域名访问的设置 修改HOSTS文件 2 3 前端请求路径修改 2 4 前
  • 畸变校正与极线校正(具体原理+Matlab代码)

    附 xff1a 相关需要的工具函数源代码 xff08 投影函数 校正矩阵计算等 xff09 见最下面 1 畸变校正 1 1 形成原因 图像畸变一般有两种 xff0c 第一种是透镜本身的形状有问题 xff0c 使得图像发生径向畸变 xff1b
  • c++的http请求

    include lt iostream gt include lt fstream gt include lt cstdlib gt include lt cstring gt include lt sys socket h gt incl
  • stl智能指针和boost智能指针对比

    先说说stl中的智能指针auto ptr xff0c 先说说auto ptr的特点 std auto ptr用来管理单个堆内存对象 xff0c 但是独享所有权 xff0c 且不允许赋值和拷贝 xff08 没有重载operator 61 xf
  • boost库noncopyable简介

    前言 看了一段时间的UNP对Linux下网络编程有了一定程度的理解 xff0c 经学长推荐 xff0c 开始学习陈硕老师的 Linux多线程服务端编程 看之前特地上了知乎 xff0c 阅读者需要具备一定的C 43 43 和网络编程基础 xf
  • 车道线检测和基于RGB交通标志检测系统

    好久好久好久没更新博客了 今天是冬至 首先跟大家说一声 冬至快乐 冬至吃过汤圆 又长了一岁 感觉真的时不待人 好像自己什么事情也没有完成 也没留下一些什么东西 所以今天就想来写写博客 我是分割线 运行环境 Win7系统64位 运行平台 Qt
  • c++中h文件和lib有什么区别

    转自 xff1a https zhidao baidu com question 510969923 html 1 lib 是若干个obj的集合 xff0c 本质与obj相同 xff01 lib有静态lib和动态lib之分 静态lib将导出
  • cmake在Windows上的使用

    cmake介绍 cmake是一个构建C 43 43 代码的跨平台工具 xff0c 他能够干什么呢 xff1f 他能够搜索你的平台环境 xff0c 然后生成平台上用于Build的文件 在Windows上安装了Visual Studio 他能够
  • ubuntu系统安装完nvidia显卡驱动后黑屏,不能进入系统

    昨天想看显卡 xff0c 更新了下驱动 xff0c 发现服务器重启进不去 步骤 1 开机按esc 进入 选项界面2 进去以后选择一个括号里面带recovery mode的选项3 然后它自动黑屏出现代码 xff0c 然后弹出一个选择框 xff
  • ubuntu18.04下cmake的安装

    一 使用安装命令 span class token function sudo span span class token function apt span span class token function install span c
  • Nginx/Lighttpd/Apache三大web服务器对比分析

    一 xff0e 软件介绍 apache lighttpd nginx 1 lighttpd Lighttpd是一个具有非常低的内存开销 xff0c cpu占用率低 xff0c 效能好 xff0c 以及丰富的模块等特点 lighttpd是众多
  • STM32学习笔记八——串口实现不定长数据传输

    生命不息 xff0c 奋斗不止 0 摘要 今天说一下STM32单片机的接收不定长度字节数据的方法 由于STM32单片机带IDLE中断 xff0c 所以利用这个中断 xff0c 可以接收不定长字节的数据 xff0c 由于STM32属于ARM单
  • linux shell 字符串长度

    本篇内容主要包括以下内容 xff1a 获取字符串长度的方法 各方法间性能比较 相关内容补充 说明 xff1a 本篇内容为学习shell 编程 老男孩教程 笔记 xff0c 部分内容为相关视频课程内容 xff0c 补充部分是我查资料所得 xf
  • measurement studio测控与单片机通信上位机

    using NationalInstruments Analysis using NationalInstruments Analysis Conversion using NationalInstruments Analysis Dsp