2012-05-05 23 views
0

我已经继承了一个项目,可以将数据从单板计算机记录到USB闪存驱动器。 ,它这是在写C.旧代码的代码是:在Linux上安装USB在C程序中使用单板计算机

//Get the Start time 
    sttime = localtime(&starttime); 

    //Get the name of the drive 
    sprintf(fname,"/mnt/SJ-HMIData%.4i%.2i%.2i%.2i%.2i%.2i.sjrd",(*sttime).tm_year+1900,(*sttime).tm_mon+1,(*sttime).tm_mday,(*sttime).tm_hour,(*sttime).tm_min,(*sttime).tm_sec); 

    //Open an IO port with read only 
    UsbFile = open(fname, O_CREAT|O_WRONLY|O_TRUNC);//Open csv on flash drive to be appended 

我的问题是,这依赖于我插入闪存驱动器的时候,为这个程序运行的时间。我怎样才能做到这一点,以便我不需要时间打开设备?

+2

不使用' - >'和'open'完全不正确的评论会让这个片断变得痛苦。此外,我没有看到*需要*在那里的任何特定时间;哪些要求来自/检查特定时间? – geekosaur

+0

我只有另外10,000行s ***这样。我非常惊讶GT让这些人毕业...... – Reid

+4

我看到(并经常帮助调试)在我以前的工作中产生的那种代码毕业生。 (计算机工程与计算机编程显然很少有关系。)我感到你的痛苦。 – geekosaur

回答

0

我怀疑日期/时间与安装无关。最有可能的闪存驱动器正在安装在/ mnt

日期和时间正被用来组装文件的名称,以便在挂载的文件系统上进行写入。如果你定期这样做,实际上很常见的做法是在文件名中加入某种时间戳 - 看起来比较方便,而且比文件系统日期字段更可靠,因为这些字段可能会意外丢失,或者文件被移动到另一个系统或存储介质进行分析之前。

它实际上并不像你应该在这里有问题。如果你想用这种风格创建一个文件,可以使用当前的代码(至少可以更新它的注释,这看起来与它们写入的版本不同) 。如果你想用一个不同的时间不变的名字来创建一个文件,那就这样做。

也许你的闪存驱动器没有自动挂载(也许它没有预期的文件系统,或者一些本应该处理的守护进程无法工作)。很可能是这种情况,但是您发布的代码并未涉及安装或安装失败。相反,它的代码试图写入大概是已经挂载的文件系统或失败的代码到父系文件系统的目录中,该文件系统应该被用作挂载点...

相关问题