精华内容
下载资源
问答
  • 1. 检查串口是否连接好;2. 复位程序;3. 重启该软件;

    1. 检查串口是否连接好;

    2. 复位程序;

    3. 重启该软件;

    4. 检查板子是否上电;

    5. 新建工程!!!程序调试时卡在硬件中断错误中了,新建工程之后程序运行正常,串口可以连接了。不知道问题出在哪儿。

    展开全文
  • 串口通信关于串口到的问题(我开始也被困扰了好久,终于解决,与大家分享一下)
  • stm32串口通信失败的原因

    千次阅读 2021-02-26 19:53:47
    一、接收乱码 二、串口占用 三、硬件问题

    一、接收乱码

    1、主要原因是单片机和上位机之间波特率不匹配。这种情况往往由用户粗心导致,解决方法,主要有以下几种:
    修改串口助手波特率,
    解决方法如下图所示
    修改单片机串口波特率设置,解决方法如下
    图所示
    如果MCU和上位机波特率一致,可能是HSE(外部高速时钟源)配置错误,解决方法如下图所示

    二、串口占用

    三、硬件问题

    USB转TTL芯片损坏或虚焊。

    展开全文
  • 一般来说,半双工通信需要添加一个超时时间,当超过这个时间后,就判定接收失败了,之前的缓存数据也要清空。 个人选择定时器的方式,至于如何计算超时,公式如下: 数据所需时常=总数据长度10/波特率。 对于我的数据...

    最近在软件调试中,发现数据一长就经常丢失数据,所以耐下心了解了一些原理,用较为简单的理解方式记录下来。
    题外话
    一般来说,半双工通信需要添加一个超时时间,当超过这个时间后,就判定接收失败了,之前的缓存数据也要清空。
    个人选择定时器的方式,至于如何计算超时,公式如下:
    数据所需时常=总数据长度10/波特率。
    对于我的数据,最长为1237字节,波特率选择9600,则需要耗时1237
    10/9600=1.28854…,基本为1.3秒,所以我设置了串口的超时时间为3秒。发送后如果3秒没接收到数据,就算超时,直接发下一条指令。

    串口数据丢失:

    数据丢失中间部分数据或者尾部数据。
    问题原因:

    未使用好串口的丢弃缓存函数

    serialPort?.DiscardInBuffer();//丢弃接收缓冲区数据
    

    个人习惯在下面的代码后面添加丢弃缓存函数,导致数据丢失

     byte[] buffer = new byte[serialPort.BytesToRead];
     serialPort.Read(buffer, 0, buffer.Length);
    

    原因是我读取serialPort.BytesToRead长度时,用buffer取缓存的时候,长度已经增加了,所以我丢弃缓存会将还没获取的缓存一并清除。
    这里大家用read()方法的时候,其实读出来的数据在缓存中已经被清除了,不需要处理。

    串口数据一包分很多次触发串口事件

    为了串口一次得到完整包,一般我们在进入串口事件后会选择延时(根据完整包所需时长),再从缓存中获取数据。
    但是一旦数据包字节很长的时候,这样的方式就不是很好,因为延时造成界面卡或者漏包,就选择将延时去掉。
    使用9600的波特率接大于32字节的数据时,如果在串口事件中不延时,会发现每次触发触发事件可以接收到32个字节,所以需要拼接字节,得到最后的完整包。
    个人代码如下:

     private void DataReceived(object sender, SerialDataReceivedEventArgs e)
     {
         try
         {
             if (!serialPort.IsOpen)//串口在关闭时不接收数据 为了防止关闭串口时卡死的问题
             {
                 serialPort?.DiscardInBuffer();//丢弃接收缓冲区数据
                 return;
             }
             if (serialPort.BytesToRead < 4 && LineBuffer == null)
             {
                 return;
             }
             byte[] buffer = new byte[serialPort.BytesToRead];
             serialPort.Read(buffer, 0, buffer.Length);
             InquireOutTimeCount = 0;
             if (buffer == null || buffer.Length <= 0)
                 return;
             Show(buffer, "串口接收");
             if (buffer[0] == CommunicationHelper.CmdBagHead1 && buffer[1] == CommunicationHelper.CmdBagHead2)//判断是否是包头
             {
                 LineBuffer = buffer;
             }
             else if (LineBuffer != null)//拼接
             {
                 LineBuffer = CommunicationHelper.AddBytes(LineBuffer, buffer);
             }
             //之后去判断包是否完整,完整解析后清空自己的缓存
             .........
    }
    

    有关串口事件说明

    串口内部有一个缓存,串口数据都会保留在这里,可使用read()去读取。
    经过调试,发现串口事件应该是一个时间触发的机制,例如9600的波特率每次触发串口事件最多能传递32个字节。
    串口内部的缓存是类似队列的先进先出,进入串口事件后,读到的缓存长度serialPort.BytesToRead只是读的时候缓存的长度,可能你下一行代码去取缓存的时候,缓存就增加了,你只能取到之前的缓存数量,若没有选择清空缓存,完成本次串口事件后,剩余的缓存会再次触发串口事件让你继续读取缓存。

    展开全文
  • 单片机串口通信不正确

    千次阅读 2013-08-16 10:07:12
    单片机串口通信不正确,原因很可能是晶振频率引起的。 如果晶振频率为11.0592M那么设置波特率为9600没有问题; 如果晶振频率为12M,那么如果将波特率也设为9600bps会有较大误差, 建议将波特率调整为2400...

    单片机串口通信不正确,原因很可能是晶振频率引起的。

    如果晶振频率为11.0592M那么设置波特率为9600没有问题;

    如果晶振频率为12M,那么如果将波特率也设为9600bps会有较大误差,

    建议将波特率调整为2400bps,这样误差会较小,保证通信的正确率。


    本文转载自 http://hi.baidu.com/ladybeta/item/cd18f60e9a940c14cd34eaf1

    展开全文
  • 本文实现的是单片机和电脑之间的串口通信,需要用到51单片机开发板,电脑,STC-ISP软件,代码已调试成功,切实可用。 文章目录单片机UART串口通信1.实现代码2.实机操作①连接单片机和电脑②用STC-ISP软件烧录.HEX...
  • 串口流控提供了由于某种原因不能进行通讯时阻塞通讯的一种机制,经常采用硬件流控和软件流控两种方式。 一:DB9串口引脚定义: 1. CD← Carrier Detect 载波检测 2. RXD← Receive Data 接收数据 3. TXD→ ...
  • C#串口通信数据完整

    千次阅读 2018-08-03 10:34:54
    我使用串口工具调试 ,串口通信正常,但是在与实际单片机通信过程中,出现数据完整现象,经过多方查询,发现模拟状态下串口通信速率是理想状态,但是在实际通信过程中,串口通信并不是理想状态,有速率限制。...
  • then插入一个U盘试试(博主插入的是两个ttl转串口,用于串口通信的检测): 这样运行后,运行两次——打开两个串口界面——一个设置为COM某、一个设置为另一个COM——点击发送数据进行通信
  • 串口通讯不正常

    千次阅读 2012-11-16 12:34:05
    笔者在淘宝网淘的一块USB转串口模块,价格才几元人民币。看外观好像质量还不错,另外传输线缆还带屏蔽。 但是拆开模块,发现使用的是...正常启动Bootloader,并成功进入linux,通过串口向笔者的笔记本电脑传送大量
  • 串口通信

    2017-11-10 00:06:37
    然后就去搞串口通信,从头开始写,按照网上教程写的,但是一直有错误运行出来,然后又重新试了几遍,还是不行,网上找错误代码的原因,找了好长时间还是没有解决问题,然后就再重新建立工程一直试。最后终于发现了...
  • STM32串口通信串口助手收到数据

    千次阅读 多人点赞 2019-08-01 19:56:44
    已经确定代码是没有问题的,但是串口调试助手就是收到消息 解决办法: 别急,我来帮你 右击工程,选择Options for Target ‘test’ 然后。。。。。。 这里打勾, 然后,OK,然后重新编译,打开串口助手,问题解决 ...
  • origin: ... ...协议栈太大不是主要原因,以太网协议栈也小,但在通信行业的应用远远多于USB 具体原因有以下几点: 1、USB通信距离太短(抗干扰能力太弱),只有5米,RS232通
  • 共地!共地!共地! 转载于:https://www.cnblogs.com/turtlegood/p/4857501.html
  • 找了一个下午也没找到什么原因,一直认为是串口中断函数出错了,可是看了n遍,也没觉得那个函数有问题啊。晚上睡觉觉都在想到底是怎么回事........,今早上一来,把一些程序先注释掉之后,结果发现,没问题了,突然...
  • 串口通讯通信协议

    2020-01-13 11:17:30
    我们的串口程序,除了通用的,进行串口监听收发的简单工具,大多都和下位机有关,这就需要关心我们的通讯协议如何缓存,分析,以及通知界面。 所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、...
  • STM32F103C8T6串口IAP 不成功问题梳理前言(一定要看)1.启动文件的问题2.APP的地址问题3.APP的大小问题4.使用QT TCP协议下载程序的小伙伴注意 前言(一定要看) 这篇文章是我在进行STM32串口IAP过程中遇到的一些...
  • 串行通信的基本原理及用MFC实现串口通信(转)[@more@] 在Windows应用程序的开发中,我们常常需要面临与外围数据源设备通信的问题。计算机和单片机(如MCS-51)都具有串行通信口,可以设计相应的串口通信程序,完成二...
  • 配置串口通信模式时设置成了同步模式,改成异步模式就好了 有些串口调试助手(如win10商店的免费的串口调试助手)能正确显示接收的字符,需要换调试软件。
  • 串口通信的基本知识

    万次阅读 多人点赞 2014-07-02 14:41:03
    [编辑简介]:本文介绍了串口通讯的基本概念、数据格式、通讯方式、典型的串口通讯标准等内容。 [关键词]:串口通讯,RS232,RS485,停止位,奇校验,偶校验 1 串口通讯 串口通讯(Serial Communication),是指外设和...
  • Android串口通信

    2018-06-10 13:54:18
    前段时间因项目性质原因开始接触人脸识别、指纹、身份证读取等方面,遇到了不少问题,其中在对接硬件方面的指纹模块时走了很多弯路,在此简单的介绍一下使用到的串口通讯知识,希望能对各位小伙伴有一定的帮助同时也...
  • Android 串口通信

    千次阅读 2018-06-02 15:08:41
    前段时间,接触了一个智能硬件的项目,在定制化的平板上运行 Android 系统,并通过串口和蓝牙与其他设备进行通讯。 担心时间长了,就容易忘记,因此,整理了关于 Android 串口通信的知识。 什么是串口通信 先...
  • 关于mfc串口通信.exe文件在其他电脑无法打开的原因及解决问题方法-附件资源

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,446
精华内容 22,978
关键字:

串口通信不成功的原因