首页 新闻 会员 周边

Asp.net服务器端操作串口的问题。

0
[已解决问题] 解决于 2013-11-14 07:57

我本来是写单片机程序的,刚接触asp.net,最近想做一个通过浏览器可以读写服务器端串口的东西,用WPF操作.net下的SerailPort类是没有问题的。但在Asp.net里通过一般处理程序来操作就有问题,只有前两下起作用。不知道是为什么?因为还没发布网站,应该不是权限的问题,再说前两次是起作用的。handler的PR方法里代码如下:只是测试,写的很随意。在网页上就是一个按钮点击时请求这个一般处理程序,PR方法里的代码就是给串口发一条数据,单片机收到一次把一个灯开关一次。目前的现象就是用WPF建立的应该程序很正常。但通过网页来操作时,只有前两次起作用,一般处理程序也一直在响应我的请求,我最下面给它返回了一个数据。我发的数据就都是0,0低电平,我用万用表就能检测出来,起作用时确实收到数据了,不起作用时确实没有收到数据。排除硬件上的问题。我的操作系统是win8.

 public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";          
            SerialPort port = new SerialPort("COM4", 9600);
            port.Open();
            byte[] bytes = new byte[1024];
                      
            port.Write(bytes, 0, bytes.Length);
            port.Close();
          
          
            context.Response.Write("a"+context.Request.QueryString["cmd"]);
            
        }
问题补充:

还有就是只要把网页关掉重新打开,就会再起作用两次。想着是不是什么服务端缓存的机制,但实在是不了解,望指点一下。

皮毛君的主页 皮毛君 | 初学一级 | 园豆:145
提问于:2013-10-10 15:26
< >
分享
最佳答案
0

ASP.NET的请求是多线程的,有可能多次并发请求,那么你这种写法肯定会出问题,串口打开是独占的,同时请求的时候是要出问题的.

建议用windows服务来和串口交互,ASP.NET和windows服务交互,这种方式处理起来比较稳定.

奖励园豆:5
garry | 菜鸟二级 |园豆:495 | 2013-10-10 15:53

  感谢你的指点,我刚查资料看着别人遇到这样问题时,也大部分给的是这样的建议。是不是很少有在ASP.net的服务端做这类的操作的?如果是的话,我就不考虑这方式了,这个问题也就不管了。

  还有我刚也看了看怎么用.net创建服务,大概还知道,但asp.net和自己要创建的这个服务之间的通信方式是什么?用socket吗?

皮毛君 | 园豆:145 (初学一级) | 2013-10-10 16:11

@Helloafer: 是的,基本不会ASP.NET直接跟设备交互的.

ASP.NET和服务之间可以采用标准的WCF方式来通信,服务暴露wcf接口,ASP.NET调用

garry | 园豆:495 (菜鸟二级) | 2013-10-10 16:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册