找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1218|回复: 8
收起左侧

做回伸手党 请教个单片机C语言发送数组的问题

[复制链接]
ID:47286 发表于 2021-11-19 18:54 | 显示全部楼层 |阅读模式
void Send_String(uchar *p)                                        //发送字符串(字符串首地址)
{
        while(*p)                                                                        //等待 指针=0(指针=空)
        {
                U2S1B(*p);                                                                        //调用 串口2发送1Byte(数据)
                p++;                                                                                //累加 地址(地址往后移)
        }
}

这段是用指针发串数据 比如 Send_String("ABC");

现在想发个数组 咋用啊 哪位前辈给扔个现成的过来行么

别喷我啊 我知道每一点知识都是重要的 但我这水平就是个应用级 能用就行 我老觉得吧 好比 螺丝也是门挺深的学问 可设计汽车的人不会去专门研究怎么造螺丝吧 按规格拿来拧不得了

先谢过

回复

使用道具 举报

ID:624769 发表于 2021-11-19 19:15 | 显示全部楼层
假定数组  
u8 test[128];

那么:
用你这个这个函数发的时候, 先确保要发送的数组的末尾是0 比如:
       test[127] = 0x00;  //根据实际情况确定哪里是末尾
然后,
       Send_String(&test[0]);  //假定从0开始发
如果,数组内部会有别的地方有 0 那么……  就必须写个新的子函数。

void burst_send(u8 len, u8 *p)
{
         while(--len)   U2S1B(*p++);
}

调用时:  burst_send(110, &test[2]);  //从第3个字节开始发,发送110个
回复

使用道具 举报

ID:47286 发表于 2021-11-19 19:58 | 显示全部楼层
188610329 发表于 2021-11-19 19:15
假定数组  
u8 test[128];

感谢前辈回帖 第二个例子正合适
回复

使用道具 举报

ID:47286 发表于 2021-11-19 20:00 | 显示全部楼层
188610329 发表于 2021-11-19 19:15
假定数组  
u8 test[128];

另外 再请教一下 &test[2]里这个&是必须的么 啥意思 我是小白 方便的话就给讲讲
回复

使用道具 举报

ID:624769 发表于 2021-11-19 20:31 | 显示全部楼层
dzbj 发表于 2021-11-19 20:00
另外 再请教一下 &test[2]里这个&是必须的么 啥意思 我是小白 方便的话就给讲讲

从数组头开始,即0开始的话,   可以光用  test      但是,如果带上位置,比如: test[2] 就必须 &了。
回复

使用道具 举报

ID:47286 发表于 2021-11-19 21:06 | 显示全部楼层
188610329 发表于 2021-11-19 20:31
从数组头开始,即0开始的话,   可以光用  test      但是,如果带上位置,比如: test[2] 就必须 &了。

收到 感谢
回复

使用道具 举报

ID:624769 发表于 2021-11-20 13:04 | 显示全部楼层

昨天回帖子的时候,在给娃解释方差公式,函数没仔细看,你要是直接用了,到时候整体调试如果出了错怕你没想到是我的锅,现在更正一下重新给你。
void burst_send(u8 len, u8 *p)
{
         while(len--)   U2S1B(*p++);
}
回复

使用道具 举报

ID:47286 发表于 2021-11-20 23:18 | 显示全部楼层
188610329 发表于 2021-11-20 13:04
昨天回帖子的时候,在给娃解释方差公式,函数没仔细看,你要是直接用了,到时候整体调试如果出了错怕你没 ...

感谢

我发现这两个范例的不同一个是--len 一个是len-- 这个事昨天拿到你的范例测试的时候就注意到 并且分别比较了一下 貌似--len的效果比len--好 因为我把原来赋给len的值+1后取代原来用for的发送就完全正常 而用len--没搞定 于是就沿用了--len 其实 是我没仔细琢磨 因为要写的代码量比较多 还有好多模块没写好 而这个函数相当于总成上的一个螺丝 最终是总成拼装成成品 所以就没深入了

我写这么一大堆的意思是想说 非常非常感谢你的认真 并不是每个人都像我似的被很多雷砸过 走路有点小心翼翼 而你的更正可能是很有帮助的
回复

使用道具 举报

ID:624769 发表于 2021-11-20 23:57 | 显示全部楼层
恩,两个的区别就是  --len  要比 len-- 大1,即如果你把 len 设置1, --len 就直接跳出循环了,len-- 会执行1次,再跳出循环。既然你这边没问题,我就放心了。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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