請(qǐng)問(wèn)一個(gè)CH375寫(xiě)U盤(pán)的問(wèn)題

你好! 我買(mǎi)了貴公司的CH375,想用來(lái)寫(xiě)U盤(pán),用的是AVR M32,下了論壇上的程序,有個(gè)是AVRICC讀寫(xiě)的程序,燒入單片機(jī)后能用!但是我想改成符合我要求的用法,我用一個(gè)數(shù)組保存我隨時(shí)采集到的數(shù)據(jù),每次采集完后用CH375寫(xiě)入U(xiǎn)盤(pán),但是不知道怎么改那個(gè)程序,改了之后每次都只能寫(xiě)最初設(shè)定的那個(gè)值,并不能往下面寫(xiě)每次采集到的值,不知道要怎么用那個(gè)程序,公司好像把寫(xiě)數(shù)據(jù)的程序給封裝在.A文件中了,能給我點(diǎn)幫助嗎? 謝謝了 void main( ) { UINT8 i, c; UINT16 TotalCount; UINT8 *pCodeStr; unsigned char t[8]={'1','2','3','4','5','b','c',0};//此數(shù)組用來(lái)保存每次采集到的數(shù)據(jù)

CH375_PORT_INIT( ); LED_OUT_INIT( ); LED_OUT_ACT( ); /* 開(kāi)機(jī)后LED亮一下以示工作 */ mDelaymS( 100 ); /* 延時(shí)100毫秒 */ LED_OUT_INACT( ); mInitSTDIO( ); /* 為了讓計(jì)算機(jī)通過(guò)串口監(jiān)控演示過(guò)程 */ //printf( "Start\n" );

i = CH375LibInit( ); /* 初始化CH375程序庫(kù)和CH375芯片,操作成功返回0 */ //mStopIfError( i );

while ( 1 ) { #ifdef EN_DISK_WRITE /* 子程序庫(kù)支持寫(xiě)操作 */ /* 產(chǎn)生新文件 */ strcpy( (char *)mCmdParam.Create.mPathName, "/NEWFILE.TXT" ); /* 新文件名,在根目錄下,中文文件名 */ i = CH375FileCreate( ); /* 新建文件并打開(kāi),如果文件已經(jīng)存在則先刪除后再新建 */ pCodeStr = t; put_char('a'); //while( 1 ) //{ /* 分多次寫(xiě)入文件數(shù)據(jù) */ // printf( "Write\n" ); put_char('b'); for ( i=0; i<8; i++ ) { c = *pCodeStr; mCmdParam.ByteWrite.mByteBuffer[i] = c; if ( c == 0 ) break; /* 源字符串結(jié)束 */ pCodeStr++; put_char('c'); } if ( i == 0 ) break; /* 源字符串結(jié)束,完成寫(xiě)文件 */ mCmdParam.ByteWrite.mByteCount = i; /* 寫(xiě)入數(shù)據(jù)的字符數(shù),單次讀寫(xiě)的長(zhǎng)度不能超過(guò)MAX_BYTE_IO,第二次調(diào)用時(shí)接著剛才的向后寫(xiě) */ i = CH375ByteWrite( ); /* 向文件寫(xiě)入數(shù)據(jù) */ put_char('x'); //mStopIfError( i ); //} //下面這句一定要加 否則會(huì)出現(xiàn)問(wèn)題 顯示的只有一個(gè)字符 //printf( "Close\n" ); mCmdParam.Close.mUpdateLen = 1; /* 自動(dòng)計(jì)算文件長(zhǎng)度,以字節(jié)為單位寫(xiě)文件,建議讓程序庫(kù)關(guān)閉文件以便自動(dòng)更新文件長(zhǎng)度 */ put_char('y'); i = CH375FileClose( ); put_char('z'); // mStopIfError( i ); #endif //printf( "Take out\n" ); put_char('n'); //while ( CH375DiskStatus != DISK_DISCONNECT ) xQueryInterrupt( ); /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤(pán)拔出 */ //LED_OUT_INACT( ); /* LED滅 */ //mDelaymS( 200 ); put_char('m'); /* i = FILE_DATA_BUF[0]; 因?yàn)槭且宰止?jié)為單位讀寫(xiě)文件,未用到文件數(shù)據(jù)緩沖區(qū),為了防止編譯器優(yōu)化掉該緩沖區(qū)而用一下緩沖區(qū) */ } } //FILE_DATA_BUF_LEN


熱門(mén)產(chǎn)品 : CH641: PD及無(wú)線充電專用MCU

上面的程序把U盤(pán)插入每次U盤(pán)中寫(xiě)好的文件都只有一句 12345bc 并不是我想要的很多句一直寫(xiě)下去的 比如:12345bc 12345bc 12345bc ..... 請(qǐng)問(wèn)我要得到這樣的結(jié)果應(yīng)該怎樣改程序呢?


后來(lái)又看了別人的一些程序,我改成如下的形式,不過(guò)也只顯示一個(gè)U,后面的都沒(méi)顯示 void main( ) { UINT8 i, c; UINT16 TotalCount; UINT8 *pCodeStr; unsigned char t[8]={'1','2','3','4','5','b','c',0}; unsigned char s[5]={'a','b','c','c','d'}; printf( "aaaaaa\n" ); CH375_PORT_INIT( ); LED_OUT_INIT( ); LED_OUT_ACT( ); /* 開(kāi)機(jī)后LED亮一下以示工作 */ mDelaymS( 100 ); /* 延時(shí)100毫秒 */ LED_OUT_INACT( ); mInitSTDIO( ); /* 為了讓計(jì)算機(jī)通過(guò)串口監(jiān)控演示過(guò)程 */ //printf( "Start\n" );

i = CH375LibInit( ); /* 初始化CH375程序庫(kù)和CH375芯片,操作成功返回0 */ //mStopIfError( i );

while ( 1 ) {

#ifdef EN_DISK_WRITE /* 子程序庫(kù)支持寫(xiě)操作 */ /* 產(chǎn)生新文件(覆蓋原文件數(shù)據(jù)),關(guān)于向原有文件中添加數(shù)據(jù)的例子請(qǐng)參考EXAM7和EXAM8 */

printf( "Create\n" ); strcpy( (char *)mCmdParam.Create.mPathName, "/NEWFILE.TXT" ); /* ????,?????,????? */ //mCopyCodeStringToIRAM( mCmdParam.Create.mPathName, "/TIME.TXT" ); /* 新文件名,在根目錄下,中文文件名 */ i = CH375FileCreate( ); /* 新建文件并打開(kāi),如果文件已經(jīng)存在則先刪除后再新建 */ mStopIfError( i ); printf( "Write\n" ); strcpy(mCmdParam.ByteWrite.mByteBuffer,"U盤(pán)實(shí)時(shí)溫度記錄器 開(kāi)始記錄......\xd\xa"); printf("he1\n"); mCmdParam.ByteWrite.mByteCount=34; i = CH375ByteWrite(); printf("he2\n"); while(1) { mCmdParam.ByteWrite.mByteBuffer[0]=t[0]; mCmdParam.ByteWrite.mByteBuffer[1]=t[1]; mCmdParam.ByteWrite.mByteBuffer[2]=t[2]; mCmdParam.ByteWrite.mByteBuffer[3]=t[3]; mCmdParam.ByteWrite.mByteBuffer[4]=t[4]; mCmdParam.ByteWrite.mByteBuffer[5]=t[5]; mCmdParam.ByteWrite.mByteCount = 6; i = CH375ByteWrite(); } strcpy(mCmdParam.ByteWrite.mByteBuffer,"U盤(pán)實(shí)時(shí)溫度記錄器 記錄完畢??!\xd\xa");

mCmdParam.ByteWrite.mByteCount=32; i = CH375ByteWrite(); printf( "Close\n" ); mCmdParam.Close.mUpdateLen = 1; /* 自動(dòng)計(jì)算文件長(zhǎng)度,以字節(jié)為單位寫(xiě)文件,建議讓程序庫(kù)關(guān)閉文件以便自動(dòng)更新文件長(zhǎng)度 */ i = CH375FileClose( ); mStopIfError( i );

#endif

printf( "Take out USB disk\n" ); // while ( CH375DiskStatus != DISK_DISCONNECT ) xQueryInterrupt( ); /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤(pán)拔出 */ while ( CH375DiskStatus >= DISK_CONNECT ) { /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤(pán)拔出 */ if ( CH375DiskConnect( ) != ERR_SUCCESS ) break; mDelaymS( 100 ); }

} } //FILE_DATA_BUF_LEN


第一個(gè)程序是因?yàn)橹粚?xiě)了一次,沒(méi)有循環(huán)寫(xiě);第二個(gè)程序,始終在循環(huán)寫(xiě),卻沒(méi)有退出。 把第二個(gè)程序作如下修改: (1)在CH375LibInit之后,還需要調(diào)用2個(gè)函數(shù):CH375DiskConnect,CH375DiskReady,具體位置下載CH375EVT.ZIP,參考我們的示例程序 (2) unsinged char count; count = 5; /* 只寫(xiě)5次 */ while(count --) { mCmdParam.ByteWrite.mByteBuffer[0]=t[0]; mCmdParam.ByteWrite.mByteBuffer[1]=t[1]; mCmdParam.ByteWrite.mByteBuffer[2]=t[2]; mCmdParam.ByteWrite.mByteBuffer[3]=t[3]; mCmdParam.ByteWrite.mByteBuffer[4]=t[4]; mCmdParam.ByteWrite.mByteBuffer[5]=t[5]; mCmdParam.ByteWrite.mByteCount = 6; i = CH375ByteWrite(); mStopIfError( i ); }


另外:我們的庫(kù)函數(shù)在CH375FileCreate之后,文件大小默認(rèn)就為1,所以您只看到一個(gè)字節(jié).


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频