设置CH376为串口模式,波特率为默认的9600的,寻找USB设备和打开文件都是正常的,就是读文件内容是空的,写文件也写不进去,读文件长度也不对。这是哪里的问题。 void xWriteCH376Cmd( UINT8 mCmd ) /* 向CH376写命令 */ { while(!(UCSR0A&0x20)); //如果缓冲区为空 UDR0 = SER_SYNC_CODE1; /* 启动操作的第1个串口同步码 */ while(!(UCSR0A&0x20)); //如果缓冲区为空 UDR0 = SER_SYNC_CODE2; /* 启动操作的第2个串口同步码 */ while(!(UCSR0A&0x20)); //如果缓冲区为空 UDR0 = mCmd; /* 串口输出 */ //while(!(UCSR0A&0x20)); //如果缓冲区为空 }

void xWriteCH376Data( UINT8 mData ) /* 向CH376写数据 */ { while(!(UCSR0A&0x20)); //如果缓冲区为空 UDR0 = mData; /* 串口输出 */ }

UINT8 xReadCH376Data( void ) /* 从CH376读数据 */ {

UINT32 i; for ( i = 0; i < 500000; i ++ ) { /* 计数防止超时 */ if((UCSR0A&0x80))//缓冲区有数据可读 return( UDR0 ); /* 串口输入 */ } return( 0 ); /* 不应该发生的情况 */ }

/* 查询CH376中断(INT#低电平) */ UINT8 Query376Interrupt( void ) {

if ( UCSR0A&0x80) { /* 如果未连接CH376的中断引脚则查询串口中断状态码 */ return( TRUE ); } else return( FALSE ); } 我用的是MEGA2561(同AVR的MEGA8差不多),s = CH376ByteRead( buf, sizeof(buf), &RealCount );用这个函数读出来的buf的内容是空的,RealCount也是0, 在线等