【问题标题】:c# web page to communicate with user machine's serial portc#网页与用户机器的串口通信
【发布时间】:2016-05-20 17:41:44
【问题描述】:

我有一个托管在远程 Web IIS 服务器上的网站界面。

当用户点击页面中的一个按钮时,需要从通过串口连接到客户端本地机器的设备中读取一些数据,如果读取成功则显示到页面中。据我了解,我可以创建一个控制台应用程序并安装在客户端的本地机器上以读取数据,然后我需要从客户端的本地机器到Web服务器的通信方法才能显示在页面中。

此时,我想我可以在控制台应用程序运行时将数据保存到数据库中,然后在网站端,一旦单击按钮,它就可以定期进行 AJAX 调用以检索数据。

但问题是:当控制台应用程序运行时,我需要在数据库中存储一些映射字段,以便告诉网站的 AJAX 调用要检索哪些数据并在页面中显示。

到目前为止,我可以考虑两种方法。一种方法是将一个唯一键(如会话 ID 或用户 ID 等)从网站传递到控制台应用程序以存储在数据库中,但由于控制台应用程序从命令行读取输入,我无法找到使其在这一点上工作的方法.

另一种方法是在客户端机器中使用一些唯一的 ID,例如本地控制台应用程序和 Web 浏览器都可以捕获的某些机器 ID(或其他东西),但我真的不知道可以使用什么此时。

感谢您阅读我的问题,任何帮助或想法将不胜感激。

P.S 如果这不起作用,我想我可能必须为所有这些问题创建一个单独的 Windows 应用程序。

【问题讨论】:

    标签: .net serial-port console-application


    【解决方案1】:

    我在网上查了几天所有的资源终于弄明白了。

    1. 创建 WCF 服务库以实现与串行端口通信的方法。
    2. 创建窗口服务来托管 WCF 服务,这里是link。然后就可以通过http访问WCF方法与串口通信了。
    3. 在网页上,使用 javascript 将 XMLHttpRequst 发送到 WCF 服务。在这里,我遇到了 CORS 问题,因为网页托管在 Web 服务器中,而 WCF 服务托管在本地计算机中。我被这个问题困扰了一段时间,终于找到了解决方案here。
    4. 那么下面就很简单了,当用户点击网页上的按钮打开串口时,向WCF服务发送请求,它读取数据,处理并通过调用Web API将其保存到数据库中。当网页定期发送请求以从数据库中检索数据(如果有的话)然后显示在页面中。

    更新:

    我们可以使用self-host Web API来代替WCF服务。

    【讨论】:

      【解决方案2】:

      根据您所写的内容,我的理解是您想从您的 Web 服务器远程调用在客户端计算机上运行的控制台应用程序的方法。您可以通过两种方式做到这一点:

      • 在您的控制台应用程序中托管 asp.net,并从您的 Web 服务器直接调用控制台应用程序。此处解释的内容:http://www.asp.net/web-api/overview/older-versions/self-host-a-web-api
      • 引入像 Radis 或 MSMQ 之类的服务总线 pub-sub 或许多其他服务总线,以便在需要时向控制台应用程序发送消息,然后从控制台应用程序接收响应。

      【讨论】:

      • 谢谢你,@Deepark。我想我想通了,我创建了一个窗口服务来在本地机器上托管一个 WCF 服务,然后浏览器端使用 javascript 使 XMLHttpRequest 调用 WCF 服务,WCF 服务从本地串口读取和处理数据,然后调用 web api 保存它进入数据库。
      猜你喜欢
      • 2011-02-16
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多