parity

C#串口开发之SerialPort类封装

本秂侑毒 提交于 2020-08-11 21:02:31
目录 SerialPort类 参数封装 控件操作封装 SerialPortClient类实现 SerialPortClient类使用 测试Demo 参考文章 SerialPort类 微软在.NET中对串口通讯进行了封装,我们可以在.net2.0及以上版本开发时直接使用SerialPort类对串口进行读写操作。 为操作方便,本文对SerialPort类做了一些封装,暂时取名为 SerialPortClient 。 SerialPort类的属性主要包括: 串口名称(PortName) 波特率(BaudRate) 数据位 DataBits 停止位 StopBits 奇偶校验 Parity SerialPort类的事件主要包括: DataReceived:用于异步接收串口数据事件 ErrorReceived:错误处理事件 SerialPort类的方法主要包括:Open();Close();Read();Write()、DiscardInBuffer()、DiscardOutBuffer()等 参数封装 波特率、数据位这些参数不是系统内置的枚举类型,为方便实际操作需构造波特率、数据位这两个枚举对象。 #region 波特率、数据位的枚举 /// <summary> /// 串口数据位列表(5,6,7,8) /// </summary> public enum DataBits : int {

5G相关专业术语解释

百般思念 提交于 2020-08-11 17:22:28
文章目录 一些关于5G中的英文缩写解释 缩略语列表(简洁、快速、准确查看) 一些关于5G中的英文缩写解释 NR (New Radio,新空口):通过电磁波来承载所需要发送的信息的一系列规范 BLER (blockerror rate)误块率 CB (codeblock) 码块 CCE 是ControlChannel Element的缩写,每个CCE由9个REG组成,之所以定义相对于REG较大的CCE,是为了用于数据量相对较大的PDCCH的资源分配。每个用户的PDCCH只能占用1,2,4,8个CCE,称为聚合级别。 CP (Cyclic Prefix)中文可译为循环前缀,它包含的是OFDM符号的尾部重复,CP主要用来对抗实际环境中的多径干扰,不加CP的话由于多径导致的时延扩展会影响子载波之间的正交性,造成符号间干扰。 DTX (DiscontinuousTransmission不连续发送)预留资源:定时检测 gNB 5G基站 MCS (Modulation and Coding Scheme,调制与编码策略) NCP (Normal CP(Cyclic Prefix,循环前缀) PDCCH (PhysicalDownlink Control Channel,物理下行控制信道) PUSCH (Physical Uplink Shared Channel --物理上行共享信道) RB

NModBus的使用

China☆狼群 提交于 2020-08-11 04:34:00
  前言:最近在做一个项目,需要使用ModBus RTU与PLC进行通讯,现在将使用过程记录,以便备查。 一、什么是ModBus通讯协议   Modbus协议是应用于电子控制器上的一种通用语言,此协议支持传统的RS-232、RS-422、RS-485和以太网设备。   ModBus功能码 01 READ COIL STATUS 02 READ INPUT STATUS 03 READ HOLDING REGISTER 04 READ INPUT REGISTER 05 WRITE SINGLE COIL 06 WRITE SINGLE REGISTER 15 WRITE MULTIPLE COIL 16 WRITE MULTIPLE REGISTER 二、ModBus通讯协议的.Net实现     因为实现并不困难,网上有许多网友自己的实现,但在这里我推荐一个github的开源实现类库:NModBus4,github地址:https://github.com/NModbus4/NModbus4。针对TCP、UDP、RTU等的ModBus通讯方式都有实现。          读写方法: 方法名 作用 所需参数 返回值 对应功能码 ReadCoils 读取DO的状态 从站地址(8位) byte slaveAddress 起始地址(16位) ushort startAddress

干货|光猫搭载WiFi6技术更智能,如何配置一款合适的国产存储芯片?

感情迁移 提交于 2020-08-08 21:03:10
对于光猫,大家一定不陌生。伴随着移动通信网络迈向5G时代,WiFi 6也越来越受关注,这其中的一个重点应用领域就是光猫。前面,宏旺半导体有跟大家讲过路由器、5G CPE的存储芯片解决方案,这次,来跟大家聊聊光猫。 据了解,网络慢、卡顿、掉线成为最主要的三个网络问题。一是76%以上的家庭使用的是2.4G单频WiFi,带宽不到100兆。二是受最后入户的五类限制,宽带WiFi速率小于100兆。三是光猫百兆网口限制速率小于100兆。四是WiFi不可管、不可试,故障修复慢、成本高。五是网络不够安全容易被***。六是光猫功耗大。 这些问题驱动着家庭宽带市场的升级、WiFi技术的更新。宏旺半导体在前面有提到,WiFi6指的是第六代无线网络技术,这个最新的无线局域网络标准,即将在智能设备规模进一步爆发的未来发挥重要作用,成为家庭生活、企业办公、工业互联网搭建无线网络的首选技术。相比于目前普遍使用的WiFi5,WiFi6吸收了大量关于5G的关键特性,包括MU-MIMO、OFDMA等,使得这代WiFi技术能力相比上一代有大幅度提升,在带宽传输上,WiFi6相比于WiFi5提升高达4倍,拥有多设备连接升级、更快的速度、更高的带宽、更低的延时等特性。 WiFi6的发展无疑推动着千兆光猫的普及,光猫可以说是传输网络的神器,它是一种将光纤网络信号转化为网络信号的设备,它转换的距离比较大

STM32F1学习笔记:keil编程套路整理

社会主义新天地 提交于 2020-08-06 03:20:16
GPIO编程套路 一、配置GPIO口 使能管脚对应的GPIO组时钟 RCC_APB2PeriphClockCmd( GPIOx, ENABLE); 定义一个初始化结构体型的变量 GPIO_InitTypeDef GPIO_InitStructure; 对结构体变量的各成员赋值 GPIO_InitStructure.GPIO_Pin =; GPIO_InitStructure.GPIO_Mode =; GPIO_InitStructure.GPIO_Speed =; 调用初始化函数,初始化GPIO GPIO_Init(GPIO_Pin_n, &GPIO_InitStructure); 二、在主函数中,调用GPIO函数编程。 UART编程套路 一、配置GPIO口及UART1口 (APB2, PA9, PA10管脚) 使能Tx、Rx管脚对应的GPIO组时钟,RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE); 使能Tx、Rx管脚对应的UART时钟, RCC_APB2PeriphClockCmd(RCC_APB2Periph_ UARTx, ENABLE); 定义一个GPIO初始化结构体型的变量和一个UART初始化结构体变量 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef

stm32编写Modbus步骤

会有一股神秘感。 提交于 2020-08-05 07:17:38
1. modbus协议简介:   modbus协议基于rs485总线,采取一主多从的形式,主设备轮询各从设备信息,从设备不主动上报。 日常使用都是RTU模式,协议帧格式如下所示:   地址 功能码 寄存器地址 读取寄存器个数 寄存器数据1 ..... CrcL CrcH /* AA 03 00 00 00 0A DC 16 addr cmd regH regL lenH lenL crcL crcH 主机发送 AA 03 14 00 00 00 00 00 00 00 00 00 03 00 01 00 00 00 18 00 1C 00 00 81 4B 从机回复 addr cmd datelen .... AA 10 00 0a 00 01 02 00 02 主机修改从机寄存器值 addr cmd regH regL regNum datalen data */   功能码及对应的操作字长: 目前比较简单的实现了读多个保持寄存器,以及写多个保持寄存器,由于不是使用的PLC,所以寄存器地址的划分没有严格按照上表,具体地址后面解释。 2.Modbus协议编写步骤:很多设备厂家都会有自己的modbus协议,大多数都不是很标准    (1)分析板子的具体信息,编写不同的设备结构体,比如只读的结构体,可读写的结构体,保存配置信息的结构体(当主机发送改变配置信息的消息帧时,会改变相应的变量

C#串口通讯概念以及简单实现

雨燕双飞 提交于 2020-07-28 18:58:14
  最近在研究串口通讯,其中有几个比较重要的概念,RS-232这种适配于上位机和PC端进行连接,RS-232只限于PC串口和设备间点对点的通信。它很简单的就可以进行连接,由于串口通讯是异步的,也就是说你可以同时向两端或者更多进行数据发送,它们之间的传输数据类型是byte,串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。   听大佬说的几个关于串口通讯的术语,啥?啥,这是啥?   就让我这个“小白”给你说说:第一个波特率,这个东西在不同领域都有涉及,在串口通讯中两个串口之间通讯之间的信号单元叫做码元,每分钟传递的信号(码元)也就是波特率;   第二个数据位、停止位:这个听名字就知道是啥意思了,在传递数据过程之前,机器会识别你的数据是个啥,然后根据这个类型,去调整不同的起始位、停止位。   第三个奇偶校验:就是想知道你这个数据有多大,多长,因为传输都是1 和 0 ,具体校验方法如下: 奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为奇数 ---- 1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个。 偶校验:就是让原有数据序列中(包括你要加上的一位)1的个数为偶数 ---- 1000110(1)你就必须加1了这样原来有3个1要想1的个数为偶数就只能添1了。   如果想要在C

汇编语言 Part 2——寄存器

自古美人都是妖i 提交于 2020-05-08 00:26:10
处理器操作主要涉及处理数据。这些数据可以存储在内存中并从中访问。但是,读取数据并将其存储到内存中会减慢处理器的速度,因为它涉及将数据请求通过控制总线发送到内存存储单元并通过同一通道获取数据的复杂过程。 为了加快处理器操作速度,处理器包括了一些称为**寄存器 **(Registers) 的内部内存存储位置。 寄存器存储了用于处理的数据元素,而不必访问内存。处理器芯片中内置了数量有限的寄存器。 处理器寄存器 在 IA-32 体系结构中,有10个32位和6个16位处理器寄存器。寄存器分为三类—— 通用寄存器 (General registers), 控制寄存器 (Control registers),以及 段寄存器 (Segment registers)。 通用寄存器可进一步划分成—— 数据寄存器 (Data registers), 指针寄存器 (Pointer registers),以及 变址寄存器 (Index registers)。 数据寄存器 四个32位数据寄存器用于算术、逻辑和其他操作。这些32位寄存器可以用三种方式—— 完整的32位数据寄存器: EAX、EBX、ECX、EDX。 32位寄存器的下半部分可以用作4个16位数据寄存器: AX、BX、CX 和 DX。 上述4个16位寄存器的以上部分可用作8个8位数据寄存器: AH、AL、BH、BL、CH、CL、DH 和 DL。

win10上使用php与python实现与arduino串口通信

送分小仙女□ 提交于 2020-05-07 16:41:13
注意: php 需要php7,安装及开启php_dio.dll com口按照实际的进行设置,如果不知道可以打开arduino编辑器进行查看 可以与用户实现命令行交互,但是效率过慢,不清楚如何优化,使用python测试运行速度很快   PHP 版本 <? php # 只允许输入字符 # 已成功运行 // fwrite(STDOUT,'请输入您的博客名:'); // echo '您输入的信息是:'.fgets(STDIN); // exit(); set_time_limit (0 ); exec ('mode COM3: baud=115200 data=8 stop=1 parity=n xon=on' ); // 打开COM1口 O_RDWR读写模式 O_RDONLY只读 $fd = dio_open('COM3:', O_RDWR); // 打开失败报错 if (! $fd ) { die ("Error when open COM3" ); } // 开始 $ff = dio_stat( $fd ); $len = 8 ; while (1 ){ fwrite (STDOUT,'请设置led灯(h亮l暗): ' ); $line = fgets (STDIN); if ( $line ){ dio_write( $fd , $line ); $data = dio_read(

Erasure Coding(纠删码)深入分析

允我心安 提交于 2020-05-06 00:44:36
http://blog.sina.com.cn/s/blog_57f61b490102viq9.html 1. 前言 Swift升级到2.0大版本后宣称开始支持纠删码,这其实是一个很有意义的特性,主要是能够在一定程度上解决3副本空间浪费太多的问题。因为3副本这一点是swift推广的最大障碍之一,成本的增加吓退了不少潜在客户。这次的改进有望消除客户顾虑,拓展更多用户 http://www.openstack.org/blog/2014/07/openstack-swift-2-0-released-and-storage-policies-have-arrived/ 而回到存储领域来看,数据冗余机制其实这几十年来没有太多进展,RAID,副本一直是当仁不让的最终选择。而近几年,尤其是规模较大的应用场景下,纠删码越来越多的出现在选择的视野范围,成为RAID,副本之外的第三种选择,因此也获得了越来越多的关注。 纠删码(Erasure Code)本身是一种编码容错技术,最早是在通信行业解决部分数据在传输中损耗的问题,它的基本原理是把传输的信号分段,加入一定的校验再让各段间发生一定的联系,即使在传输过程中丢失掉部分信号,接收端仍然能通过算法把完整的信息计算出来。 如果严格的区分,实际上按照误码控制的不同功能,可分为检错、纠错和纠删三种类型。检错码仅具备识别错码功能 而无纠正错码功能