最近有个项目需要网页调用本地标签打印设备,设备方提供了动态链接库文件,项目拿到手后就开始上网各种搜索,结合自己掌握的知识,自己总结出一个方案。欢迎各位大牛探讨!
方案的实现思路
技术栈js、C#(winform);利用websocket服务接收页面的打印请求,调用dll实现控制打印设备进行打印并写入RFID芯片,但这个方案有个不方便的地方,就是需要用户在打印前先去启动这个打印服务程序。后面去到现场实施部署时,发现一个现象完美将这个坑避开了,后面会分享给大家!
实现过程
1、实现websocket服务端
//启动websocket服务 private void websocketServer { webSocketServer.NewMessageReceived += WebSocketServer_NewMessageReceived; if ) { this.label1.Text = "设置服务监听失败!"; } if { this.label1.Text = "启动服务监听失败!"; } this.label1.Text = "启动打印服务成功!"; }
2、解析前端请求
//接收前端请求的Json,并调用打印方法打印标签 private void WebSocketServer_NewMessageReceived { JObject jobj = JsonConvert.DeserializeObject; string gdmc = jobj.ToString; }
3、打印
Printdll.PTK_DrawText_TrueType;
4、前端请求
function PrintRequest { var ws = new WebSocket; ws.onopen = function{ //当WebSocket创建成功时,触发onopen事件 var res = Json; console.log; ws.send; //将消息发送到服务端 } }
5、效果
最后告诉大家那个坑怎么避的,那个打印设备有点小贵,客户只采购了两台,所以只能采用共享打印,然后就固定了一台电脑作为打印服务器,所以就把坑给完美避了。