极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: Ansifa

Arduino学习笔记A6 - Arduino串口接收字符串

  [复制链接]
发表于 2013-2-24 17:49:29 | 显示全部楼层
小皮小皮 发表于 2012-9-16 19:54
请问,comdata=""是什么意思呢???

这个我懂,就是为了设一个名称的
回复 支持 反对

使用道具 举报

发表于 2013-3-6 21:40:34 | 显示全部楼层
mark   刚好在调试时出现这个问题。
回复 支持 反对

使用道具 举报

发表于 2013-3-20 07:25:41 | 显示全部楼层
这确实不错啊。
回复 支持 反对

使用道具 举报

发表于 2013-3-21 10:11:27 | 显示全部楼层
太好了。收藏!
回复 支持 反对

使用道具 举报

发表于 2013-3-30 12:47:38 | 显示全部楼层
//逐个显示不正确啊 ,每次显示的是第一个字符,求高手解决
String comdata = "";//comdata是一个字符串类型变量

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    while (Serial.available() > 0)  //Serial.available()是当前串口缓冲池的数据量
    {
        comdata += char(Serial.read());//Serial.read()是读缓冲池的语句,每次只能读一个字节
        delay(2);
    }
    if (comdata.length() > 0)
    {
        Serial.println(comdata);
        int L=comdata.length();
        Serial.println(L);//显示字符串的长度
        for (int i=0; i <L; i++)//逐个显示comdata[0],comdata[1]。。。comdata[n]
        {
         Serial.println(comdata[0]);
         }
              comdata = "";
        
    }
}
回复 支持 反对

使用道具 举报

发表于 2013-3-30 13:27:50 | 显示全部楼层
好东西收藏!
回复 支持 反对

使用道具 举报

发表于 2013-3-30 13:46:11 | 显示全部楼层
comdata += int(Serial.read()) - '0' 这句看不懂啊
一般comdata += int(Serial.read())  这个等效于 comdata=comdata+int (Serial.read())
后面加个-‘0’ 是什么意思啊?
回复 支持 反对

使用道具 举报

发表于 2013-4-1 08:46:06 | 显示全部楼层
可以对照楼主的代码写一个上位调试软件
回复 支持 反对

使用道具 举报

发表于 2013-4-5 16:10:11 | 显示全部楼层
{:soso_e113:}
回复 支持 反对

使用道具 举报

发表于 2013-4-5 16:12:58 | 显示全部楼层
就是不明白
上面例子中,第二个例子的
  digitalWrite(i + 2, comdata[i] - '0');
中,
comdata[i]-'0'
是啥意思?干嘛用的?
字符串减字符串???
这个减号是干啥用的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-5 23:29:39 | 显示全部楼层
GeekNapster 发表于 2013-4-5 16:12
就是不明白
上面例子中,第二个例子的
  digitalWrite(i + 2, comdata - '0');

comdata-'0'

comdata是我们输入那个文字的ascii码,即字符‘0’~‘9’,需要减去一个‘0’得出实际的数字。
回复 支持 反对

使用道具 举报

发表于 2013-4-6 00:56:10 | 显示全部楼层
求教那个delay延时的时间怎么计算?假设我的波特率是115200而不是9600,那个delay(2)就无效了,依旧显示是乱码,所以求计算时间怎么算的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-7 01:36:00 | 显示全部楼层
Dark_Angel 发表于 2013-4-6 00:56
求教那个delay延时的时间怎么计算?假设我的波特率是115200而不是9600,那个delay(2)就无效了,依旧显示是乱 ...

这个我还没算过,试出来的,你也试试
回复 支持 反对

使用道具 举报

发表于 2013-4-7 12:33:38 | 显示全部楼层
Ansifa 发表于 2013-4-5 23:29
comdata-'0'

comdata是我们输入那个文字的ascii码,即字符‘0’~‘9’,需要减去一个‘0’得出实际的数 ...

哦。明白了。comdata = ""; 在ascii中,用0表示 null。
嗯。这个用法确实很有深度,楼主很强。赞一个!

谢谢指出
回复 支持 反对

使用道具 举报

发表于 2013-4-20 23:00:06 | 显示全部楼层
非常不错,学习了!
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 21:48 , Processed in 0.045351 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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