|
//*!!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就是好,编译真速度! |
|