关于数据读取错误的疑问

我用的是成品模块,串口的方式与单片机(C51)进行通讯的(TTL电平),现在需要将仪器上24C512地址里的数据用U盘读出来在电脑上显示。假如从24C512里读出的为以下数据,显示格式要求为: 年/月/日 时 :分 剩余液量 工作状态 /*标题内容*/ 2009/05/20 08 : 45 1058 正常 /*存储器中的数据*/ 2009/05/20 09 : 00 0808 异常 /*存储器中的数据*/ 2009/05/20 10 : 12 1200 异常 /*存储器中的数据*/ 2009/05/21 12 : 45 1105 正常 2009/05/22 09 : 45 1018 正常 2009/05/22 10 : 15 0903 正常 2009/05/22 10 : 45 0801 正常 . 我现在用贵公司提供的例子,用数据进行模拟测试后, for(page=0;page<815;page++)//仪器画面中显示共可存储815页 { address=page*80; //不同页面对应的不同地址 for(a=0;a<10;a++) //每页存储10行数据 { address=((a*8)+address); year=2000+8;/*read_iic(address+1);*/ //先用数据进行模拟测试 month=12;//read_iic(address+2); //先用数据进行模拟测试 date=23;//read_iic(address+3); hour=15;//read_iic(address+4); min=25;//read_iic(address+5); adc=270;//通过U盘读取后此数据一直默认的为1024 len = sprintf( mCmdParam.ByteWrite.mByteBuffer, "%04d/%02d/%02d %02d:%02d %04u\xd\xa", year, (U16)month, date, (U16)hour,(U16)min, adc ); /* 将二制制数据格式为一行字符串 */ mCmdParam.ByteWrite.mByteCount = (unsigned char)len; /* 指定本次写入的字节数,不能超过MAX_BYTE_IO,否则另用缓冲区分多次写入 */ i = ExecCommand( CMD_ByteWrite, (unsigned char)(len+1) ); /* 以字节为单位向文件写入数据 */ mStopIfError( i ); } } 现在出现的问题是adc无论如何改动都是默认的为1024 请问是什么原因?

你上面一次写入的数据是多少?不能超过62个字节,如果超过的话,那么要循环的写数据。还有你的LEN获取的数据方式建议你自己去查下是否有问题。这个和我司的软件无任何关系。


回复:每一次写入的数据没有超过62个字节。


那你检查一下sprintf 后 mCmdParam.ByteWrite.mByteBuffer里面的内容是否正确。


只有登录才能回复,可以选择微信账号登录