[原创]ch375写入内容出错

UploadImages/WCH20061017162851.rar

文件在这里,一般写2K后就比较容易出现,用的U盘是清华紫光的。

说一下,USB电压为4.9V。测试的时候也用过延时,没有效果!请冯工等帮忙看看。


这个writeFileByte()函数可以看下吗?


unsigned char writeFileByte(char * buf, uchar writeBytes, uchar * retBytes) { unsigned char xdata ret, i, j;

i = 0; do { j = (writeBytes - i > MAX_BYTE_IO) ? MAX_BYTE_IO : (writeBytes - i); //每次能写入的最大字节数

mCmdParam.ByteWrite.mByteCount = j; memcpy(mCmdParam.ByteWrite.mByteBuffer, buf + i, j); ret = CH375ByteWrite();

if (ERR_SUCCESS != ret) break;

i += j; // 指向当前待写入的位置 } while (i < writeBytes);

*retBytes = i;

return ret; }


unsigned char modifyFileDate(void) { mCmdParam.Modify.mFileDate = MAKE_FILE_DATE((uint)now_time.year, now_time.month, now_time.day); mCmdParam.Modify.mFileTime = MAKE_FILE_TIME(now_time.hour, now_time.minute, now_time.second); mCmdParam.Modify.mFileSize = 0xffffffff; /* 不修改文件长度 */ mCmdParam.Modify.mFileAttr = 0xff; /* 不修改文件属性 */

return CH375FileModify(); }

unsigned char readFileByte(char * buf, UINT8 readBytes, UINT8 * retBytes) { unsigned char xdata ret, i, j;

i = 0; do { j = (readBytes - i > MAX_BYTE_IO) ? MAX_BYTE_IO : (readBytes - i); // 每次能读出的最大字节数

mCmdParam.ByteRead.mByteCount = j; ret = CH375ByteRead();

if (ERR_SUCCESS != ret) break;

memcpy(buf + i, mCmdParam.ByteRead.mByteBuffer, mCmdParam.ByteRead.mByteCount); i += mCmdParam.ByteRead.mByteCount; //指向当前待读取的位置

if (j > mCmdParam.ByteRead.mByteCount) // 已读到文件的结尾 break;

} while (i < readBytes);

buf[i] = '\0'; *retBytes = i;

return ret; }


原来是数据的长度超过了30字节。


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