Fox-Edge分为后端Fox-Edge-Serve和前端Fox-Edge-UI两个部分,Fox-Edge-Serve的全套代码是基于JAVA开发,
而Fox-Edge-UI的全套代码是基于VUE3.0开发的。
其中Fox-Edge-Serve是整个系统最核心的部分,整个系统的独立运行由它来完成。Fox-Edge-UI是方便开发者和一线施工人员进行配置管理而开发的。
Fox-Edge采用的是服务化架构,这种设计的目的,是因为Fox-Edge作为运行在小型设备上的边缘计算平台,硬件环境是非常紧缺的,不可能像服务器侧的开发一样,
采用大而全的架构,对每一分的硬件资源,需要精打细算。
正因为考虑到硬件环境资源稀缺的背景,所以Fox-Edge在设计阶段,采用积木式的架构,来达到按需部署,这样就在有限的硬件资源上,只部署必要的组件。

Fox-Edge有两种操作系统环境,一种是Windows环境,一种是Linux环境。
Windows是方便开发者进行代码开发的环境,在Windows可以运行IDEA这类IDE进行高效开发。但是Windows毕竟不是Fox-Edge运行的目标环境, 所以它的功能会有所限制。主要是Fox-Edge涉及到进程管理、文件管理的操作,此时Linux和Windows有非常大的不同,windows版本跟着受限。
Linxu才是Fox-Edge运行的实际环境。开发者在完成Windows下的开发工作的时候,可以在虚拟机或者物理机上,部署安装Linux操作系统后, 按教程部署一个Fox-Edge。然后,将其作为远程调试环境,进行进一步的验证和仿真调试。
Fox-Edge是基于JAVA开发的,在Windows下的JDK版本要选择JDK 8版本,在Linux环境选择JDK 11/17版本。
为什么两个操作系统版本的JDK版本不一样呢?
其实,灵狐是想基于JDK 8版本进行开发和运行的。但是,ubuntu 22的发行版本,已经是JDK 11,Debian 11的发行版本,已经是JDK 17了,你要安装JDK 8,会挺费劲的。
Windows下为什么不直接切换到JDK 11呢,JDK 8编译出来JAR包的字节码,它是兼容JDK 11/17的,可以在上面直接运行的。如果灵狐直接切换到11/17,
那么意味着,有些用户的运行环境就只能是JDK8的时候,那么就会产生版本的兼容矛盾。
最后,考虑到用户的各种版本可能性,还有Linux下的主流JDK版本。为了最大兼容性,Windows开发使用JDK8,Linux建议安装JDK11。
MySQL和Redis,前者是数据库,后者是缓存和消息队列,必须要启动这两个服务,才可以启动Fox-Edge系统。
Fox-Edge的最小服务gateway-service和manager-service,它们分别是网关服务和管理服务,两者是整个系统的最小服务。
基础安装包自带这两个服务,Linux环境下启动Fox-Edge后,这两个服务会对其他服务进行安装和管理。
在Windows开发环境下,这两个服务也是必须启动的最小服务。
Fox-Edge的其他服务,可以根据需要进行单独启动,达到开启对应的功能的目的。
channel-simulator-service:
该服务是通道模拟,在它的本地配置文件中,添加发送/应答报文,那么就可以模拟设备响应了,帮助开发者快速开发其他服务和组件。
channel-serialport-service:
该服务是串口服务,大量的设备是使用串口通信的,部署它之后,可以跟真实设备进行通信。
device-service:
该服务是设备服务,它负责加载各种设备解码器,是对设备的通信协议进行编码/解码的框架服务。
controller-service:
该服务是控制器服务,它会根据配置认为,周期性的对设备发出操作请求。
period-service:
该服务是持久化服务,它会接受其他服务发过的数据持久化到redis/mysql中的请求,将设备采集的数据保持到这两个库中。
在windows的调试,可以直接在IDEA的IDE中启动代码后进行调试。
在Linux下,将JAR包复制到Linux环境中的相应位置后,使用restart.sh进行远程调试
# 命令格式为restart.sh xxx/xxxx -d本地IP:调试端口 -p服务端口的方式进行调试,xxx/xxxx某个类型服务下的某个服务
# 例如:
root@fox-edge-server:/opt/fox-edge/shell# ./restart.sh system/device-service/ -d192.168.3.133:5005 -p9124
#然后,在IDEA中就可以远程DEBUG部署在Linux下的服务了
解码器是被Device服务加载的模块,所以它需要部署在指定的目录下,通过Device服务来进行调试。
1、将编译好的解码器JAR文件,Linux放置在\opt\fox-edge\jar\decoder目录下,Windows放置在你工程的\jar\decoder目录下。

2、启动管理服务manager-service,这时候它扫描\jar\decoder,发现你放置进去的JAR文件,此时你可以在前端页面的 系统管理>设备解码 中看到该解码器

3、在 系统管理>设备解码 界面中,指明该模块为是否加载,那么它就会在Device启动阶段,被加载到Device的进程之中

4、当Device进程进行重启后,你会在 操作管理>操作方法 之中,看到该解码器中的设备信息和操作方法信息,被扫描出来。

5、在设备管理界面,可以看到多了一个设备类型,那么就可以添加该类型的设备了

6、为这设备,添加一个对应的通道,帮助它把数据传递到设备之上。

7、添加该设备之后,可以在任务管理中的 通道操作任务和设备操作任务中,添加该设备,进行调试测试。

8、在IDEA中的解码器的编码/解码函数打上断点,就可以看到界面发送过来的数据
上述的操作过程,可以参考使用教程的Fox-Edge配置篇