【问题标题】:node serialport writes on PL2303 but not on the attached device节点串行端口写入 PL2303 但不在连接的设备上
【发布时间】:2016-11-14 11:18:57
【问题描述】:

我有一个 AllSky-340 CCD 摄像机,它使用串行端口进行通信。

我使用 PL2303 USB 转换器将它连接到我的笔记本电脑。

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的python代码允许在linux下控制AllSky340摄像头。它有效。

我已将这段代码翻译成 javascript 以便与 node 一起使用。

这里是部分代码代码("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 python 脚本,我的监听器会拦截数据(在pyallsky 抱怨多次访问端口之前) .

关闭摄像头对closedisconnect 监听器没有任何影响。

只有拔掉 PL2303 电缆会导致脚本记录

port disconnected.
port closed.

我的想法是js 代码仅与 PL2303 电缆而不与相机通信。那可能吗? 我该如何解决?

【问题讨论】:

    标签: python node.js usb node-serialport


    【解决方案1】:

    事实证明,我必须将波特率强制为 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                                  
                               );                                                                                                                    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2017-06-16
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多