51单片机arduino 串口发送数组怎么来接收拼音放到数组中去

单片机接收通过串口发来的字符串存进一个数组里面_百度知道
单片机接收通过串口发来的字符串存进一个数组里面
例如发来abcdrfgh,存进arr[8]={'a','b'........},只写出串口接收到存入数组的过程就行
我有更好的答案
i=0;}这样可以接收并赋值,但是会有一个问题,上位机必须一次发送8个字节才行如果上位机有一次发送了4个字节,在发送8个字节的时候,单片机将不能正常接收
采纳率:62%
if(RI){arr[i++]=if(i&8){i=0;}}
为您推荐:
其他类似问题
您可能关注的内容
字符串的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。求一个51单片机的串口接收发送程序_百度知道
求一个51单片机的串口接收发送程序
求大神给一个51的串口接收发送程序,参考学习一下,多谢多谢。
我有更好的答案
#include&reg52.h&unsigned char k=0,a;void main(){REN=1; TMOD=0X20;//定时器1为工作方式2 TH1=0XFD; TL1=0XFD; TR1=1; SM0=0;
//串口工作方式 SM1=1; EA=1; //*串口方式 ES=1;//*串口中断
{/* if(RI==1);
//查询方式
{RI=0;P1=SBUF;a=SBUF;k=1;} */
//查询方式if(k==1){k=0;SBUF=a;}
}}void zd()interrupt 4
//中断{RI=0; P1=SBUF; a=SBUF; k=1;}有中断和查询方式两种,任选一种即可
采纳率:100%
为您推荐:
其他类似问题
您可能关注的内容
51单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。后使用快捷导航没有帐号?
请完成以下验证码
查看: 11144|回复: 14
串口怎么一次性接收完缓冲区所有数据
在线时间0 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
我在编写串口接收PC软件发来的数据的时候,总是不能一次性完整的接收完数据,因为每次PC软件发来的字节是不固定的,所以不知道要怎样把缓冲区里的数据都接收进来,保存到一个数组里面data[ ]!这就好像是所谓的动态数组了&,不知道该怎么办
在线时间111 小时
威望2720分
TA的帖子TA的资源
五彩晶圆(初级), 积分 2720, 距离下一级还需 780 积分
五彩晶圆(初级), 积分 2720, 距离下一级还需 780 积分
51单片机缓冲区不就8位,有这问题吗
在线时间0 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
回复 沙发 孤獨の快樂 的帖子
我知道是八位啊&&我能接收 你只是没看明白我要说的而已。就是说我如果用PC第一次发送过来AB& &AC&&AD& & 第二次发AB& &AC&&AD&&AE 这样的话 我就不知道该怎么去接收了,如果设置循环接收3个字节的话&&第二次肯定会漏掉AE
在线时间1927 小时
威望5501分
芯币20046枚
E金币455枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 5501, 距离下一级还需 499 积分
五彩晶圆(中级), 积分 5501, 距离下一级还需 499 积分
如果字节之间间隔时间固定的话可以设一个等待时间,超时了就视为一次传送完毕
如果时间不固定的话....可以设一个表示传送结束的数据里用不到的特殊字节
如果所有256个数都要用到或者是不能设置的话...那估计就没办法了,让人去判断也无法判断是否传送完毕了吧
时间不确定,内容也不确定,至少我是分不出来了
在线时间1545 小时
威望6520分
芯币24166枚
E金币400枚
TA的帖子TA的资源
pc软件上可以设定一次发送的数据量
在线时间111 小时
威望2720分
TA的帖子TA的资源
五彩晶圆(初级), 积分 2720, 距离下一级还需 780 积分
五彩晶圆(初级), 积分 2720, 距离下一级还需 780 积分
你这表述很奇怪嘛,看不明白是正常的。这么一说,我就清楚了。
我当初就这么干的,接收到数据就就开启定时器并重新赋初值,当定时器溢出时(也就是说超过2帧数据间应有的时间),置位某个变量(标志接收完毕)并关闭定时器。
至于定时多少,你可以试试吧,估计几毫秒就成。
如果你是用查询式来判断接收,也可以while里面设置一变量,循环一次加1,超过一定次数(也就是说超过2帧数据间应有的时间)就跳出,置位某个变量(标志接收完毕)
这个次数嘛,你可以试试,我也忘了要设置多少了
[ 本帖最后由 孤獨の快樂 于
10:26 编辑 ]
在线时间111 小时
威望2720分
TA的帖子TA的资源
五彩晶圆(初级), 积分 2720, 距离下一级还需 780 积分
五彩晶圆(初级), 积分 2720, 距离下一级还需 780 积分
如果PC发送的数据可以自己任意改写,那就加个结束标志位咯。
在线时间158 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 62, 距离下一级还需 138 积分
一粒金砂(中级), 积分 62, 距离下一级还需 138 积分
这些问题主要是你自己要搞清楚数据规律,程序上区分一下就是了
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
我这边也想清空串口缓存区,请较大神:
我PC正常给我发通信协议AA1C或AA0C,我程序功能实现无问题;
但是我担心使用过程中一旦出现一个干扰,产生一个乱嘛,比如AA,随后我PC再发协议信号,通讯就不灵了,程序大致如下:
void ser() interrupt 4
& & & & if(RI)
& & & & & & & & RI=0;& & & & & & & & & & & & & & & & & & & & & & & & //接收中断标志
& & & & & & & & cut[j]=SBUF;
& & & & & & & & j++;
& & & & & & & & if(j==2)
& & & & & & & & {
& & & & & & & & & & & & low4=cut[1]&0x0f;
& & & & & & & & & & & & if(cut[0]==0xaa && low4==0x0c )
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & RI=1;
& & & & & & & & & & & & & & & & j=0;
& & & & & & & & & & & & & & & & ES=0;& & & & & & & & & & & & & & & & //关串口中断
& & & & & & & & & & & & & & & & flag=1;& & & & & & & & & & & & //串口接收标志位置位
& & & & & & & & & & & & }
& & & & & & & & & & & & else
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & cut[0]=0;
& & & & & & & & & & & & & & & & cut[1]=0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & j=0;
& & & & & & & & & & & & & & & & ES=1;
& & & & & & & & & & & & & & & & RI=0;
& & & & & & & & & & & & }
& & & & & & & & }
& & & & & & & & if(j&3)
& & & & & & & & {
& & & & & & & & & & & & //报错
& & & & & & & & }
我这样操作,清空的是自己的变量,一直没有清空串口缓存区,所以一直存在问题,请大神看看,有何解决办法
你清空了cut这个数组,j到2就清零了 不会大于3吧&
在线时间479 小时
E金币436枚
TA的帖子TA的资源
一粒金砂(中级), 积分 12, 距离下一级还需 188 积分
一粒金砂(中级), 积分 12, 距离下一级还需 188 积分
在线时间6 小时
E金币280枚
TA的帖子TA的资源
一粒金砂(中级), 积分 6, 距离下一级还需 194 积分
一粒金砂(中级), 积分 6, 距离下一级还需 194 积分
确定一个通信协议,规定数据格式就行了,简单做点工作就不用这么纠结了。还有,为什么要一次接收完?用中断接收不行吗?
在线时间7 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 6, 距离下一级还需 194 积分
一粒金砂(中级), 积分 6, 距离下一级还需 194 积分
最好是用串口接收中断!如果不用中断就用程序写个软环形串口缓冲区!
在线时间169 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 64, 距离下一级还需 136 积分
一粒金砂(中级), 积分 64, 距离下一级还需 136 积分
做工程的作法:开辟一大小固定的个缓冲区,一个写指针,一个读指针,一个翻页标志;每接收到一个数据,保存到缓冲区,写指针+1;写指针到顶时,翻页标志置位,写指针返回底部。比较读指针和写指针:读指针小于写指针,或翻页标志被置位,说明有数据,将数据读出;读指针到顶,指针返回低部。
在线时间593 小时
芯币3592枚
TA的帖子TA的资源
一粒金砂(中级), 积分 173, 距离下一级还需 27 积分
一粒金砂(中级), 积分 173, 距离下一级还需 27 积分
我这边也想清空串口缓存区,请较大神:
我PC正常给我发通信协议AA1C或AA0C,我程序功能实现无问题;
你清空了cut这个数组,j到2就清零了 不会大于3吧
疏雨客晚归,荒烟乱,几许江南无晴!又落花,残香织梦,莫&&莫&&莫,白首衷肠……
在线时间593 小时
芯币3592枚
TA的帖子TA的资源
一粒金砂(中级), 积分 173, 距离下一级还需 27 积分
一粒金砂(中级), 积分 173, 距离下一级还需 27 积分
pc就直接发数据 没有协议头什么的?
EEWORLD 官方微信
Powered by51单片机串口数据接收问题?? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。4被浏览586分享邀请回答41 条评论分享收藏感谢收起添加评论分享收藏感谢收起写回答51单片机串口接收计算机发来的字符串_悬赏任务_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
51单片机串口接收计算机发来的字符串
单片机接收字符串
收到0篇文档
上传优质文档奖励
文库对每周新上传的公开文档进行评选,被评为优质文档可获每篇下载+1奖励。查看
相似悬赏任务}

我要回帖

更多关于 串口发送字节数组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信