OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 18295|回复: 11

串口2发送完数据后,怎么实现每发完一次数据都在后面加一个回车?

[复制链接]

11

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2013-5-4
在线时间
3 小时
发表于 2014-8-13 08:56:39 | 显示全部楼层 |阅读模式
5金钱
我是用串口1发数据到串口2,然后由串口2将数据发送出去,但串口2发完数据后要怎么加一个回车啊?串口1发的数据是有换行,但串口2发出去的并没有换行,所有数据都是连在一起.结果如下,回车符应该是0x0D,0x0A呀,但我试了不行,不知道应该怎么加的,求助。我想要串口2每发完一次都换一行,应该怎么做........
串口1:
0123456789
0123456789
0123456789
0123456789
0123456789

串口2:
0123456789012345678901234567890123456789012345678901234567890123456789

这个问题要怎么解的?求指点,请求原子哥及各位大神帮助啊,感谢!!!

代码

while(1) 
{  
     delay_ms(1);
        
       if(USART_RX_STA&0x8000)     //接收到一次数据了
{   
rxlen=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
          
for(i=0;i<rxlen;i++)
{
               
USART_SendData(USART2 , USART_RX_BUF);//向串口2发送数据
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束
                                 
}
           
            printf("%s\r\n",USART_RX_BUF);
         
            USART_RX_STA=0;
           
            
}else
{
times++;
if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
delay_ms(10);   

最佳答案

查看完整内容[请看2#楼]

在 for(i=0;i<rxlen;i++) 循环发送的最后,加多2个字节的发送: 多发送0X0D,0X0A,就可以了.>
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-13 08:56:40 | 显示全部楼层

for(i=0;i<rxlen;i++)
循环发送的最后,加多2个字节的发送:
多发送0X0D,0X0A,就可以了.>
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2013-3-24
在线时间
0 小时
发表于 2014-8-13 09:02:02 | 显示全部楼层
接收的时候要加分支,读到连续的0x0D,0x0A就输出一个回车
回复

使用道具 举报

11

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2013-5-4
在线时间
3 小时
 楼主| 发表于 2014-8-13 09:21:00 | 显示全部楼层
回复【2楼】原味土豆泥:
---------------------------------
可以给个例子吗?谢谢!
回复

使用道具 举报

0

主题

20

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-8-21
在线时间
4 小时
发表于 2014-8-21 13:08:37 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
后面加入为0x0D,0X0A后 前面会丢失字符 是什么原因?
回复

使用道具 举报

0

主题

20

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-8-21
在线时间
4 小时
发表于 2014-8-21 13:11:58 | 显示全部楼层
回复【3楼】冰冷de名人:
---------------------------------
你好 你的问题解决了吗 第一个字符丢失 你有这样的问题吗 怎么解决的 把代码附上 让我参考一下
回复

使用道具 举报

11

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2013-5-4
在线时间
3 小时
 楼主| 发表于 2014-8-21 23:25:58 | 显示全部楼层
回复【6楼】huanying:
---------------------------------
对于丢数据的问题,百度上有详细的解说呢,进下面的网址看看哈
http://wenku.baidu.com/link?url=JzdeL2s-e_YORm1DIqOHH-APkvk6jVB8dtbjnKV2vIdmOYKtuFQqH5v3MdkIc3NU9eKSQYyu1N4K6ba5Yaf6NHUX4Y42yXeByHG1uA5LwJ_
回复

使用道具 举报

0

主题

20

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-8-21
在线时间
4 小时
发表于 2014-8-22 10:50:01 | 显示全部楼层
回复【7楼】冰冷de名人:
---------------------------------
好的 谢谢问题已解决  交换一下 发送数据和等待发送结束 两句的位置也可以
回复

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2016-12-21
在线时间
6 小时
发表于 2017-7-4 16:04:30 | 显示全部楼层
正点原子 发表于 2014-8-13 08:56

for(i=0;i&lt;rxlen;i++)
循环发送的最后,加多2个字节的发送:
多发送0X0D,0X0A,就可以了.&gt;

不行啊。怎么办
换行程序.png
回复

使用道具 举报

1

主题

127

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
438
金钱
438
注册时间
2017-3-10
在线时间
63 小时
发表于 2017-7-4 16:37:49 | 显示全部楼层
我是这样解决的:
printf("Serial port at 115,200 baud, 8 bit, no parity, 1 stop-bit.\n");

就是\n
回复

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2014-10-8
在线时间
3 小时
发表于 2017-7-6 14:27:45 | 显示全部楼层
正点原子 发表于 2014-8-13 08:56

for(i=0;i&lt;rxlen;i++)
循环发送的最后,加多2个字节的发送:
多发送0X0D,0X0A,就可以了.&gt;

原子哥,这个方法多接收的两位都是00啊,我是串口2接受然后串口1发出来
回复

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2014-10-8
在线时间
3 小时
发表于 2017-7-6 14:30:14 | 显示全部楼层
楼主,原子哥给的解决方法你用着好用么为什么我多发送的两位是00啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-17 01:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表