字符串显示问题(方便初学者串口调试代码)
来源:互联网 发布:2016志鸿优化设计答案 编辑:程序博客网 时间:2024/06/13 02:27
void GenericApp_Send_wendu_Message(void)
{ byte str[10];
//char strTemp[10];
byte temp;
temp = ReadDs18B20(); //读取温度数据
str[0] = ‘1’; //这里是,节点模块编号,想必这里也就是徐老师跟我讲的数据包的格式了吧。这里就是Ascii码值了吧
str[1] = temp/10+48;//把温度数据转换成字符
str[2] = temp%10+48;
str[3] = ’ ‘;
先贴上以上代码,如上为什么需要加上48呢???(这应该属于C语言基础里面的东西,那么重新温习一遍吧!)
int型和char型通用的,但是int型转char型需要加上48。原因是因为‘0’的ASCII值为48,那么对他进行偏移之后自然就是相对应的字符类型的数据。
所以数组里面存放的是ASCII码值,即是51或者是’3’,而Haluartwrite函数只对字符串输出有效,所以自然要加上48了,这就是原因。
case: 该终端发过来的簇浩互相匹配的话:
if(1==pkt->cmd.Data[0]-48)
//HalUARTWrite(0,&pkt->cmd.Data[0],1);
//HalUARTWrite(0, “hello node 2\n”,sizeof(“hello node 1”)+1);
HalUARTWrite(0, &pkt->cmd.Data[1], pkt->cmd.DataLength-1); //输出接收到的数据
// HalUARTWrite(0, &pkt->cmd.Data[1], 1);
//HalUARTWrite(0, “\n”, 1); // 回车换行
//HalUARTWrite(0, &pkt->cmd.Data[2], 2);
HalUARTWrite(0, “hello”, 5);
uint8 wendu=(pkt->cmd.Data[1]-48)*10+pkt->cmd.Data[2]-48;
// HalUARTWrite(0, &wendu, 2);
if(wendu>fazhi)
P1_3=1;
else
P1_3=0;
}
}
也是同样的道理啊,之前加了48,现在如果要还原回去int的话,那么需要相应的减去48.但是还原完了之后,如果想要打印出48的话,那么还是得加上48,存放到一个字符串数组中,便于打印函数打印。节点匹配 if(1==pkt->cmd.Data[0]-48)也需要减去48,也是同样道理。
PS:之前对以上的概念不太清晰,导致老是调试出错。这样就实现了一个小小的智能控制(加上相应的驱动电路的话)。
- 字符串显示问题(方便初学者串口调试代码)
- 串口终端调试问题。
- linux串口调试问题
- 调试串口的问题
- weblogic jsp 生成java 代码方便调试
- java串口调试代码疑惑。
- C#串口调试助手代码
- vc串口源码调试-控件初学者必看!
- 调试代码 显示rawbin
- opencv视频获取显示代码问题和调试
- 带波形显示的串口调试工具
- 通过JLINK实现串口显示调试
- STM8 串口接收字符串问题
- 串口调试精灵问题(关闭串口、再打开串口串口调试精灵出问题了)
- 串口调试精灵问题(关闭串口、再打开串口串口调试精灵出问题了)
- 用手机QQ扫描二维码可显示网址,方便调试
- VB 串口编程调试代码(1)
- 《串口编程调试代码》之二
- Test
- 泛型 深入理解
- iOS8.1- iOS8.3横屏后部分区域无响应bug 解决办法
- linux安装postgrtsql步骤地址
- java标识符命名规则
- 字符串显示问题(方便初学者串口调试代码)
- ios-在键盘上面创建一个键盘上面的工具栏
- Android RxJava2的更新
- SPICE电路仿真(2)--电源
- [zt]word2vec词向量训练及中文文本相似度计算
- Calendar类的add()和set()方法
- 短连接工具类
- h5-lesson1
- 多平台移动项目开发工具Elements发布v9.1,支持Visual Studio 2017