PCB 网页WebODB++与Genesis图形同步实现方法

PCB 网页WebODB++与Genesis图形同步实现方法

实现前,先要解决让Javascript可以在浏览器可以发送指令给到Genesis, 同时Genesis可以接受来自浏览器传递过来的指令,在这里可以借助WebSocket即可达到此目的。

 一.实现工作流程

  1.  浏览器(控制端)JS与WebSocketServer建立连接,浏览器需要将COM指令发送给1号Genesis

  2.  数据先发送给WebSocketServer,WebSocketServer收到信息,再将信息转发给1号SocketClient

  3. 1号SocketClient收到信息后,将信息外挂的方式发送给1号Genesis

    PCB 网页WebODB++与Genesis图形同步实现方法

为了简化,简少转发,在这里只建只一个WebSocketServer服务,他同时起到转发COM指令发送到Genesis功能

 PCB 网页WebODB++与Genesis图形同步实现方法

 二. 创建一个WebSocket服务
        static List<IWebSocketConnection> allSockets = new List<IWebSocketConnection>();
        static WebSocketServer server = new WebSocketServer("ws://127.0.0.1:8888");
        static void Main(string[] args)
        {
            FleckLog.Level = LogLevel.Debug;
            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Open!");
                    allSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    Console.WriteLine("Close!");
                    allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    gCommand(message);
                };

            });

            var input = Console.ReadLine();
            while (input != "exit")
            {
                foreach (var socket in allSockets)
                {
                    socket.Send(input);
                }
                input = Console.ReadLine();
            }
        }
        static void gCommand(string messages)
        {
            //执行外挂接口,由WebSocketClient从WebSocketServer接收到COM提令后转发给Genesis
            //g.COM("messages");
            allSockets.ForEach(s => s.Send(messages));
        }
 三.浏览器建立WebSocket连接
    var wsImpl = window.WebSocket || window.MozWebSocket;
    window.ws = new wsImpl('ws://127.0.0.1:8888/');
    ws.onmessage = function (evt) {
        console.log(evt.data);
    };

 四. 网页发送COM指令操作

PCB 网页WebODB++与Genesis图形同步实现方法

 五.网页WebODB++与Genesis同屏操作

   实现同屏原理和上面一样,让JS和WebSocketServer建立连接,再由WebSocketClient发送指令给到Genesis

        为了让JavaScript拥有C#封装的所有方法,可以在 WebSocketClient客户端反射所有命令供JavaScript使用,我们在用JavaScript写脚本时,可以复用到C#的封装方法

  网页WebODB++与Genesis同屏操作_哔哩哔哩_bilibili        

       WebODB++技术栈:解析Gerber,ODB++与计算几何计算用WebAssembly与JS计算,渲染用WebGL

PCB 网页WebODB++与Genesis图形同步实现方法

 

上一篇:解决白盒、mock、性能、自动化测试脚本中的数据自动生成问题——Spock-Genesis


下一篇:CS61A 18sp -- Lecture8(Tree Recursion) 笔记