最近,我想部署nodejs到heroku使用modbus串行库和socket.io,这里的想法是我想要从pt100使用串行RS-485实时检索温度,在本地,代码运行良好没有问题,但我部署到heroku,似乎heroku没有识别usb端口"/dev/ttyUSB0",这里我得到了,UnhandledPromiseRejectionWarning:错误:错误:没有这样的文件或目录,无法打开/dev/ttyUSB0,这是因为heroku不知道它是什么,或者我必须为usb端口设置环境变量。
下面是我的代码,
const ModbusRTU = require("modbus-serial")
const client = new ModbusRTU()
const app = require('http').createServer(server)
app.listen(process.env.PORT || 5000)
const io = require("socket.io")(app)
io.on("connection",function(socket){
client.connectRTUBuffered("/dev/ttyUSB0", { baudRate: 115200 }).then(() => {
setInterval(() => {
client.writeFC3(1,0,2,(err,data) => {
if(err)console.log("error ",err)
console.log("datas ",data)
io.emit("datas_holding_register_rtu",{ datas : data["data"] })
})
},100)
})
socket.on('disconnect', () => console.log('Client disconnected'))
})
知道这里发生了什么吗?谢谢
诚心诚意,托尼
发布于 2019-04-04 23:06:10
所以..。Heroku是一个云系统,串行通信在本地进行,将电缆连接到您的计算机的USB端口。因此,Heroku无法与您的设备通信,因为它没有USB端口。解决方案:在连接到usb电缆的计算机上运行代码。
https://stackoverflow.com/questions/55508163
复制相似问题