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

时间:2014-05-07 13:37:13

标签: c# asp.net wcf

我的要求如下:

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

如何使用WCF服务执行此操作?我如何获得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
        }     
    }  
}

1 个答案:

答案 0 :(得分:3)

我通过浏览器中的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函数来请求权重,当该调用成功时,它会将返回的值加载到文本框中。我没有尝试过这个...它只是在我的头顶。