我的要求如下:
我的 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/