串口字符串发送数据

在使用串口发送数据时可以选择字符串发送或者十六进制发送,通常情况下我们习惯选用字符串发送数据。关于两者的区别,需要从计算机存储数据的格式说起。

在计算机中,数据是以二进制的形式存储的,例如十进制 1(10)在计算机中用 0000 0001(2)来表示。我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照二进制的方式一位一位的发送出去。

例如我们要发送一串数据“A852010100000000A91A”,以字符串和十六进制两种方式发送:

(1)字符串发送

串口以字符串发送数据,首先将字符串转化为二进制,格式如下:

0000 1010     0000 1000    0000 0110    0000 0010    0000 0000   0000 0001   0000 0000    0000 0001

A                   8                  5                      2                    0                1                    0                    1

0000 0000     0000 0000   0000 0000    0000 0000     0000 1010    0000 1001    0000 0001    0000 1010

0                   0                     0                   0                    A                   9                   1                   A

然后按照8位(串口设置数据位为8位)形式将数据发送出去。

串口接收的数据格式如下


编号


数据内容


编号


数据内容


0


A


8


0


1


8


9


0


2


5


10


0


3


2


11


0


4


0


12


A


5


1


13


9


6


0


14


1


7


1


15


A

(2)十六进制发送数据

串口以十六进制发送数据,首先将数据转化为:

1010 1000     0110 0010    0000 0001     0000 0001    0000 0000    0000 0000     1010 1001     0001 1010

0XA8            0X52               0X01             0X01              0X00           0X00                0XA9            0X1A

然后按照8位(串口设置数据位为8位)形式将数据发送出去。

串口接收的数据格式如下:


编号


数据内容


编号


数据内容


0


A8


4


00


1


52


5


00


2


01


6


A9


3


01


7


1A

仔细对照接收结果就很容易明白字符串发送和十六进制发送的区别了。

时间: 2024-08-25 04:31:02

串口字符串发送数据的相关文章

用IO模拟串口协议发送数据

<pre name="code" class="cpp">//文件usend.h #ifndef _USEND_H_ #define _USEND_H_ //====红外接收相关定义============================= #define PuTx_High (P_uTx = 1) //数据高 #define PuTx_Low (P_uTx = 0) //数据低 #define V_SendDatNum 6//6 //发送数据字节数 /

从串口软件发送数据到单片机

/*接收*/#include <reg52.h>void InitUART(void){    TMOD = 0x20;    SCON = 0x50;    //    TH1 = 0xF3;    TL1 = TH1;    PCON = 0x80;    EA = 1;    ES = 1;    TR1 = 1;}void SendOneData(){ }void main(void){   P2=0xff;//全部熄灭    InitUART();  while(1);} void

串口发送数据——字符串发送与十六进制发送的区别

转自:http://blog.csdn.net/wityy/article/details/8234739 串口发送数据——字符串发送与十六进制发送的区别 在使用串口发送数据时可以选择字符串发送或者十六进制发送,通常情况下我们习惯选用字符串发送数据.关于两者的区别,需要从计算机存储数据的格式说起. 在计算机中,数据是以二进制的形式存储的,例如十进制 1(10)在计算机中用 0000 0001(2)来表示.我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照

下位机单片机c语言发送数据到串口,上位机pc机java语言获取端口数据

环境: Windows7 64b,jdk64b,myeclipse8.5,rxtx开发包,STC,keil,格西烽火,51单片机,rs232USB转串口线. 下位机c代码 #include <reg51.h> #include <string.h> #define INBUF_LEN 7   //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3,count=0; bit           rea

stm32RS485串口通信——中断接收发送数据

功能:通过PC机的串口调试助手发送数据给串口A,串口B接收到串口A发送的数据,再由串口B将接收到的数据返回给PC机的串口调试助手. PC->串口A->串口B->PC. 实验平台:stm32f407 /********************************************************************* 本平台具有六个串口: com1  485 com2 com3  232 需一个管脚控制DTU com4 485 com5  调试串口  TTL com6

串口通信基础,接收,发送数据

通信接口背景知识 设备之间通信的方式 一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种.它们的区别是: 串行通信的分类 1.按照数据传送方向,分为: 单工:数据传输只支持数据在一个方向上传输:    半双工:允许数据在两个方向上传输.但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信:它不需要独立的接收端和发送端,两者可以合并一起使用一个端口.    全双工:允许数据同时在两个方向上传输.因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端.

linux串口驱动分析——发送数据

一.应用程序中write函数到底层驱动历程 和前文提到的一样,首先先注册串口,使用uart_register_driver函数,依次分别为tty_register_driver,cdev_init函数,找到使用的file_operations,即应用程序与tty架构的统一接口.步骤不再赘述. static const struct file_operations tty_fops = { .llseek = no_llseek, .read = tty_read, .write = tty_wr

C#串口通信—向串口发送数据,同步接收返回数据

最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接收返回数据的方法,不使用DataReceived事件.经过测试,可以正常使用(不支持多线程调用). 一.Machine类 1.Machine类有一个静态变量,定义如下: private static SerialPort serialPort = null; 2.向串口发送数据,同步接收返回数据的方

单片机第13课:串口通信---向计算机发送数据

JP3接P0口. #include<reg51.h> #define uchar unsigned char uchar flag,num; // void initSer(); void main() { // initSer(); while(1) { //从计算机接收到的数据马上发送给计算机 if(flag==1) { //关闭中断,否则又要进入中断服务程序,会引起恶性循环 ES = 0; flag = 0; //发送数据,向发送缓存器中写入数据 SBUF = num; while(!T