OpenEdv-开源电子网

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

请大家指点指点,弄了一天了

[复制链接]

12

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2016-2-13
在线时间
21 小时
发表于 2017-12-7 19:03:48 | 显示全部楼层 |阅读模式
3金钱
  思路设计:         如果发送”开灯“字符,LED灯就亮,发送”响起“字符时,LED灯灭蜂鸣器响!
     否则,LED灯与蜂鸣器处于原始状态!

最佳答案

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

嗯其实你可以这样,使用中文指令判断起来对于你来说有点儿复杂,你可以从最简单的做起。给个例子: 1、发0x00灯亮,发0x01灯灭 2、发'a'灯亮,发'b'灯灭 3、发"on"灯亮,发"off"灯灭 最后,才是你所想要的接收中文指令。 给自己挑战是非常好的,但是解决的过程要循序渐进。如果一开始目标设计的太高,你遇到的将一直都是失败失败失败和失败,没有自信心和成就感的支撑,很快你就没有学下去的动力,甚至会反感它了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2017-12-7 19:03:49 | 显示全部楼层
小茶叶 发表于 2017-12-7 19:21
想给自己一些挑战性

嗯其实你可以这样,使用中文指令判断起来对于你来说有点儿复杂,你可以从最简单的做起。给个例子:
1、发0x00灯亮,发0x01灯灭
2、发'a'灯亮,发'b'灯灭
3、发"on"灯亮,发"off"灯灭
最后,才是你所想要的接收中文指令。

给自己挑战是非常好的,但是解决的过程要循序渐进。如果一开始目标设计的太高,你遇到的将一直都是失败失败失败和失败,没有自信心和成就感的支撑,很快你就没有学下去的动力,甚至会反感它了。
十六进制带我飞。
回复

使用道具 举报

12

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2016-2-13
在线时间
21 小时
 楼主| 发表于 2017-12-7 19:06:11 | 显示全部楼层
看看那里错了
QQ截图20171207185111.png
QQ截图20171207185154.png
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2017-12-7 19:16:54 | 显示全部楼层
你的if判断语句不正确。

if语句中条件不为0恒为真,else判断也不对。

楼主有点儿还不会跑就想飞的味道。。。建议先好好复习下C语言中if语句的用法。

另,想实现这个功能,需要将接收到的字节与给定的“开灯”等命令逐【字节】比较,由于是中文,会比较复杂,应当将中文指令以字符串的形式存储,然后对于接收到的信息逐字节比较,才能达到想要实现的效果。
十六进制带我飞。
回复

使用道具 举报

12

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2016-2-13
在线时间
21 小时
 楼主| 发表于 2017-12-7 19:21:58 | 显示全部楼层
DreamWaterPro 发表于 2017-12-7 19:16
你的if判断语句不正确。

if语句中条件不为0恒为真,else判断也不对。

想给自己一些挑战性
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2017-12-7
在线时间
0 小时
发表于 2017-12-8 09:42:41 | 显示全部楼层
二楼正解
回复

使用道具 举报

5

主题

266

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1526
金钱
1526
注册时间
2016-7-20
在线时间
155 小时
发表于 2017-12-8 09:56:53 | 显示全部楼层
三楼正解
回复

使用道具 举报

2

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2014-1-28
在线时间
44 小时
发表于 2017-12-8 10:05:09 | 显示全部楼层
思路很好,手法不对!C++
回复

使用道具 举报

12

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2016-2-13
在线时间
21 小时
 楼主| 发表于 2017-12-8 18:47:38 | 显示全部楼层
jiki119 发表于 2017-12-8 10:05
思路很好,手法不对!C++

C++?请指点一二
回复

使用道具 举报

12

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2016-2-13
在线时间
21 小时
 楼主| 发表于 2017-12-8 19:08:09 | 显示全部楼层
DreamWaterPro 发表于 2017-12-7 19:16
你的if判断语句不正确。

if语句中条件不为0恒为真,else判断也不对。

感谢大神指点,
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2017-12-8 22:28:58 | 显示全部楼层

8楼所说的C++,是这样的,在电脑上编写C++程序的时候,C++语言中的string库提供了字符串比较的功能,在C++中,你可以有如下的使用方法:
[mw_shl_code=cpp,true]...

String s1="字符串1";
String s2="字符串2";

if(s1==s2)
{
    cout<<"两个字符串相等"<<endl;
}
else
{
    cout<<"两个字符串不相等"<<endl;
}

...

[/mw_shl_code]

虽然C语言中也可以类似地定义两个字符串数组,但是如果直接写s1或s2,是代表着这两个字符串的首地址,事实上这两个字符串肯定是存储在不同的位置,首地址肯定不一样,因此一定会得出两个字符串不想等的结论了;而在C++中,String类重载了==运算符,这使得对字符串的直接比较变为可能。等楼主有了一定的知识积累,可以去了解了解,但是应当说用C++写单片机程序的不多。

另,楼主在C语言中也可以使用string.h中的strcmp()函数来实现两个字符串的比较。
十六进制带我飞。
回复

使用道具 举报

12

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2016-2-13
在线时间
21 小时
 楼主| 发表于 2017-12-11 19:58:26 | 显示全部楼层
DreamWaterPro 发表于 2017-12-8 22:28
8楼所说的C++,是这样的,在电脑上编写C++程序的时候,C++语言中的string库提供了字符串比较的功能,在C++ ...

虽然不怎么懂,但是谢谢大神们的指点
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-19 14:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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