2016-11-14 3 views
0

У меня есть камера CCD AllSky-340, которая обменивается данными с использованием последовательного порта.Узел serialport пишет на PL2303, но не на подключенном устройстве

Я использую USB-конвертер PL2303 для подключения к ноутбуку.

dmesg:

[14223.043367] usb 1-2: new full-speed USB device number 12 using xhci_hcd 
[14223.172348] usb 1-2: New USB device found, idVendor=067b, idProduct=2303 
[14223.172352] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 
[14223.172353] usb 1-2: Product: USB-Serial Controller 
[14223.172355] usb 1-2: Manufacturer: Prolific Technology Inc. 
[14223.172763] pl2303 1-2:1.0: pl2303 converter detected 
[14223.173356] usb 1-2: pl2303 converter now attached to ttyUSB0 

код питона называется pyallsky позволяет управлять камерой AllSky340 под Linux. Оно работает.

Я перевел этот код в javascript для использования с узлом.

Вот часть кода кода ("E:" это команда тест):

var serialport = require("serialport");                           
var sp = new serialport(portName);                            

sp.on('open', showPortOpen);                             
sp.on('close', showPortClose);                             
sp.on('disconnect', showPortDisconnect);                           
sp.on('error', showError);                              
sp.on('data', sendSerialData);                             

function showPortOpen(error) {                             

    if (error) {                                 
     console.log('Error while opening the port ' + error);                     
    } else {                                  
     console.log('port open. Data rate: ' + sp.options.baudRate);                    
     var buffer = "E:"                              
     sp.write(buffer, function (err, result) {                        
      console.log("writing buffer: "+buffer)                        
      if (err) {                               
       console.log('Error while sending message : ' + err);                    
      }                                 
      if (result) {                              
       console.log('Response received after sending message : ' + result);                
      }                                 
     });                                  

    }                                   
}                                    

function sendSerialData(data) {                             
    console.log('sendserial data says: '+data);                         
}                                    

function showPortClose() {                              
    console.log('port closed.');                             
}                                    

function showPortDisconnect() {                             
    console.log('port disconnected.');                           
}                                    

function showError(error) {                              
    console.log('Serial port error: ' + error);                         
}                                    

Но это не работает: запуск сценария, журнал является

port open. Data rate: 9600 
writing buffer: E: 

и ничего из камера получает.

Я знаю, что слушатель данных работает, потому что если я бегу сценарий pyallsky питона в то же время, мои данные слушатель перехватывает (до pyallsky жалуется множественный доступ к порту).

Выключение камеры не влияет на close и disconnect прослушиватель.

только отсоединив кабель PL2303 вызывает скрипт для входа

port disconnected. 
port closed. 

Моя идея заключается в том, что js код взаимодействует только с PL2303 кабелем, а не с камерой. Это возможно? Как я могу это решить?

ответ

0

Оказалось, что мне пришлось вынудить скорость до 115200, чтобы она работала.

/// Opens the serial connection with the camera                        
    var sp = new serialport("/dev/ttyUSB0",                    
          {baudRate: 115200,              
          autoOpen:false},                         
          err => err!== null ? 
     console.log('serialport instance error: ', err.message) : true         
          );