c# - 使用 WCF 服务从 ASP.NET 应用程序进行串行端口通信

标签 c# asp.net wcf

我的要求如下:

我的 asp.net 应用程序必须连接到串行端 Eloquent 能偶尔获取权重。但由于无法直接从 ASP.net 执行此操作,因此我使用 WCF 服务。

如何使用 WCF 服务执行此操作?如何将值(value)返回给 asp.net 函数? 在串行端口通信中,数据是在单独的线程中接收的。

using System.IO;
using System;
using System.IO.Ports;

namespace SerialComm
{
    public class FileReadService : IReadSerialComm
    {

        public void ReadSerialComm(string[] _params)
        {
            SerialPort spComm = new SerialPort(_params[0], Convert.ToInt32(_params[1]), Parity.None, Convert.ToInt32(_params[3]), StopBits.One);
            spComm.RtsEnable = false;
            spComm.DtrEnable = false;
            spComm.DataReceived += new SerialDataReceivedEventHandler(spComm_DataReceived);
            spComm.Open();
            spComm.Write(_params[5]);
        }

        void spComm_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            // data received event handler
        }     
    }  
}

最佳答案

我会通过在浏览器中使用 javascript 调用本地计算机上的服务来解决此问题。您可能需要进行一些初步调用,以确保服务已准备就绪,并在出现问题时向用户发送消息。

jQuery 使 ajax 变得非常简单。您需要阅读 jquery.com 。获取 js 库,并查看 ajax 文档。

您的代码将如下所示(并且这完全未经测试)...

<script src="../Script/jquery-1.9.0.js" type="text/javascript"></script>
...
<script type="text/javascript">
function readSerialBuffer() {
    $.ajax({
       url: "http://localhost:12345/readSerialBuffer",
       success: function(data) {
          $(".serialdata").val(data);
       }
    });
}

</script>

<asp:Textbox runat="server" id="txtSerialData" class="serialdata" />
<input type="button" onclick="readserialbuffer();" />

类似这样的事情。这个想法是,单击按钮运行 ajax 函数来请求权重,当调用成功时,它会将返回的值加载到文本框中。我还没有尝试过运行这个...这只是我的想法。

关于c# - 使用 WCF 服务从 ASP.NET 应用程序进行串行端口通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23519410/

相关文章:

.net - .NET 4.6.2 中的 WCF 是否支持 CNG KSP 中带有 PK 的服务器证书?

wcf - 基于 ssl 的 wcf 服务无法在 azure 模拟器中运行

c# - 使用 UserNameOverTransport 绑定(bind)时,如何让 WCF 以摘要模式发送密码? (WSE3.0代码转WCF)

asp.net - 使用 ProDinner 作为引用架构

c# - 在 Asp.Net WebForm 中压缩 JavaScript 和 CSS

c# - 读取包含 unicode 字符的文件

c# - 在标签上显示刻度符号

c# - 为什么这会提高性能?

c# - GAC 中 dll 的配置文件保存位置 - 最佳实践

.NET 禁用非 TLS1.2 的入站