首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Heroku应用程序访问本地机器的串口数据

如何使用Heroku应用程序访问本地机器的串口数据
EN

Stack Overflow用户
提问于 2017-05-01 12:37:22
回答 1查看 487关注 0票数 1

我有一个现有的Rails应用程序。我希望使用此应用程序从Windows计算机中的COM 1端口获取串口数据,但由于Heroku是一个运行在Linux服务器上的基于云的平台,因此无法从运行Heroku应用程序的本地机器上获取串口数据。如果我在Windows机器上运行独立的Ruby代码,那么它就可以正常工作,并且能够获得我想要的数据。

我收到以下错误

代码语言:javascript
复制
 Unable to open COM1

我该如何解决这个问题?

Rails应用程序中访问串口数据的部分代码是:

代码语言:javascript
复制
port_str = 'COM1'  #may be different for you
baud_rate = 2400
data_bits = 8
stop_bits = 1
parity = SerialPort::NONE

sp = SerialPort.new(port_str, baud_rate, data_bits, stop_bits, parity)


i=sp.gets.chomp
puts i

如果我在本地机器上运行,这段代码运行良好。‘序列化港’宝石在我的宝石档案里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-02 10:10:54

Rails是一种在web服务器上运行的web服务器技术。它构建HTML页面,这些页面被发送到客户端计算机并由浏览器呈现。

当您在本地运行Rails时,您是在模仿真正的web服务器-- localhost基本上是在本地计算机上运行web服务器。这就是为什么您可以在Rails应用程序中欺骗和使用Ruby代码,这些代码可以在本地访问本地计算机的端口,但是一旦在真正的web服务器上运行Rails应用程序(比如Heroku),您就不能这样做,所以您有错误的工具来完成您想要做的工作。

不仅如此,因为Rails是一种web技术,所以您有一个运行在浏览器中的web应用程序,并且您无法从web浏览器轻松地访问客户端机器上的端口。有关这方面的更多信息在"How to read serial port data from JavaScript“中。

Ruby代码能够访问端口的唯一原因是,当您在本地主机上运行时,它不在浏览器中运行,而是运行在本地主机上的web服务器中,因此当应用程序在真正的web服务器上运行时,Ruby代码将尝试访问服务器的端口,而不是任何客户端机器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43719211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档