串口学习小总结(1)

STC89C52单片机学习——第19节: [8-1]串口通信 本次笔记是用来记录我的学习过程,同时把我需要的困难和思考记下来,有助于我的学习,同时也作为一种习惯,可以督促我学习,是一个激励自己的过程,让我们开始51单片机的学习之路。欢迎大家给我提意见,能给我的嵌入式之旅提供方向和路线,现在作为小白,我就先学习51单片机了,就跟着B站上的江协科技开始学习了.在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容,因为我之前有一个开发板,我大概率会用我的板子模仿着来做.让我们一起加油! 阅读详情

1.为什么有了CSerialPort类还要用MSComm串口控件?
      因为CSerialPort类的局限性(想要扩展、完善得自己写),其次因其非Modem应用,如果要对Modem进行控制还得自己对类进行改写。
      而MSComm控件因其为微软提供,功能相对完善,而且可以对中文进行操作处理。

2.MSComm串口控件编程的基本步骤:
    (1).在建立的工程中插入Microsoft Communication Control控件;
    (2).添加相关的MSComm控制变量(或对象);
    (3).对串口进行初始化,设置MSComm控件属性;
    (4).添加串口事件的消息处理函数OnComm()函数,在函数中根据应用需要,编写数据处理代码;
    (5).编写串口发送等其他代码;
    (6).关闭串口。(个人目前感觉没用)

3.MSComm控件通信功能的实现,也是通过间接调用Windows API编程的结果,只是先通过Comm.drv(系统库文件)解释,然后再传递给设备驱动程序进行的,它提供了一系列标准通信命令的使用接口,利用它可以建立串

口连接(关键是能通过串口连接到Modem),发出命令,交换数据以及监视和响应串行连接中发生的事件和错误。MSComm控件还可以用于创建电话拨号程序、串口通信程序和功能完善的终端程序。
      MSComm控件可提供了两种处理通信问题的方法:一.事件驱动(Event-Drive);二.查询。

4.MSComm控件属性
    属性列表:CommPort属性:设置并返回通信端口号。
        RThreshold属性:在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm之前,设置并返回的要接收的字符数。
        CTSHolding属性:确定是否可通过查询Clear To Send(CTS)线的状态发送数据。Clear To Send是Moden发送到相连计算机的信号,指示传输可以进行。该属性在设计时无效,在运行时为只读。
        SThreshold属性:MSComm控件设置CommEvent属性为comEvSend并产生OnComm事件之前,设置并返回传输缓冲区中允许的最小字
        Handshaking属性:设置或返回硬件握手状态,即设定串口通信设备之间的流控制
        InputMode属性:设置或返回传输数据的类型
        CDHolding属性:通过查询Carrier Detect(CD)线的状态确定当前是否有传输
        DSRHolding属性:确定Data Set Ready(DSR)线的状态
        Settings属性:设置并返回波特率、奇偶校验、数据位、停止位参数
        InputLen属性:设置并返回InPut属性从接收缓冲区读取的字符数
        InBufferSize属性:设置输入缓冲区大小
        InBufferCount属性:设置或返回输入缓冲区内等待读取的字节个数
        OutBurrerSize属性:设置或返回发送缓冲区的大小
        OutBufferCount属性:返回发送缓冲区的字节数,或者清空发送缓冲区
        InPut属性:从接收缓冲区读出数据
        OutPut属性:向发送缓冲区写数据,或者返回发送缓冲区当前的数据
        PortOpen属性:用于打开或关闭串口,或者返回串口的开、关状态
        EOFEnable属性:确定在输入过程中MSComm控件是否寻找文件结尾(EOF)字符。如果找到EOF字符,将停止输入并激活OnComm事件,此时CommEvent属性设置为ComEvEOF
        DTREnable属性:设置或返回Data Terminal Rrady(DTR)线状态。确定在通信时是否使Data Teminal Ready(DTR)线有效。Data Terminal Ready是计算机发送到调制解调器的信号,指示计算机在

等待接收传输
        RTSEnable属性:确定是否使Request To Send(RTS)线有效。一般情况下,由计算机发送Request To Send信号到连接的调试解调器,以示允许发送数据
        Break属性:设置或清除中断信号的状态。
        CommID属性:返回一个说明通信设备的句柄。
        NullDiscard属性:确定Null字符是否从端口传送到接收缓冲区

        CommEvent属性:设置或返回无论何时当CommEvent属性的值变化时,就产生OnComm事件,标志发生了一个通信事件或一个错误


(1)CommPort属性
            功能:设置并返回通信端口号。
            语法: void CMSComm::SetCommPort(short nNewValue)//设置串口号
           short CMSComm::GetCommPort()//查询当前串口号
            说明:nNewValue可以设置>1 or<16的任何数(defult)。
    (2)RThreshold属性
            功能:在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm之前,设置并返回的要接收的字符数。
            语法: void CMSComm::SetRthreshold(short nNewValue)
           short CMScomm::GetThershold()
            说明:接收缓冲区收到nNewValue个字符产生OnComm事件。例如nNewValue为1时,则接收缓冲区收到每一个字符都会使MSComm产生OnComm事件。
    (3)CTSHolding属性
            功能:确定是否可通过查询Clear To Send(CTS)线的状态发送数据。Clear To Send是Moden发送到相连计算机的信号,指示传输可以进行。该属性在设计时无效,在运行时为只读。
            语法:void CMSComm::SetCTSHolding(BOOL bNewValue)
          short CMSComm::GetCTSHolding()
            说明:如果Clear To Send线为低电平(CTSHolding = False)并且超时时,MSComm控件设置CommEvent属性为comEventCTSTO(Clear To Send Timeout),并产生OnComm事件。
          CTS线用于RTS/CTS(Request To Send/Clear To Send)硬件握手。如果需要确定CTS线的状态,则CTSHolding 属性给出一种手工查询方法。
    (4)SThreshold属性
            功能:MSComm控件设置CommEvent属性为comEvSend并产生OnComm事件之前,设置并返回传输缓冲区中允许的最小字符集数。
            语法:void CMSComm::SetThreshold(short nNewValue)
          short CMSComm::GetSThreshold()
            说明:STHreshold属性为0(defult),数据传输事件不会产生OnComm事件;
          STHreshold属性为1,当传输缓冲区完全空时,MSComm产生OnComm事件;
          STHreshold属性为


protocol_v1.0.1的程序学习及STM32数据串口的数据发送和接收学习的笔记 STM32数据串口传输 主要参考文章:STM32F407串口、STM32 串口接收和发送数据的方法、STM32串口发送数据和接收数据方式总结 通过这几个文章以及网络上其他信息的学习总结如下: 发送数据 最直接的便是使用void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);第一个参数是发送的串口号,第二个参数是要发送的数据了。 但这个只能进行单个字符的传输,所以对其进行修改补充,来满足一次多字符的传输; 在最开始看到的文章中是使用了这样的一个模板: 阅读详情

相关推荐

信盈达热点助手V1.1学习教程(二)——USART(SYN6658文字转语音模块和串口1的使用)

信盈达热点助手V1.1学习教程(二)——USART(SYN6658文字转语音模块和串口1的使用)

lhj2750200891的博客 1198

WinForm—串口通讯

ialPort(串行端口资源) 常用属性: BaudRate  此串行端口上要使用的波特率 DataBits  每发送/接收一个字节的数据位数目 DtrEnable  在通讯过程中是否启用数据终端就绪(Str)行 PortName  要打开的通讯端口的名称 RtsEnable  在通讯过程中是否启用请求发送(Rts)行 StopBits  每发送/接收一个字节的停止位数 常...

weixin_30732825的博客 456

CSerialPort串口类最新修正版2016-08-10

CSerialPort First Version by Remon Spekreijse on 2000-02-08 http://www.codeguru.com/cpp/i-n/network/serialcommunications/article.php/c2483/A-communication-class-for-serial-port.htm Second Version by mrlong on 2007-12-25 https://code.google.com/p/mycom/ 增加 ClosePort 增加 WriteToPort 两个方法 增加 SendData 与 RecvData 方法 by liquanhai on 2011-11-04 http://blog.youkuaiyun.com/liquanhai/article/details/4955253 增加 ClosePort 中交出控制权,防止死锁问题 by liquanhai on 2011-11-06 http://blog.youkuaiyun.com/liquanhai/article/details/6941574 增加 ReceiveChar 中防止线程死锁 by viruscamp on 2013-12-04 https://github.com/viruscamp/CSerialPort 增加 IsOpen 判断是否打开 修正 InitPort 中 parity Odd Even 参数取值错误 修改 InitPort 中 portnr 取值范围,portnr>9 时特殊处理 取消对 MFC 的依赖,使用 HWND 替代 CWnd,使用 win32 thread 函数而不是 MFC 的 增加用户消息编号自定义,方法来自 CnComm by itas109 on 2014-01-10 http://blog.youkuaiyun.com/itas109/article/details/18358297 解决COM10以上端口无法显示的问题 扩展可选择端口,最大值MaxSerialPortNum可以自定义 添加QueryKey()和Hkey2ComboBox两个方法,用于自动查询当前有效的串口号。 by liquanhai on 2014-12-18 增加一些处理措施,主要是对减少CPU占用率 by itas109 on 2016-05-07 http://blog.youkuaiyun.com/itas109 修复每次打开串口发送一次,当串口无应答时,需要关闭再打开或者接收完数据才能发送的问题。 解决办法:在m_hEventArray中调整m_hWriteEvent的优先级高于读的优先级。CommThread(LPVOID pParam)函数中读写的位置也调换。 参考:http://zhidao.baidu.com/link?url=RSrbPcfTZRULFFd2ziHZPBwnoXv1iCSu_Nmycb_yEw1mklT8gkoNZAkWpl3UDhk8L35DtRPo5VV5kEGpOx-Gea 修复停止位在头文件中定义成1导致SetCommState报错的问题,应为1对应的停止位是1.5。UINT stopsbits = ONESTOPBIT switch(stopbits)和switch(parity)增加默认情况,增强程序健壮性 by itas109 on 2016-06-22 http://blog.youkuaiyun.com/itas109 增加ReceiveStr方法,用于接收字符串(接收缓冲区有多少字符就接收多少字符)。 解决ReceiveChar只能接收单个字符的问题。 by itas109 on 2016-06-29 http://blog.youkuaiyun.com/itas109 解决RestartMonitoring方法和StopMonitoring方法命令不准确引起的歧义,根据实际作用。 将RestartMonitoring更改为ResumeMonitoring,将StopMonitoring更改为SuspendMonitoring。 增加IsThreadSuspend方法,用于判断线程是否挂起。 改进ClosePort方法,增加线程挂起判断,解决由于线程挂起导致串口关闭死锁的问题。 增加IsReceiveString宏定义,用于接收时采用单字节接收还是多字节接收 by itas109 on 2016-08-02 http://blog.youkuaiyun.com/itas109 https://github.com/itas109 改进IsOpen方法,m_hComm增加INVALID_HANDLE_VALUE的情况,因为CreateFile

串口编程基础

当需要和以串口连接到计算机上的设备进行通信时,就需要用到串口编程,在.net中已经将串口的操作封装到了SerialPort 类中,所以我们在利用这个类进行对串口进行访问比较方便。 SerialPort类主要包括以下属性: PortName :获取或设置通信端口,包括但不限于所有可用的 COM 端口。 BaudRate :串口通信的波特率。串口每秒钟传输的信号数。指的是信号被调制以后在单位时间

fhzh520的专栏 1351

还在手敲LaTeX公式?用Rime小狼毫打造你的专属数学输入法(附完整配置包)

本文介绍如何利用Rime小狼毫输入法引擎打造专属数学公式输入方案,显著提升LaTeX公式输入效率。通过详细配置教程和智能补全技巧,帮助科研人员和学生实现3-5倍的输入速度提升,特别适合学术写作和技术文档创作场景。

weixin_32520601的博客 282

ROS2_Moveit2_Ur5e_Grasp项目详解(二):核心模块功能解析

本文深入解析了ROS2_Moveit2_Ur5e_Grasp项目的核心模块功能。重点阐述了OctoMap建图模块如何为机械臂提供实时三维环境感知,并详细介绍了Robotiq夹爪与MoveIt2的集成控制、UR5e的运动规划策略,以及视觉模块如何协同工作,最终实现从目标检测到动态抓取的完整闭环。

weixin_29254029的博客 113

C#中SerialPort类对串口供电需要设置DtrEnable 和RtsEnable 两个属性

在开发中有些串口设备需要串口供电,使用C#中的SerialPort类默认情况下不会出发 DataReceived函数,但使用超级终端却可以接收到数据,这是因为 SerialPort 类的DtrEnable 和RtsEnable 两个属性默认是false,设为true即可接收数据了,如下: this.m_SerialPort.DtrEnable = true;...

weixin_30485291的博客 1667

Bentley二次开发教程28-交互窗口-案例实战2-EC属性赋值工具

该工具会根据用户输入的路径获取Schema文件的路径,然后通过路径读取对应的Schema文件并在树状图中显示EC类,当用户选择树状图上的节点时,此时会触发事件,根据EC属性添加用户自定义控件用于显示EC属性并可对其进行赋值操作。完成后选取元素,点击界面上的应用,此时元素会被赋予指定EC类,同时修改的EC属性值也会被同步赋予。该工具涉及到的WinForm控件有:TextBox,Button,TreeView,Panel,UserControl(用户自定义控件)。

不见不散的博客 1474

MSComm控件属性大揭秘

MSComm控件的属性(必须要熟悉的几个——CommPort:设置并返回通信端口号;Setting:以字符串的形式设置并返回数据传输速率、奇偶校验、数据比特、停止比特;PortOpen:设置并返回通信端口的状态,也可以打开和关闭端口;Input:从接收缓冲区返回和删除字符;Output:向传输缓冲区定一个字符串)1)CommPort属性void SetCommPort(short nNewValu

foxphoenix的专栏 1498

Burp Suite手工验证CORS漏洞的四步闭环法

CORS(跨域资源共享)是Web应用实现跨域通信的基础机制,其安全本质在于服务端对Origin头的校验逻辑与响应头组合的语义一致性。当服务端错误地返回Access-Control-Allow-Origin: *并配合Access-Control-Allow-Credentials: true,或采用弱校验(如字符串包含匹配)时,将导致敏感数据泄露与凭据劫持风险。该漏洞难以被自动化扫描器发现,因其依赖请求上下文、认证状态及动态策略判断。Burp Suite作为核心工具,需通过构造跨域请求、捕获预检响应、交叉验

weixin_30596343的博客 512

保姆级教程:在摩尔线程MTT S80上快速部署Ollama运行DeepSeek R1模型(附性能测试)

本文提供了一份详细的保姆级教程,指导用户在摩尔线程MTT S80显卡上部署Ollama并运行DeepSeek R1模型。内容涵盖从驱动安装、Docker环境配置到模型拉取、性能测试的全流程,并分享了实测数据与优化技巧,旨在帮助开发者快速在国产GPU平台上实现高效的大语言模型推理。

weixin_29091837的博客 525

Vc串口通信(1)

 一、VC编程实现串口通信软件        首先,我们来大概的回忆一下单片机的串口通信。    8051单片机的串行接口由数据缓冲寄存器SBUF、移位寄存器、串行控制寄存器SCON组成。8051单片机的串行接口是一个可编程的全双工通信接口,通过软件编程可以作为通用异步接收和发送器使用,也可作为同步移位寄存器,还可实现多机通信。其帖格式有8位、10位和11位,通过T1或T2设置各种波特率。1.1

zw0558的专栏 9775

华为ENSP虚拟网络与本地物理网卡高效桥接实战指南

本文提供了一份详细的华为ENSP虚拟网络与本地物理网卡桥接实战指南。通过清晰的四步操作,帮助用户打破虚拟实验环境的“孤岛”限制,实现ENSP设备与真实局域网及互联网的互通,从而进行更真实的协议测试、软件升级和混合网络环境搭建。

qsc90123456的博客 537

microblaze 串口学习·1

#1 串口初始化函数的参数1 名为XUartLite的结构体指针 1-1 函数参数1 结构体指针 XUartLite_Stats Stats; 结构体元素1 外设状态信息 结构体种定义了外设的信息 由XUartLite_Stats定义的结构体 结构体种定义的全部为32bit的整形量,用于指示串口的状态太UINTPTR为整形指针,指示的是外设寄存器的起始地址,这个起始地址可以在vivado的工程中查到 没用到以后再研究 结构体种第一个元素是一个指针 指向u8的元素。本质上是一个地址。 第二个元素

weixin_43896874的博客 1026

纽扣电池供电系统优化:NBM5100A与STM32F745VG组合方案

在低功耗物联网设备设计中,能量管理是核心挑战之一。纽扣电池因其体积小、成本低被广泛采用,但瞬时大电流需求常导致电压骤降和寿命缩短。通过超级电容缓冲技术,可以实现能量的细水长流式存储与集中释放。NBM5100A电源管理IC与STM32F745VG微控制器的组合方案,采用双阶段能量管理架构,先以恒定小电流充电,再通过电容释放大电流。这种方案不仅能提升系统稳定性,还能延长电池寿命3-5倍,特别适合智能门锁、无线传感器等需要间歇性高功率输出的场景。

weixin_29194255的博客 257

解决fetch_california_housing数据集403错误的三种实用方法

本文针对机器学习初学者加载fetch_california_housing数据集时常见的HTTPError 403: Forbidden错误,提供了三种经过实测的解决方案。详细介绍了手动下载与本地替换、修改源码下载路径以及配置网络访问策略的具体步骤,帮助用户根据自身网络环境和开发场景选择最佳方法,确保数据集顺利加载。

weixin_29074295的博客 550

欧姆龙CP1H常用指令学习(四)——串口无协议读写指令TXD,RXD教程

欧姆龙CP1H常用指令学习(四)——串口无协议读写指令TXD,RXD教程 【下载地址】欧姆龙CP1H常用指令学习四串口无协议读写指令TXDRXD教程 勇哥在学习欧姆龙PLC的过程中,发现官方手册对初学者不够友好,学习成本较高。为此,他将自己的学习心得整理成教程,帮助大家更快掌握CP1H的常用指令。本篇教程重点讲解串口无协...

gitblog_06776的博客 685

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LPC11E68串口USART1学习笔记

LPC11E68串口USART1学习笔记 http://www.yiboard.com/thread-628-1-1.html

佐佐沐 1284

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

《ROS1学习笔记——在ros中实现串口通信》

在ROS1中实现串口的收发功能。通过串口助手测试验证了双向通信功能,主机发送数据到ROS虚拟机并成功接收返回数据。

m0_74777148的博客 886

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Go最新AB32VG1开发板学习(3)UART(串口的简单使用)_uart ab32vg1,Golang码农是如何进入腾讯的

虽然不能用uart0做实验,但还是简单提一下uart0的硬件引脚吧,它只有一个引脚——PA7(1-wire 串口)下图的PAI121M31是数字隔离芯片,单片机的PA引脚与Update相连(P6的3,4脚短接),上面的J1也需要通过跳帽短接。由于我也第一次接触到单线协议的串口,所以暂时不作深入了解。

2401_84904900的博客 492

通信学习之串口1

发送移位寄存器与接收移位寄存器分别由发送控制器与接收控制器控制,这两个控制器受控与波特率发生器。协议:起始位低电平开始,高电平拉低成为低电平,有效数据位,低位先行,可传输5 6 7 8等不同位数,奇偶校验位 可选,具体看1的个数 停止位保持高电平为开始位做准备,可以设置为0.5 1 1.5位不等。除此之外还支持很多中断与回调函数。状态寄存器:TXE数据寄存器为空可写入 TC发送完成,发送移位寄存器为空且数据寄存器可写入RXNE接收数据寄存器非空可读取 IDLE检测到接收线路空闲。

weixin_62537055的博客 250

【STM32学习】(6)串口1的使用(USART1)

单片机串口是必须要学习的,而且很重要,在数据传输已经程序调试中都很重要。 本博客先学习一下USART1 串口 其实串口不是每一个IO都可作为串口的,他是有固定的IO口的。 如USART1串口对应的IO是PA9、PA10,这个很重要,不要记错了。材料文档中如下图: 这里我用的单片机型号为STM32F103VET 代码如下: main.c #include "led.h" #inc...

XiaoCaiDaYong的博客 8520

STM32学习笔记 3.1[串口]通信协议

Yu_Jiaxun的博客 478

【ESP32DEVKITV1学习笔记】串口通信

ESP32的串口通信,ESP32字符串发送,ESP32字符串接收 ,USART

weixin_44415862的博客 3114

CH573串口UART1学习笔记

CH573串口UART1学习笔记

weixin_36752415的博客 1151

【STM32学习笔记】1、串口配置概述

串口初始化设置步骤主要包括使能时钟、配置GPIO和串口参数、中断处理等。关键函数HAL_UART_Init需要配置UART_HandleTypeDef结构体,重点关注Instance(如USART1)和Init成员(包含波特率、字长、停止位等参数)。初始化时需设置复用功能模式,使能串口时钟,并可根据需要配置中断。该过程通过结构体参数化配置,简化了底层寄存器操作。

weixin_46606067的博客 1269
上一篇: 串口常用参数
下一篇: C++获取当前路径实现技巧分享
bbsview
博客等级 码龄15年 9粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值