极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9840|回复: 1

IIC发送字符串【程序】

[复制链接]
发表于 2012-12-19 14:01:39 | 显示全部楼层 |阅读模式
本帖最后由 林立 于 2012-12-19 14:05 编辑

小弟现在做IIC通讯,由于不是学C语言出身,所以使用阻力很大。
  在两块板子通讯时,按照范例,现在只能发送单个字符,不知道怎么将主站发送的字符组合成字符串形式发送到从站,或者主站发送字符到从站组合成字符串。

要做通讯控制,肯定不可能单个字符来控制多个端口。

主站代码:
  1. #include <Wire.h>

  2. char x;
  3. void setup()
  4. {
  5.   Serial.begin(9600);
  6.   Wire.begin();
  7. }

  8. void loop()
  9. {
  10.   while (Serial.available() > 0){
  11.   x = Serial.read();
  12.   Wire.beginTransmission(4);
  13.   Wire.write(x);
  14.   Wire.endTransmission();
  15.     Serial.println(x);
  16. }
  17. }
复制代码
从站代码:
  1. #include <Wire.h>

  2. char x;
  3. char c;
  4. int led = 13;

  5. void setup()
  6. {
  7.   pinMode(led,OUTPUT);
  8.   Wire.begin(4);
  9.   Wire.onReceive(receiveEvent); //接收事件
  10.   Serial.begin(9600);
  11. }

  12. void loop()
  13. {
  14. if(x=='k')    //当接收到字符K时,执行开灯
  15. {
  16.   digitalWrite(led,HIGH);
  17. }
  18. if(x=='g'){   //当接收到字符g时,执行关灯
  19.   digitalWrite(led,LOW);
  20. }
  21. }

  22. void receiveEvent(int howMany)
  23. {
  24.   while(Wire.available() > 1)
  25.   {
  26.     c += Wire.read();     //这一行和x=Wire.read()怎么缺一不可,少一个都无法正确输出字符!?
  27.     Serial.print( c);  }
  28.   x = Wire.read();
  29.   Serial.println( x);
  30.   }
复制代码
测试结果:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-12-9 21:49:52 | 显示全部楼层
连续发的呢??
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 19:16 , Processed in 0.076677 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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