一:上位机的作用
1、可以模拟上位机进行modbus协议主机的使用。
2、可以调试具有modbus协议的所有设备
3、可以在线设置各种通讯速率、奇偶校验、通讯口而无需重新启动程序。
4、支持 03 06 16 几条常用的命令。
5、可以自动显示接收到的数据,
6、是工程技术人员监视、调试串口程序的必备工具
二:参数配置
串口基础参数包括:波特率,数据位,停止位,校验位。 1. 波特率:串口通讯速率,可设置范围为:600~230.4Kbps,波特率支持任意波特率。 2. 数据位:数据位的长度,范围为 5~8。 3. 停止位:可设置范围为:1~2 4. 校验位:数据通讯的校验位,支持 None、Odd、Even、Mark、Space 五种校验方式 通过设置串口参数,保持与串口连接设备串口参数一致可以保证通许正常进行
三:命名空间

1.在 C#中,命名空间提供了一种组织相关类和其它类型的方式。我理解的命名 空间就是一个集装箱,里面可以装下很多类和方法。其实我们也可以认为所谓的 命名空间相当于 C 语言中的头文件,只不过 include 变为了 using namespace。具 体的书写规范见代码清单

第 1 到 7 行代码全都为系统 自带的命名空间。第 11 行为开发人员自定义的命名空间,之后的每一个上位机 项目都是一个自定义命名空间。C#的命名空间和 C 的头文件遵循一样的 规则,即要想使用某方法某函数则必须要包含方法所在的命名空间或者头文件。 这是相同点。不同点则表现在 C 语言在声明了头文件和函数接口后必须要在对应 的 C 文件中编写函数体后才可使用。C#则将省去了函数声明,直接即可编写对应 的函数体。
四:类
1.什么是类
在 C#开发中,类(class)至关重要。可以认为类是 C#一个很大的主题。我们在单片机软件开发中设计数据结构时往往离 不开先设计结构体,其实类就相当于结构体,这也是面向对象的一个前提条件。 我们可以将类抽象成一个既能存储数据又能执行代码的数据结构。它包含数据成 员和函数成员,因此类对 C#代码的封装起着举足轻重的作用。
2.如何声明一个类
类的声明和结构体类似,即定义了一个新类的成员和特征。但是它并不创建 类的实例,相当于结构体声明后并不分配内存,只有在使用时声明后才会分配内 存一样,类的声明和实例化不可混淆。类的声明方式如下代码清单所示:
类的声明非常简单。其中类的成员可以是变 量,也可以是函数方法。
五:属性、方法及事件

  1. 什么是属性
    我们简要的接触了类的概念,类相当于一个结构体但不能 等价于一个结构体,因为类是具有属性的,而结构体没有。在结构体内部定义一个缓冲区,这个缓冲区的大小必须在程序编译前确定下来,运行中不可改变。但 类通过属性却可以修改这个缓冲区的大小。那么什么是属性呢?属性就好比一个 人的发色,生来黑色,但不会永远是黑色,我们可以随意染成红蓝紫色。也就是 说属性是一个类的动态特性,比如上位机在运行过程中我们可以随时修改波特率。
    2.什么是方法
    C#中的方法类似于 C 语言函数,只是 C#赋予了方法属性,方法既可以是私有 的,又可以是共用的。谈及私有方法,其实我们完全可以将它理解为 C 语言函数 套了一个 static 关键字,代表这是单文件中使用的。
    3.什么是事件
    学习 STM32 之时,我们已经接触过事件的概念。事件是由硬件实现,可触发 中断以及关联性操作,如 ADC,DMA 等。它和中断最大的区别在于事件无需返 回,而中断需要返回。事件不仅在 MCU 硬件中大量使用,同时又与单片机软件 架构设计息息相关。 所有的 PC 端程序都需要在某个特定的时刻响应某个操作,处理某件事情, 比如响应鼠标单击事件,键盘事件等,因此 C#也引入了事件触发机制。在上一 节的内容中我们简要介绍了委托,事件本质上源于委托,是一种特殊的委托,它 为委托提供了封装性,一方面允许从类的外部增删绑定方法,另一方面又严禁从 类的外部触发委托所绑定的方法。 我们的目的是快速开发上位机,因此在使用过程中完全可以将事件理解为中 断,事件回调函数就是我们常说的中断服务函数。同时一般情况下我们也不需要 自己封装事件,调用控件已经封装好的事件函数即可。
    六:遇到的问题及解决方法
    1.InitializeComponent()方法是用来初始化窗体组件的,在InitializeComponent之前,窗体的各个控件还没有进行初始化,比如说窗体上有一个TextBoxUserName,在InitializeComponent之前它还只是一个TextBox类型的变量而已。
    如果在InitializeComponent之前调用这个TextBox的属性或方法,就会出错。
    再比如说你拖上取一个TextBox,它放在Form的位置,TextBox的一些属性,包括new 这个TextBox都放在那个函数里面处理的。
    2.未能找到类型或命名空间名称“XXXX”是否缺少 using 指令或程序集引用?
    这个相比来说就简单直接很多,如下;项目中 App_Code 文件夹中的类的命名空间;在添加的页面的 using XXXX 时,提示 “未能找到类型或命名空间名称“XXXX”是否缺少 using 指令或程序集引用?”。说明要引用的这个类文件的 生成操作 属性没有选择 编译,vs中并没有承认此命名空间。修改:右击类文件-》属性-》生产操作-》将“内容”改为“编译”,然后重新生成,问题解决。

按键触发问题:在原有的按键触发事件1里添加一个触发事件2不能执行,即使将事件1代码注释仍不可执行执行事件2,必须再添加一个引用.
原因 :没有注册事件,应在原来的属性里注册一个触发事件
button1.Click += new System.EventHandler(this.button1_Click);
取消注册:button1.Click -= new System.EventHandler(this.button1_Click);

C#编写一个简单串口通讯上位机相关推荐

  1. matlab制作以太网数据接收上位机_Python制作串口通讯上位机

    串口通讯具有简单易用的特点广泛应用于测试设备的通讯和数据传递.单片机与计算机的通讯等,本案例基于Python语言制作一个用于接收燃油质量流量计的串口通讯上位机,实现数据的读取和保存. 1. 相关知识点 ...

  2. python 串口_如何使用Python开发串口通讯上位机(一)

    用Python开发串口通讯型上位机,其实并非最优解,本系列更新只为个人学习与总结.如果有C语言底子,嵌入式层面的上位机开发,C++ Builder,C#才是更加好用的利器. 1 什么是上位机 从事过嵌 ...

  3. python编程与下位机通讯_如何使用Python开发串口通讯上位机(一)

    用Python开发串口通讯型上位机,其实并非最优解,本系列更新只为个人学习与总结.如果有C语言底子,嵌入式层面的上位机开发,C++ Builder,C#才是更加好用的利器.1 什么是上位机 从事过嵌入 ...

  4. VC2012/VS2012 MFC串口通讯上位机程序教程笔记(转)

    使用MFC来编写串口程序,需要有一定的c++语言功底,要清楚MFC代码的组织方式. 鉴于绝大多数的教程还停留在vc6.0这个骨灰级的环境,特在此说明一下VC2012下的代码组织方式,和大家一起交流下~ ...

  5. python做上位机好不_如何使用Python开发串口通讯上位机(完结)

    2021的第一份更新,比以往时候来得早一点! 前面两期讲了如何使用pyserial和做好了基本的上位机界面以及与API的联动,今天我们接着完善下代码.1 编码规范的使用 前面两期只是做基础展示用,所以 ...

  6. python 串口上位机_如何使用Python开发串口通讯上位机(二)

    黑色的dos窗口对于大部分来说,页面极为不友好,且操作不方便,因此本篇主要讲讲如何结合QtDesigner创建一个UI并初步与串口Api链接.1 QtDesigner进行上位机页面设计 Python下 ...

  7. 写字机上位机c语言,易懂 | 手把手教你编写你的第一个上位机

    一.前言 大家好,我是ZhengN,本次来教大家编写一个基于QT的简单的上位机. 学习一个新的东西我们都从最基础地实例开始,比如学习C语言我们会从编写一个hello程序开始.学习嵌入式我们从点灯开始. ...

  8. C#编写一个串口助手上位机软件

    对于工程师来说,串口助手可以说是必不可少的一个工具,一个好的串口助手可以大大方便我们的研发调试.网上串口助手很多,如果能够根据自己需要做一个合适的串口助手,那么既能方便自己,也能掌握上位机的开发,对于 ...

  9. STM32学习之旅④ USART串口和上位机通信

    STM32系列博客: STM32学习之旅① 开发环境搭建 STM32学习之旅② 固件库的使用及工程模板的建立 STM32学习之旅③ 从点灯到代码移植 STM32学习之旅④ USART串口和上位机通信 ...

  10. c#上位机开发(三)——串口通信上位机开发1

    今天主要做一个跟市面上差不多的稍微简单点的上位机软件,效果如下图所示 1.功能概述 (1)端口扫描,主要是扫描出可用的端口用来连接 (2)波特率的选择,使用一个下拉框进行选择相应的波特率数值 (3)发 ...

最新文章

  1. 中国人为什么学不会英语
  2. 类中调用界面ActiveX控件报错当前线程不在单线程单元中因此无法实例化 ActiveX 控件的解决办法...
  3. 2017电大c语言考试时间,2017年电大 《c语言程序设计》a课程考核说明.doc
  4. Perl的浅拷贝和深度拷贝
  5. vocabulary of ERP
  6. 韩国浦项化学在中国斥资超2800亿韩元投建电动车电池材料厂
  7. Spring 创建Bean的三种方式
  8. linux每个任务运行时间,Linux基础教程:任务计划和周期性任务
  9. fasthttp中的协程池实现
  10. 关于JavaScript中apply与call的用法意义及区别(转)
  11. springcloud gateway_Spring Cloud构建微服务架构(五)服务网关
  12. 采用UltraISO软碟通制作Dos启动盘教程
  13. 【通信原理 入坑之路】基于MATLAB的移动通信系统仿真 之 瑞利衰落信道的原理与仿真
  14. Java工作流引擎:jBPM、Activiti以及SWF
  15. adb install -r -d的含义
  16. 本地DLL通用验证码识别/滑块识别/文字点选/图标点选/推理/OCR文字识别
  17. excel两个字符串相减_Excel用Substitute函数替换的5个实例及与Replace函数的区别
  18. jQuery实现简单弹出框
  19. 2022-2028全球氨洗涤器行业调研及趋势分析报告
  20. 黑白棋python代码框架_Python实现黑白棋人机对弈

热门文章

  1. SAP无法下载excel
  2. 最小二乘(OLS)回归法及其在R中的…
  3. 如何保证缓存一致性?
  4. Java课程设计:课堂派的三端构建
  5. signature=d392c0d1876b3909bd8f7e1f3c0bef22,【技术分享】NSA武器库:CVE-2017-9073 EsteemAudit分析...
  6. win7系统备份方法
  7. python print函数用法_print函数的用法总结
  8. 提供资产证券化投行业务的“点石金融”能在中国点石成金吗?
  9. 实施不良资产证券化 信用评级不能少
  10. 在ASF中使用On Demand生产DEM等产品时使用不同参考DEM的区别