找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 6115|回复: 0

ROBOT C I2C通讯程序

[复制链接]
发表于 2010-3-24 08:59:56 | 显示全部楼层 |阅读模式
//*!!Sensor,    S1,                 port, sensorI2CCustomStd9V,      ,           !!*//   
const tSensors port                 = (tSensors) S1;   //sensorI2CCustomStd9V //*!!!!*//
这里是在设置里面把端口设置成I2CCustomStd9V模式

定义变量
byte I2Cmessage[3];
  unsigned byte I2Creply;(这里我很费解..不知道为什么无符号和有符号都会数据溢出)
  int a,b;


int read()
{

sendI2CMsg(port,I2Cmessage[0], 1);
这里其实和LABVIEW的逻辑是一样的,先传送2个数据,一个是数据大小,一个是地址.因为我只用传地址,就数据大小是1,地址是0X70

   while(nI2CStatus[S1]>0);等待传送程序是否结束
  if(nI2CStatus[S1]<0) 如果传送出现错误(详细请看此帖中的错误代码列表http://www.cmnxt.com/viewthread.php?tid=1798&from=favorites)就不执行读取代码
  {}
  else
  {readI2CReply(port,I2Creply, 1);}读取代码

  if(I2Creply<0)因为数据益出,这里做一个数据转换
  {a=255-~I2Creply;}
  else
  {a=I2Creply;}
  b=I2Creply;

  nxtDisplayTextLine(0,"I2C error %d",nI2CStatus[S1]);错误代码显示
  nxtDisplayTextLine(1,"I2C Data %d",a);转换后数据显示
  nxtDisplayTextLine(2,"%d",b);原始数据显示
注意..显示的数据类型貌似不能是BYTE和CHAR....不然就报错
  return(a);
}


task main ()
{
I2Cmessage[0] =1;数据大小
  I2Cmessage[1] = 0x70;地址
  while (true)
  {
nxtDisplayTextLine(2,"%d",read());返回值也显示一下...做个实验...
  }
}





PS:弄了3天才弄出来.....郁闷死了....不过C就是好,编译真速度!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-12-22 09:57 , Processed in 3.381725 second(s), 18 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

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