平台:qt-2.3.7 + arm-linux-gcc 3.4
本人前一段时间写了一个spi接口的驱动(字符型的)。这两天我直接写了一个c++的测试程序,该测试程序连续读写没有问题。但是我用QT读写文件的时候,第一次读写正确,但是后面读写大半部分都出错了!在此请教大家。
下面是我直接写的C++测试程序。QSpi是我把读写命令封装成类的。
- int main(void)
- {
- long m = 0, cnt=0, err=0, wt=0;
- char buff[16];
- QSpi *spi = 0;
- spi = new QSpi( "/dev/EP9315_SSP_TI" );
- spi->EnabelDevice( QSpi::DS_First );
- while (1)
- {
- spi->TxReadVersion( 0x01, 0x00 );
- for( m=0; m< 10000; m++)
- {
- ;
- }
- for( m=0; m< 10000; m++)
- {
- ;
- }
- }
- return 0;
- }
QT里面的读写程序
- unsigned char QInitDialog::readIOVersion()
- {
- int cnt = 0;
- char rxbuf[8];
- QSpi* spi = new QSpi("/dev/EP9315_SSP_TI");
- spi->EnabelDevice( QSpi::DS_First );
- for ( cnt=0; cnt<1000; cnt++ )
- {
- spi->TxReadVersion( 0x01, 0x00 );
- for( int m=0; m< 10000; m++)
- {
- ;
- }
- if ( 0x00 == spi->RxReadVersion( 0x01, 0x00, rxbuf ) )
- {
- ;
- }
- for( int m=0; m< 10000; m++)
- {
- ;
- }
- }
- delete spi;
- return 0;
- }
以上代码中QSpi的实现完全一样,读写函数都采用的是read 和write函数。我都快搞糊涂了,上面两段代码几乎是一样的,只不过一个是用arm-linux-g++编译的,另一个在qt中用arm-linux-g++编译的。请教大家,在QT中我能否这样直接调用C的函数,还是必须用QFile?上面的现象更我的驱动有关系,还是更qt有关系?