存数据代码有问题

小弟要接收数据后用375芯片将其存入U盘. 现假设已将接收的数据附值给一个unsign char数组 jieshou[],共有16个8位整型

那在新建了文件以后,存时采用下面的代码哪些地方不对,谢谢?

for(j=0;j<16;j++) { mCmdParam.ByteWrite.mByteBuffer[j]=jieshou[j]; mCmdParam.ByteWrite.mByteCount =16; i = CH375ByteWrite( ); mStopIfError( i ); }

应该先将16个数据送给缓冲区,然后一次写入16个字节. for(j=0;j<16;j++) { mCmdParam.ByteWrite.mByteBuffer[j]=jieshou[j]; } mCmdParam.ByteWrite.mByteCount =16; i = CH375ByteWrite( ); mStopIfError( i );


好的,谢谢


用你这个代码存还是有问题,我给每个数组赋值为0x0,但是按照这个代码寸进去是15个y上面加两点和一个问号,请问是怎么回事?


写完之后要跟新文件长度,再关闭文件.还有你要以ASCII码形式写进去,(写0就要写0x30)否则打开时看到的是乱码


已经按照您说的做了,但是还有问题.比如说:

for(j=0;j<16;j++) { mCmdParam.ByteWrite.mByteBuffer[j]=0x38; } mCmdParam.ByteWrite.mByteCount =16; i = CH375ByteWrite( ); mStopIfError( i ); mCmdParam.ByteWrite.mByteCount = 0; CH375ByteWrite( ); mCmdParam.Close.mUpdateLen = 1; i = CH375FileClose( ); mStopIfError( i );

我这样的确就可以存进16个8,但是我把 mCmdParam.ByteWrite.mByteBuffer[j]=0x38; 改为 mCmdParam.ByteWrite.mByteBuffer[j]=a[j]; 其中 unsigned char a[16] ,其每一个元素都是0x38,这时候存进去就不对了.

我要接收数据然后放到a数组中,然后再存的


这样是可以的啊.你看下数据是不是存到a[16] 这个里面了. 要是下面这样写可以,那就是你接收数据放到a数组中这里可能有问题. for(i=0;i<16;i++) { a[ i ] = 0x38; } for(i=0;i<16;i++) { mCmdParam.ByteWrite.mByteBuffer[ i ]=a[ i ]; } mCmdParam.ByteWrite.mByteCount =16; i = CH375ByteWrite( ); mStopIfError( i ); mCmdParam.Close.mUpdateLen = 1; i = CH375FileClose( ); mStopIfError( i );


现在发现,我给数组每个元素分别赋值,比如说: a[0]=0x37;a[1]=0x37;a[2]=.....这样存进去就是对的.

但是,如果我 for(i=0;i<16;i++) a[i]=0x37; 存进去就不对了...


for(i=0;i<16;i++) {a[ i ] =0x37;} 你将a[ i ]的值通过串口输出,看可赋进去了.



它自己又好了...


:)强


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