[求助]字节模式 并口模块(CH375)怎么多读了一个字节,它自检也是对的

08 06 02 0D 0A 01 00 02 01 2D 2D 2D 2E 2E 2E 2F 2F 04 00 FF 50 00 00 00 02 2D 2D 2D 2E 2E 2E 2F 2F 04 00 FF 50 00 00 00

08 06 02 0D 多了个 0D

for ( j=0; j{ mCmdParam.ByteRead.mByteCount = sizeof( mCmdParam.ByteRead.mByteBuffer ); /* 请求读出64字节数据, 单次读写的长度不能超过 sizeof( mCmdParam.ByteWrite.mByteBuffer ) */ i = ExecCommand( CMD_ByteRead, 1 ); /* 以字节为单位读取数据*/ mStopIfError( i ); for ( k=0; k!=mCmdParam.ByteRead.mByteCount; k++ ) { printf( "%c", mCmdParam.ByteRead.mByteBuffer[k] ); if ( mCmdParam.ByteRead.mByteCount { printf( "end\n" ); break; } } printf( "Close\n" ); mCmdParam.Close.mUpdateLen = 0; i = ExecCommand( CMD_FileClose, 1 ); /* 关闭文件 */ mStopIfError( i );

unsigned char xdata tim[]={8,6,2,10,1,0, 2, 1, 45,45,45, 46,46,46, 47,47,4, 0 ,255,80, 0,0,0, 2, 45,45,45, 46,46,46, 47,47,4, 0 ,255,80, 0,0,0 };


你好:按照你的要求,我写了一个程序,你参考一下 printf( "Write\n" ); pStr=tim; count = sizeof( tim ); /* 准备写入的数据的总长度 */ while ( count ) { /* 如果较大,分多次写入 */ if ( count < sizeof( mCmdParam.ByteWrite.mByteBuffer ) ) i = count; /* 只剩最后一些数据要写入 */ else i = sizeof( mCmdParam.ByteWrite.mByteBuffer ); /* 数据较多,分多次写入 */ count -= i; /* 计数 */ memcpy( mCmdParam.ByteWrite.mByteBuffer, pStr, i ); /* 复制准备写入的数据到参数结构中,源数据可以来自ADC等,本例是来自程序空间的说明信息 */ pStr += i; mCmdParam.ByteWrite.mByteCount = i; /* 指定本次写入的字节数 */ i = ExecCommand( CMD_ByteWrite, 1+i ); /* 以字节为单位向文件写入数据 */ mStopIfError( i ); }

printf( "Close\n" ); mCmdParam.Close.mUpdateLen = 1; /* 自动计算文件长度,当以字节为单位向文件写入数据后,如果没有用0长度的CMD_ByteWrite更新文件长度,那么可以在关闭文件时让模块自动更新文件长度 */ i = ExecCommand( CMD_FileClose, 1 ); /* 关闭文件,当以字节为单位向文件写入(追加)数据后,必须在用完文件后关闭文件 */ mStopIfError( i ); /* 读取原文件 */ printf( "Open\n" ); strcpy( mCmdParam.Open.mPathName, "\\001.TXT" ); i = ExecCommand( CMD_FileOpen, MAX_PATH_LEN ); /* 打开文件,输入参数置为最大值,省得再计算参数长度 */ printf( "Query\n" ); i = ExecCommand( CMD_FileQuery, 0 ); /* 查询当前文件的信息,没有输入参数 */ mStopIfError( i ); NewSize = mCmdParam.Modify.mFileSize; /* 原文件的长度 */ printf("NewSize=%02x\n",(unsigned short)NewSize); printf("read \n"); while ( NewSize ) { if ( NewSize < sizeof( mCmdParam.ByteWrite.mByteBuffer ) ) count = NewSize; else count= sizeof( mCmdParam.ByteWrite.mByteBuffer ); NewSize -= count; /* 计数 */ mCmdParam.ByteRead.mByteCount = count; i=ExecCommand( CMD_ByteRead, 1 ); mStopIfError( i );

for(j=0;j printf("%02x",(unsigned short)mCmdParam.ByteRead.mByteBuffer[j]); } mCmdParam.Close.mUpdateLen = 0; i = ExecCommand( CMD_FileClose, 1 ); /* 关闭文件 */ mStopIfError( i );

打印输出为: Start Wait Udisk Ready ? Write Close Open Query NewSize=27 read 0806020a010002012d2d2d2e2e2e2f2f0400ff50000000022d2d2d2e2e2e2f2f0400ff50000000


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