設(shè)置CH376為串口模式,波特率為默認(rèn)的9600的,尋找USB設(shè)備和打開文件都是正常的,就是讀文件內(nèi)容是空的,寫文件也寫不進(jìn)去,讀文件長(zhǎng)度也不對(duì)。這是哪里的問題。 void xWriteCH376Cmd( UINT8 mCmd ) /* 向CH376寫命令 */ { while(!(UCSR0A&0x20)); //如果緩沖區(qū)為空 UDR0 = SER_SYNC_CODE1; /* 啟動(dòng)操作的第1個(gè)串口同步碼 */ while(!(UCSR0A&0x20)); //如果緩沖區(qū)為空 UDR0 = SER_SYNC_CODE2; /* 啟動(dòng)操作的第2個(gè)串口同步碼 */ while(!(UCSR0A&0x20)); //如果緩沖區(qū)為空 UDR0 = mCmd; /* 串口輸出 */ //while(!(UCSR0A&0x20)); //如果緩沖區(qū)為空 }
void xWriteCH376Data( UINT8 mData ) /* 向CH376寫數(shù)據(jù) */ { while(!(UCSR0A&0x20)); //如果緩沖區(qū)為空 UDR0 = mData; /* 串口輸出 */ }
UINT8 xReadCH376Data( void ) /* 從CH376讀數(shù)據(jù) */ {
UINT32 i; for ( i = 0; i < 500000; i ++ ) { /* 計(jì)數(shù)防止超時(shí) */ if((UCSR0A&0x80))//緩沖區(qū)有數(shù)據(jù)可讀 return( UDR0 ); /* 串口輸入 */ } return( 0 ); /* 不應(yīng)該發(fā)生的情況 */ }
/* 查詢CH376中斷(INT#低電平) */ UINT8 Query376Interrupt( void ) {
if ( UCSR0A&0x80) { /* 如果未連接CH376的中斷引腳則查詢串口中斷狀態(tài)碼 */ return( TRUE ); } else return( FALSE ); } 我用的是MEGA2561(同AVR的MEGA8差不多),s = CH376ByteRead( buf, sizeof(buf), &RealCount );用這個(gè)函數(shù)讀出來(lái)的buf的內(nèi)容是空的,RealCount也是0, 在線等