极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 56744|回复: 9

arduino如何取整和合并字符串?

[复制链接]
发表于 2014-2-20 20:08:24 | 显示全部楼层 |阅读模式
打算把传感器读取的两个值取整,转换成字符并合并,然后传到远程服务器上。但是好像没有看到arduino有取整函数,也没有字符合并函数。求赐教,谢谢!
回复

使用道具 举报

发表于 2014-2-20 20:43:35 | 显示全部楼层
传感器读出来的不就是 0~1023之间的整数吗? 为什么还要取整呢? 字符串合并是怎么个合并法?连接到一起?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-20 20:54:00 | 显示全部楼层
shihaipeng04 发表于 2014-2-20 20:43
传感器读出来的不就是 0~1023之间的整数吗? 为什么还要取整呢? 字符串合并是怎么个合并法?连接到一起?


用DS18B20读取过来的值是有小数的,比如14.31。

打算把多个传感器的值合并起来,比如25、23,字符合并以后就传输2523的值,没想到怎么实现。
回复 支持 反对

使用道具 举报

发表于 2014-2-20 21:49:15 | 显示全部楼层
取整就直接 int(读数-0.5)就四舍五入了。 你可以看看 c语言的教程,网上非常多,而且都是特别老的那种网站,写的挺仔细的。 我一时有点想不起来了,不敢乱说。当初c学的也是半瓶子不满,pascal我是高手。哈哈
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-20 22:04:24 | 显示全部楼层
shihaipeng04 发表于 2014-2-20 21:49
取整就直接 int(读数-0.5)就四舍五入了。 你可以看看 c语言的教程,网上非常多,而且都是特别老的那种网站 ...

我之前有试过int函数,但是手头没有传感器,就只好用串口输入输出来代替一下。写了一小段测试,结果费解,请指教下。

代码如下
void setup(){
  Serial.begin(9600);
}
void loop(){
  if(Serial.available()>0){
    Serial.println(int(Serial.read()));
  }
}

随便输入值:22.38,
输出结果是:
50
50
46
51
56

成了ASCII码,这段代码哪里有问题呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-20 22:05:29 | 显示全部楼层
我也是以前用AS3编程的时候习惯了,字符可以直接相加,到arduino这里不知道咋弄了。
回复 支持 反对

使用道具 举报

发表于 2014-2-20 23:35:52 | 显示全部楼层
本帖最后由 shihaipeng04 于 2014-2-20 23:44 编辑
honyfox 发表于 2014-2-20 22:05
我也是以前用AS3编程的时候习惯了,字符可以直接相加,到arduino这里不知道咋弄了。


C语言函数手册:c语言库函数大全|C语言标准函数库|c语言常用函数查询_C语言中文网
http://see.xidian.edu.cn/cpp/u/hanshu/

网查吧,前几年装修,把上学时候的书都直接扔了。以前还能翻书看看,现在网搜吧。

一个Arduino串口实验问题分析 - Powered by Discuz!
http://www.geek-workshop.com/for ... thread&tid=1287
找到点问题,好像串口输入一行字这边读出来的并不是一行,而是已经被分割的字符。还要再研究一下。
回复 支持 反对

使用道具 举报

发表于 2014-2-21 05:32:09 | 显示全部楼层
honyfox 发表于 2014-2-20 22:04
我之前有试过int函数,但是手头没有传感器,就只好用串口输入输出来代替一下。写了一小段测试,结果费解, ...

Serial.read()本来就是用来读ASCII码的,如果你要读串口来的整数,需要用Serial.parseInt()函数
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-22 08:31:42 | 显示全部楼层
shihaipeng04 发表于 2014-2-20 23:35
C语言函数手册:c语言库函数大全|C语言标准函数库|c语言常用函数查询_C语言中文网
http://see.xidian. ...

嗯嗯,明白了,非常感谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-22 08:32:23 | 显示全部楼层
春泥蛋炒饭 发表于 2014-2-21 05:32
Serial.read()本来就是用来读ASCII码的,如果你要读串口来的整数,需要用Serial.parseInt()函数

之前还没用到过这个方法,非常感谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 17:24 , Processed in 0.063520 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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