尝试将fs.chmod与node.js一起使用

时间:2014-03-19 21:08:44

标签: node.js serial-port chmod ubuntu-13.10 fs

我将此设备连接到计算机,我正在开发的系统在很大程度上取决于该设备。但是,由于它将安装在不同的地方,然后他们可能会使用一个USB端口或另一个,在我的情况下,每次我插入设备我必须做一个chmod 777才能工作。

所以,我用这个设备可以连接的端口制作了这个文件,它就像

/dev/ttyUSB0,/dev/ttyUSB1,/dev/ttyUSB2

我用这个函数读了它

var puertoLect = function(callback){
  //Busca en el archivo ports la lista de puertos probables donde se encuentra el modem receptor
  fs.readFile('ports.txt', 'UTF-8', function (err, data) {
    if (err){
      console.log(err);
    }else{
      callback({data:data});
    }
  });
}

然后我使用此函数将其拆分为数组并为数组的每个值执行chmod。

var puertoEnable = function(){
  puertoLect(function(puertos){
    var singlePort = String(puertos.data).split(',');
    for(var i=0;i<singlePort.length;i++){
      fs.chmod(singlePort[i], '0777', function (err){
        if(err){
          console.log(singlePort[i]+': Not Enabled');
          console.log(err);
        }else{
          console.log(singlePort[i]+': Enabled');
        }
      });
    }
  });
}

我正在尝试使用这个最新功能测试它是否有效。因此,如果它找到确切的端口,那么它将启用它并让我知道它做了,如果没有,只是告诉我它没有。然而它最终归还了这个:

undefined: No se pudo Habilitar
{ [Error: EPERM, chmod '/dev/ttyS24'] errno: 50, code: 'EPERM', path: '/dev/ttyS24' }
undefined: No se pudo Habilitar
{ [Error: ENOENT, chmod '/dev/ttyUSB0'] errno: 34, code: 'ENOENT', path: '/dev/ttyUSB0' }
undefined: No se pudo Habilitar
{ [Error: ENOENT, chmod '/dev/ttyS25
'] errno: 34, code: 'ENOENT', path: '/dev/ttyS25\n' }

我不知道EPERM或ENOENT是什么意思,但是,当我尝试这样做时,设备没有连接(故意),因为文件ttyS25和ttyS24已经存在于“/ dev”中。并且ttyUSB0仅在我连接设备时出现。

所以,我必须尝试找到一种方法来检查路径,看看我正在尝试chmod存在的文件。如果是,则执行chmod并返回带路径的变量,以便我可以在serialPort配置中使用它。

如果有人可以提供帮助,我会很感激。

0 个答案:

没有答案