OpenEdv-开源电子网

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

变量赋值0或者是1只能通过0x30或0x31?具体请看描述

[复制链接]

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
发表于 2016-1-3 18:44:58 | 显示全部楼层 |阅读模式
2金钱
void SampleApp_Send_P2P_Message(void)
{

     byte state;
  if(DATA_PIN == 1)
  {
    state = 0x31;       //高电平时说明没有检测到气体。
    HalUARTWrite(0,"security\n", 9);                 //串口显示
  }  
  else
  {  
    MicroWait (10000);   // Wait 10ms
    if(DATA_PIN == 0)
    {     
      state = 0x30;      //当输出低电平时信号灯亮,检测到气体
      HalUARTWrite(0,"Got bad Air\n",12);                 //串口显示
    }
  }

    if ( AF_DataRequest( &SampleApp_P2P_DstAddr, &SampleApp_epDesc,
                       SAMPLEAPP_P2P_CLUSTERID,
                       1,
                      &state,
                       &SampleApp_TransID,
                       AF_DISCV_ROUTE,
                       AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
    {
    }

我知道在ASCII编码 0x30对应的是数字 0 ,而state仅仅是一个变量。那为啥不能用state = 0; 这种方式来写呀?
当然这种方式传输数据时 是空白,现象不对。
我想知道为什么?
但是在另一个程序中直接赋值0,就好使
uint8 LedState = 0; //全局变量
void SampleApp_SendPeriodicMessage( void )
{
  LedState = ~LedState;

  if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
                       SAMPLEAPP_PERIODIC_CLUSTERID,
                       1,
                       &LedState,
                       &SampleApp_TransID,
                       AF_DISCV_ROUTE,
                       AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
  {
  }
  else
  {
    // Error occurred in request to send.
  }

}
不知道各位明白我的意思没?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11407
金钱
11407
注册时间
2014-4-1
在线时间
1282 小时
发表于 2016-1-3 19:54:31 | 显示全部楼层

说说你这问题的来龙去脉,否则别人不明白你问什么。


回复

使用道具 举报

3

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-8
在线时间
14 小时
发表于 2016-1-3 20:12:17 | 显示全部楼层
会不会跟你定义的变量类型有关系?
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2016-1-3 20:23:42 | 显示全部楼层
前者 state = 0x31或者0x30

后者 LedState = 0x00(0)或者0xff(~0)

看你那边是怎么处理的了。
回复

使用道具 举报

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
 楼主| 发表于 2016-1-3 20:57:29 | 显示全部楼层
BMN李 发表于 2016-1-3 20:23
前者 state = 0x31或者0x30

后者 LedState = 0x00(0)或者0xff(~0)

那我想问下,为啥我在终端处 state =1,烧录后,协调器串口显示确实空白那?
而终端是 state = 0x31,烧录后,协调器串口显示1?
回复

使用道具 举报

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
 楼主| 发表于 2016-1-3 20:59:03 | 显示全部楼层
songling 发表于 2016-1-3 20:12
会不会跟你定义的变量类型有关系?

我也开始考虑过,但是后来发现,byte就是typedef uint8   byte;即就是uint8
回复

使用道具 举报

6

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
767
金钱
767
注册时间
2014-11-15
在线时间
91 小时
发表于 2016-1-3 21:00:45 | 显示全部楼层
显示字符0和数值0,本就不是一个,字符0的ASCII码的值(十六进制)为0x30
回复

使用道具 举报

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
 楼主| 发表于 2016-1-3 21:00:50 | 显示全部楼层
xuande 发表于 2016-1-3 19:54
说说你这问题的来龙去脉,否则别人不明白你问什么。

个人认为已经很清楚了,
更简单的就是,为啥一个程序中  变量可以用=0x31,而不能直接用=1?

而在别的程序中可以变量=1
回复

使用道具 举报

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
 楼主| 发表于 2016-1-3 21:06:39 | 显示全部楼层
Bula 发表于 2016-1-3 21:00
显示字符0和数值0,本就不是一个,字符0的ASCII码的值(十六进制)为0x30

这个我也清楚,亲
那为什么我描述中的第二个语句就可以直接变量初始化置0?
这两个变量实质类型都是uint8
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1863
金钱
1863
注册时间
2011-3-29
在线时间
139 小时
发表于 2016-1-3 21:12:45 来自手机 | 显示全部楼层
看你接受端怎么处理数据啊。不就是一种通信协议吗,有那么难理解吗?
回复

使用道具 举报

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
 楼主| 发表于 2016-1-3 21:24:51 | 显示全部楼层
ofourme 发表于 2016-1-3 21:12
看你接受端怎么处理数据啊。不就是一种通信协议吗,有那么难理解吗?

(⊙﹏⊙)b
HalUARTWrite(0, pkt->cmd.Data, pkt->cmd.DataLength); //输出接收到的数据
接收端都是这一个处理语句
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1863
金钱
1863
注册时间
2011-3-29
在线时间
139 小时
发表于 2016-1-3 22:37:25 来自手机 | 显示全部楼层
一般的变量,你赋值多少就是多少的。除非是一些特殊的寄存器,写入1后会硬件清零。实在是看不明白楼主的问题,不知道楼主哪里想岔了。楼主说的是哪个变量被赋值0或1了?你怎么确定该变量是0或1?
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2013-4-26
在线时间
9 小时
发表于 2016-1-4 11:56:48 | 显示全部楼层
(⊙o⊙)…,state |=0x01;  state&=~(0x01); 明白这个吗? 就是这个原因
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
11930
金钱
11930
注册时间
2015-11-5
在线时间
2087 小时
发表于 2016-1-4 12:37:58 | 显示全部楼层
AF_DataRequest( &SampleApp_P2P_DstAddr, &SampleApp_epDesc,
                       SAMPLEAPP_P2P_CLUSTERID,
                       1,
                      &state,
                       &SampleApp_TransID,
                       AF_DISCV_ROUTE,
                       AF_DEFAULT_RADIUS )

你这个是ZSTACK协议栈的函数吧,很久没有弄TI的协议栈了,不过你留意下这个函数,是把state的地址传递给AF_DataRequest,这个参数到底起什么作用你必须看AF_DataRequest
举个例子,如果你这个函数的当前节点是协调器,如果这个参数只不过是用来发送给路由器或者终端节点的,那么你在除了在协调器程序里面改动外,还必须在路由器或者终端节点的代码里面也必须进行修改,否则双方协议就对不上了。
还有,他们说的也没错,你的问题描述确实有点乱,我看了3遍才大概看懂你的意思,但也不算完全懂,但没必要因为这个而跟人斗气,大家技术交流而不是斗嘴,对事不对人,希望楼主不要介意
拿来长岛冰茶换我半晚安睡
回复

使用道具 举报

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
 楼主| 发表于 2016-1-4 22:43:55 | 显示全部楼层
ofourme 发表于 2016-1-3 22:37
一般的变量,你赋值多少就是多少的。除非是一些特殊的寄存器,写入1后会硬件清零。实在是看不明白楼主的问 ...

不管如何谢谢你了,是我问题没有描述清楚
回复

使用道具 举报

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
 楼主| 发表于 2016-1-4 22:45:58 | 显示全部楼层
liulian753 发表于 2016-1-4 11:56
(⊙o⊙)…,state |=0x01;  state&=~(0x01); 明白这个吗? 就是这个原因

这个我懂,你的意思是不是这个仅仅是不同的表达方式?
可是我在state=1,这样赋值,传送后,协调器的串口显示是空白呀?
回复

使用道具 举报

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
 楼主| 发表于 2016-1-4 22:46:42 | 显示全部楼层
FreeRTOS 发表于 2016-1-4 12:37
AF_DataRequest( &SampleApp_P2P_DstAddr, &SampleApp_epDesc,
                       SAMPLEAPP_P2P_CLU ...

斗气不会的,对事不对人。任何回复我帖子的人我都是很感谢的。
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2013-4-26
在线时间
9 小时
发表于 2016-1-20 15:52:54 | 显示全部楼层
Bula 发表于 2016-1-3 21:00
显示字符0和数值0,本就不是一个,字符0的ASCII码的值(十六进制)为0x30

这个应该是楼主想要的答案
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2013-4-26
在线时间
9 小时
发表于 2016-1-20 15:54:17 | 显示全部楼层
liulian753 发表于 2016-1-4 11:56
(⊙o⊙)…,state |=0x01;  state&=~(0x01); 明白这个吗? 就是这个原因

重新看了一遍,发现我之前没理解对楼主的意思
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 10:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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