# XProtocolServer **Repository Path**: ucos/xprotocol-server ## Basic Information - **Project Name**: XProtocolServer - **Description**: XProtocol 主控端实现,485/socket - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-09-26 - **Last Updated**: 2024-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # XProtocolServer #### 介绍 XProtocol 主控端实现,485/socket #### 软件架构 ![输入图片说明](images/system.png) libprotocol 主控端协议封装 ``` ├── LICENSE ├── main.cpp #主程序入口 ├── Makefile ├── output # 编译输出目录 ├── README.md ├── src │ ├── libprotocol 协议封装:xprotocol & jprotocol │ │ ├── jprotocol #jprotocol 封装,此协议一般对接上层,平台等,已实现mqtt; │ │ │ ├── jmod_http.cpp #未实现 │ │ │ ├── jmod_http.h │ │ │ ├── jmod_mqtt.cpp #已经实现 │ │ │ ├── jmod_mqtt.h │ │ │ ├── jmod_tcp.cpp #未实现 │ │ │ ├── jmod_tcp.h │ │ │ ├── jprotocol_imp.cpp #继承接口 │ │ │ ├── jprotocol_imp.h │ │ │ └── mqtt.config #mqtt 必要配置项 │ │ └── xprotocol #xprotocol 封装,此协议一般对接设备端,已实现485/tcp; │ │ ├── readme.md │ │ ├── xmod_485.cpp #485 protocol 封装 │ │ ├── xmod_485.h │ │ ├── xmod_tcp.cpp #tcp 服务 │ │ ├── xmod_tcp.h │ │ ├── xprotocol_imp.cpp #继承接口 │ │ └── xprotocol_imp.h │ ├── libthird #依赖的第三方库 │ │ ├── aarch32 #RK3288 平台 │ │ │ └── opencv │ │ ├── aarch64 #RK3568 平台 │ │ │ ├── cjson │ │ │ ├── mqtt │ │ │ ├── opencv │ │ │ ├── rknn │ │ │ ├── sqlite3 │ │ │ └── utils │ │ └── x86_64 #X86_64 平台 │ │ ├── cjson │ │ ├── mqtt │ │ ├── opencv │ │ ├── sqlite3 │ │ └── utils │ ├── Readme.txt │ └── task │ ├── jtask_mqtt.cpp #测试jmqtt │ ├── jtask_mqtt.h │ ├── xtask_485.cpp #测试485 xprotocol │ ├── xtask_485.h │ ├── xtask_tcp.cpp #测试 │ └── xtask_tcp.h ├── XProtocol.pro └── XProtocol.pro.user ******************************************************************** xprotocol通信格式 底层设备之间使用hex格式:串口、485、can、spi、iic head len dtype addr cmd payload crc 2bytes 2bytes 2bytes 2bytes 2bytes Nbytes 2btyes ******************************************************************* *******************************************************************/ 1、xmod_485:实现了485接口对xprotocol协议的封装 如果使用485,请重写 static void rs485_tx_init(void) static void rs485_tx_enable(int enable) 使用步骤: 创建实例: xmod485=new XMod_485("/dev/ttyUSB0",115200,8,0,1); 设置回调: xmod485->set_parser_callback(xmod_485_parser_cb); 发送数据: xmod485->send_cmd(0x1000,0,0x0001,NULL,0); 回调解析: xmod_485_parser_cb 2、xmod_tcp:实现了socket通信,实现xprotocol协议封装 static void xmod_tcp_parser(unsigned short dtype,unsigned short addr,unsigned short cmd, unsigned char *payload,int plen); 1、创建实例: xmod_tcp =new XMod_Tcp("",9990); 2、设置回调: xmod_tcp->set_parser_callback(xmod_tcp_parser); 3、发送数据: xmod_tcp->send_cmd(0x1000,0x0000,0x0001,NULL,0); 4、回调解析: xmod_tcp_parser 注意:TCP客户端连接成功后需要发送一次设备绑定,格式:{"dtype":[0x1000,1000,9999]} JMod_Mqtt 实现对Jprotocol 协议封装,此协议一般对接应用层,平台; * mqtt主题 * 发送主题: * /login * /logout * /cmd * 订阅主题: * /{DEV_SN}/login * /{DEV_SN}/logout * /{DEV_SN}/cmd * 内部实现登陆、保活机制; * * 使用步骤: * 1、创建实例:JMod_Mqtt *jmqtt=new JMod_Mqtt("./mqtt.config"); * mqtt.config 登陆必要参数 2、设置回调:jmqtt->set_parser_callback(jmod_mqtt_parser); 3、发送调用:jmqtt->jprotocol_send_cmd(jcmd); 4、接收回调:jmod_mqtt_parser ```