在用单片机接受串口数据的时候,第一位是0x0A

unsigned char data len=0; //命令字符串长度
if(RI) //如果数据已经接收完,即RI=1
{
RI=0; //对RI进行清零
cmd_buf[counter] = SBUF; //把收到的数据赋值给变量(注意接收的写法)

}

if(cmd_buf[counter]==0x0D) //如果串口输入回车,那么命令结束
{
cmd_buf[counter]=‘\0‘;
len=counter-1;
counter = 0;
flag=1;
}
else
counter = counter+1;

这样得到的cmd_buff的hex文件,第一位是0x0A,而文本文件中不会显示出来。

但是如果要做比较的话,要注意这个首位的影响。

比如接收到的文本是ABCD

要比较的字符串是"ABCD",

那么应该用cmd_buff[1]去和字符串的第0位去比较。

时间: 2024-12-14 23:31:58

在用单片机接受串口数据的时候,第一位是0x0A的相关文章

51单片机之串口通信(三)

51单片机之串口通信(三) 已有 47 次阅读2015-12-29 00:21 |个人分类:51单片机| 单片机, 通信 用串口实现发送和接收同时可操作: 电脑显示结果如图: 源程序: /*项目名称:串口发送接收实验项目内容:串口发送接收同时进行,计算机发送数据给单片机控制P0口,从而控制LED灯的亮灭,单片机发送数据到计算机,计算机显示出来时间:2015年12月23日项目负责人:YUAN*/#include <reg52.h>typedef unsigned char uChar8;type

C# ---- 串口数据 YSI 实例

如本文时间 23:05 由于实际设备使用网络传输转虚拟串口模式,现场安装之后还是出了问题. 从20:30研究到23:30才终于弄明白 //打开新的串行端口连接 sp.Open(); //丢弃来自串行驱动程序的接受缓冲区的数据 sp.DiscardInBuffer(); //丢弃来自串行驱动程序的传输缓冲区的数据 sp.DiscardOutBuffer(); //使用缓冲区的数据将指定数量的字节写入串行端口 sp.Write(wbb, 0, wbb.Length); //当前线程挂起500毫秒 S

C# ---- 串口数据YSI实例

原文:C# ---- 串口数据YSI实例 C#----串口数据接收发送中,发送接收数据已经可以模拟了. 本次YSI实例过程中 主要是:类型转换问题 .计算校验码 一.不同设备不同的规则,本次实例代码如下: string serialNumber = sn;//Packet Command Payload int i1 = 0x11;//Packet Length Byte int i2 = 0xA5;//Packet Sync Byt[] string[] strarr = new string

单片机的串口通信

单片机串行口通信有4种不同的方式: 方式0:移位寄存器输入/输出方式:波特率:fosc/12; 方式1:10位UART(通用异步接口电路),一帧数据的格式为:1位起始位,8位数据位,1位停止位.其波特率是可变的(由公式): 方式2和方式3:这两种方式都是由11位UART组成,一帧数据格式为:1位起始位,9位数据位,1位停止位. 其中方式2的波特率固定为:fosc/32,fosc/64,由SOMD决定. 方式3的波特率与方式1相同.  单片机串口调试方法: 1.单片机+虚拟终端(作为串口输入设备)

【转】搞定单片机多字节串口接收(串口多字节接收发送的高阶研究)

搞定单片机多字节串口接收(串口多字节接收发送的高阶研究) 原文地址:http://bbs.ednchina.com/BLOG_ARTICLE_3007162.HTM 工作了一年多,写了不少单片机串口程序.感觉串口多字节接收部分的逻辑相对于配置寄存器跟串口回复来说,是有点难度的——寄存器配置基本上都是死的,串口回复多字节跟回复一字节只是多了一个循环. 串口接收程序是基于串口中断的,单片机的串口每次接收到一字节数据产生一次中断,然后再读取某个寄存器就可以得到串口接收的数据了.然而在实际应用当中,基本

C#----串口数据接收发送

虚拟串口驱动工具,创建俩个虚拟串口,如图: 创建两个Console模拟串口的发送接收数据 C#串口数据接收发送,类空间: using System.IO.Ports; C# 串行端口 接收数据,代码如下: //遍历串行端口名称数组 foreach (string port in System.IO.Ports.SerialPort.GetPortNames()) { Console.WriteLine(port); } byte[] b = new byte[32]; SerialPort sp

单片机多字节串口接收(转)

工作了一年多,写了不少单片机串口程序.感觉串口多字节接收部分的逻辑相对于配置寄存器跟串口回复来说,是有点难度的——寄存器配置基本上都是死的,串口回复多字节跟回复一字节只是多了一个循环. 串口接收程序是基于串口中断的,单片机的串口每次接收到一字节数据产生一次中断,然后再读取某个寄存器就可以得到串口接收的数据了.然而在实际应用当中,基本上不会有单字节接收的情况.一般都是基于一定串口通信协议的多字节通信.在422或者485通信中,还可能是一个主机(一般是计算机)带多个从机(相应的有单片机的板卡).这就

Android(Linux)实时监测串口数据

之前在做WinCE车载方案时,曾做过一个小工具TraceMonitor,用于显示WinCE系统上应用程序的调试信息,特别是在实车调试时,用于显示CAN盒与主机之间的串口数据.因为需要抢占市场先机,经常在新车上市前,就得配合CAN解码盒厂商同步调试车机端软件.这时候,TraceMonitor就可能派上大用场.遇到说不清是哪一边的问题时,抓数据一看,就清清楚楚了.有时终端客户的机器出现了原车功能异常的问题,也可以直接运行该工具,实时抓取串口数据提供给我们以分析问题原因.不过该工具需要业务应用程序做特

用普通IO接收串口数据

<pre name="code" class="cpp">//文件urece.h #ifndef _URECE_H_ #define _URECE_H_ #define V_BATOU 0x80 //电池充满 #define V_BATLV 0x40 //电池低电压 #define V_BATOI 0X20 //电池放电过流 #define V_BATOTP 0x10 //电池过温 #define V_BATOTIM 0x08 //电池充电超时 #def