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