• 4549阅读
  • 1回复

请教读写文件的问题 [复制链接]

上一主题 下一主题
离线guoyun_he
 

只看楼主 倒序阅读 楼主  发表于: 2008-05-28
— 本帖被 XChinux 执行加亮操作(2008-05-28) —
平台:qt-2.3.7 + arm-linux-gcc 3.4
 
本人前一段时间写了一个spi接口的驱动(字符型的)。这两天我直接写了一个c++的测试程序,该测试程序连续读写没有问题。但是我用QT读写文件的时候,第一次读写正确,但是后面读写大半部分都出错了!在此请教大家。
下面是我直接写的C++测试程序。QSpi是我把读写命令封装成类的。
  1. int main(void)
  2. {
  3.     long m = 0, cnt=0, err=0, wt=0;
  4.     char buff[16];
  5.     QSpi *spi = 0;
  6.     spi = new QSpi( "/dev/EP9315_SSP_TI" );
  7.     spi->EnabelDevice( QSpi::DS_First );
  8.     while (1)
  9.     {
  10.         spi->TxReadVersion( 0x01, 0x00 ); 
  11.         for( m=0; m< 10000; m++)
  12.         {
  13.           ;
  14.         }
  15.         for( m=0; m< 10000; m++)
  16.         {
  17.             ;
  18.         }       
  19.     }
  20.     return 0;
  21. }

QT里面的读写程序
  1. unsigned char QInitDialog::readIOVersion()
  2. {
  3.     int cnt = 0;
  4.     char rxbuf[8];
  5.     QSpi* spi = new QSpi("/dev/EP9315_SSP_TI");
  6.     spi->EnabelDevice( QSpi::DS_First );
  7.     for ( cnt=0; cnt<1000; cnt++ )
  8.     {
  9.         spi->TxReadVersion( 0x01, 0x00 );
  10.         for( int m=0; m< 10000; m++)
  11.         {
  12.             ;
  13.         }
  14.         if ( 0x00 == spi->RxReadVersion( 0x01, 0x00, rxbuf ) )
  15.         {
  16.             ;
  17.         }
  18.         for( int m=0; m< 10000; m++)
  19.         {
  20.             ;
  21.         }
  22.     }
  23.     delete spi;
  24.     return 0;
  25. }


以上代码中QSpi的实现完全一样,读写函数都采用的是read 和write函数。我都快搞糊涂了,上面两段代码几乎是一样的,只不过一个是用arm-linux-g++编译的,另一个在qt中用arm-linux-g++编译的。请教大家,在QT中我能否这样直接调用C的函数,还是必须用QFile?上面的现象更我的驱动有关系,还是更qt有关系?
离线guoyun_he

只看该作者 1楼 发表于: 2008-05-29
我把驱动程序的读写程序都加一定的延时。就不会出现上面的问题了!但是至今没有搞懂为什么!
快速回复
限100 字节
 
上一个 下一个