解决思路
- 适用于js调用读卡器,电子秤,等硬件设备
- 编写一个window安装程序的插件. 安装过后 监听本地的一个端口 如:8536.并编写一个提供获取串口信息并返回结果的接口. web 项目在js里跨域访问本地的8536端口.
- 插件这里使用 Aserver git地址 https://github.com/kklldog/AServer
- 注意 以下代码
var server = new Agile.AServer.Server();
server.SetPort(8536);
server.EnableCors(new CorsOption()
{
AccessControlAllowOrigins = "*",
AccessControlAllowMethods = "GET, POST, OPTIONS",
AccessControlAllowHeaders = "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With"
}); //设置允许跨域访问.
server.AddHandler(new HttpHandler()
{
Method = "GET",
Path = "/api/getcom",
Handler = (req, resp) =>
{
//访问串口并返回串口数据
return resp.Write("['kklldog','agile']");
}
});
server.Run();//启动服务
- 编写好接口程序之后需要 用到第二个开源工具 https://github.com/cxwl3sxl/AnyExeToService 这个项目可以把 任何一个.exe的可执行文件安装成为一个windows服务. 这样就不用每次都打开插件了.
- JavaScript
$.getJSON("http://127.0.0.1:8536/api/getcom",function(result){
//结果
}));
-- 假如8536端口访问不通 则引导用户下载并安装插件.