导航:首页 > 数据处理 > 串口二得到的数据怎么发

串口二得到的数据怎么发

发布时间:2023-01-26 05:09:21

㈠ 如何用串口发送数据包

当然可以。串口助手里设置好就行。比如这样设置:波特率9600,数据位8,停止位1,校验为:奇校验、偶校验、标志位....任选其一。停止位:1.
单片机里按同样设置就行。
11位是一个字节,加了开始位,停止位,还有一个TB8,多机通信地址和数据通信区分位,不是一帧,确切的说是一个字节
楼主概念错误。串口通讯里叫帧,是指完成一次完整的数据传送。一帧里可以包含多个字节(同步通讯),也可以包含一个字节。比如包含了开始位,停止位,还有一个多机通信地址和数据通信区分位TB8的一次异步发送叫一帧。其中有效的信息是一个字节。
单片机工作在方式3,波特率9600,一个开始位,一个停止位,一个TB8区分地址和数据标志位,没有校验位的,校验用的是CRC16的,在串口调试助手里的设置:波特率9600,一个开始位,一个停止位,校验方式设为“无”,为什么没有数据返回呢?在系统里就有数据返回,有人说串口调试助手只能调试8位的数据,而单片机工作在方式3,增加一个TB8位,总共是九位数据,所以串口调试助手调试不了,是这样吗?
你校验方式设置错了啊!咋能设置成

呢?
你是要看单片机有没有回传数据对吧?先看发送的是地址还是数据,再看你的SM2位咋个弄的。总之确信单片机程序没错啦,也就是确信有回传数据了,把校验方式设置成:mark.再看。

㈡ 如何将串口二得到的数据,通过串口一发出去

首先,获取单片机和串口屏的通信协议;
其次,在PC中编写串口通信软件,分别控制两个设备即可;
调试的时候,可以先用现有的串口助手类软件如串口调试助手,或者自定义协议功能的通信软件如格西烽火,测试和验证你定义的协议。

㈢ 如何向串口发送数据,并接收串口发来的数据

您好,设备端和控制端连接好,控制端有接收发送数据的软件,那么就可以直接接收发送数据。如果有协议限制,匹配相应的协议即可。

㈣ STM32初学者求助!串口问题:如何用串口2接收数据,然后再由串口1发送出去

最简单就建个数组当缓冲区,串口2中断接收,串口1判断缓冲区只要有数据就发送,发送时计数器或指针移位的过程最好屏蔽中断。

㈤ STC12C5A60S2单片机的串口2发送数据问题

在PUDN 上找一个程序吧,很多这款单片机的,也有串口2的程序

㈥ 如何将串口二得到的数据,通过串口一发出去

void USART2_IRQHandler(void)
{
u8 Res;
int i;

if(USART_GetITStatus(USART2,USART_IT_RXNE))
{
Res =USART_ReceiveData(USART2);
USART_SendData(USART1,Res);
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);

}

}
你可以试试看这个代码

㈦ 串口发送与接收数据

使用RS-485串口进行通讯。
1.定义串口接收数据的缓冲区,最大可以保存64个字节 u8 RS485_RX_BUF1[64];
2.定义接收发送数据的长度 u8 RS485_RX_CNT;
3.发送数据的函数一般有两个printf和 USART_SendData,这里主要说USART_SendData的使用。printf实现的是格式化字符串,字符串比较有优势。
USART_SendData传递单个字符和指令。
4.给发送方定义一个标记位 u32 flags_send1; flags_send1

5.要发送的事件很多定义一个枚举类型的数据,将所有要发送的事件放入枚举类型数据中。

枚举类型数据将第一个定为1,其他的数据依次加1.
6.定义一个发送事件函数SendCmd(u8 cmd)

定义

7.假设要传递E_CKEYDN_INUSE1事件,要实现事件的传递,就应该将事件做参数传入SendCmd(u8 cmd)函数
此时flags_send1 |= EBIT(9)=;由第四点知道flags_send1是一个32位的无符号整型数据。所以 flags_send1 = 0000 0000 0000 0000 0000 0001 1111 1111
8.(1)UARTSend1()函数

此时的flags_send1 = 0000 0000 0000 0000 0000 0001 1111 1111;
sb[2] = (flags_send1 >> 0) & 0xff = 1111 1111;
sb[3] = (flags_send1 >> 8) & 0xff = 0000 0001;
sb[4] = (flags_send1 >> 16) & 0xff = 0000 0000;
sb[5] = (flags_send1 >> 24) & 0xff = 0000 0000;
(2)checksum()函数

d0=(senddata >> 0) & 0xff=0000 0001 1111 1111;
d1=(senddata >> 8) & 0xff=0000 0001 & 0xff=0000 0000 0000 0001;
d2=(senddata >> 16) & 0xff=0000 0000 & 0xff = 0000 0000 0000 0000;
d3=(senddata >> 24) & 0xff=0000 0000 & 0xff = 0000 0000 0000 0000;
sum=0000 0010 0000 0000;
~sum=1111 1101 1111 1111;
sb[6] = (sum >> 0) &0xff = 1111 1111 & 0xff = 1111 1111 ;
sb[7] = (sum >> 8) &0xff = 1111 1101;
(3)
为什么定义sb[8]的前两位是0x55,0xaa?

0xaa是1010 1010,0x55是0101 0101在通讯编码原理中,应该避免过多的重复0或者1,因为当传输变成一个长0/1时,一个脉冲干扰就会将数据截断,增加误码的概率。若通讯机不能接受10101010或者01010101,那么就是线路出现问题。这是一个判断线路状态的手段。

9.串口1接收数据
(1)通过UARTRead1()函数实现

receive += (RS485_RX_BUF1[2] << 0) = 0000 0000 0000 0000 0000 0000 1111 1111; ;
receive += (RS485_RX_BUF1[3] << 8) = 0000 0000 0000 0000 0000 0001 1111 1111
receive += (RS485_RX_BUF1[4] << 16) = 0000 0000 0000 0000 0000 0001 1111 1111
receive += (RS485_RX_BUF1[5] << 24) = 0000 0000 0000 0000 0000 0001 1111 1111
(2)将receive传入checksum(u32 senddata)函数中
d0= 0000 0000 1111 1111;
d1=0000 0000 0000 0001
d2= 0000 0000 0000 0000
d3=0000 0000 0000 0000
sum=0000 0001 0000 0000
~sum = 1111 1110 1111 1111
(3)定义接收数据标记位是 u32 flags_receive1;
通过判断RS485_RX_BUF1[6] 、RS485_RX_BUF1是否等于 ((sum >> 0) & 0xff)、((sum >> 8) & 0xff))来判断读入的数据是不是正确的。
RS485_RX_BUF2[6] ==1111 1111
RS485_RX_BUF2[7] == 1111 1110
正确时
接收到的数据是flags_receive1 = receive= 0000 0000 0000 0000 0000 0001 1111 1111;
不正确时 flags_receive1 |= EBIT(E_ERROR); 接收数据标记位置为错误位。

阅读全文

与串口二得到的数据怎么发相关的资料

热点内容
别人问我产品真假怎么回答 浏览:545
怎么做代理油漆 浏览:632
彩妆属于什么产品大类 浏览:281
泉州货运代理进口食品价格多少 浏览:71
头条为什么没有房产信息 浏览:59
qq飞车手游赛车数据怎么查看 浏览:676
二手房交易后银行多久清算 浏览:528
义乌外企税务代理多少钱一个月 浏览:801
宁夏资质化工产品有哪些 浏览:836
纳米技术与技术的简称是什么 浏览:987
汽修厂如何做代理 浏览:731
和房主直接交易需要交什么费 浏览:585
三星a7程序锁在哪里 浏览:234
oppo数据线接口发黄是怎么回事 浏览:351
看国漫用什么小程序 浏览:147
惠州政府支持哪些技术院校 浏览:968
5gran设备技术特点有哪些 浏览:487
mate10如何关闭后台运行程序 浏览:213
一点点那个点餐小程序怎么做的 浏览:132
软件程序如何驱动硬件的 浏览:529