EmbedXrpc 用于单片机场景的“gRPC”开源项目

我要开发同款
匿名用户2020年05月27日
162阅读

技术信息

开源地址
https://gitee.com/snikeguo/EmbedXrpc
授权协议
MIT

作品详情

EmbedXrpc 类似于Google的GRPC,但是应用场景是单片机。RPC远程调用极大的方便了开发,使得不必关注于协议解析,数据的序列化和反序列化等繁琐的工作。

所用技术:C#做IDL语言+csscript+自己实现序列化和反序列化+代码生成(RazorEgie) Sample1工程是例子。除了mai.cpp的代码是手工写的之外,其他的代码都是工具生成的。应用场景:单片机近距离Cliet/Server交互场景(USB、串口、CAN(如J1939、ISO15765协议等),)只要是流协议都支持编译此工程你需要安装Qt5.14.2和QtForVsAddi插件。

此工程演示了:

客户端每一秒向服务端发送1、2服务端计算出来3后,把3发送给客户端服务端每1秒广播当前的时间,客户端打印到控制台上

 

用户使用步骤

1、用vs2019打开EmbedXrpcIdlParser.sl编译好。

2、在EmbedXrpcIdlParser\bi\Debug会出现一个EmbedXrpcIdlParser.exe,

3、编写你的IDL文件,目录下会有一个idltest1.cs文件,是例子。如果你打算用这个文件的话,请记得改一下这个文件里的配置类

[FileName("idltest1.cs")]publicclassOptioProcess:IOptioProcess{publicGeeratioOptioProcess(){GeeratioOptiooptio=ewGeeratioOptio();optio.OutPutFileName="StudetService";//输出的文件名optio.CSharpNameSpace="StudetService";//如果生成C#文件,这是生成的命名空间optio.UserIcludes.Add("UserIcFile");//如果生成Cpp文件,生成的代码将会添加UserIcFile.h文件.如果你不需要,则不用写这条语句optio.UserNamespace.Add("UserNameSpace");//如果生成C#文件,生成的代码将会添加usigUserNameSpace;语句.如果你不需要,则不用写这条语句returoptio;}}

记得保存.

4、执行命令

.\EmbedXrpcIdlParser.exe-gall-lcpp-iidltest1.cs-oyourPath

-g代表生成cliet还是server还是all

-l代表生成cpp还是cs

-o代表生成的代码打算放到哪个目录

5、生成好代码后(我假定你生成在了A文件夹下,

其中:

A文件夹所有的文件(包括子目录下的)+EmbedXrpcRutime/Cpp+EmbedXrpcRutime/Cpp/Wi32.Port=客户端(上位机端)的源文件(如果上位机用C++开发)

A文件夹所有的文件(包括子目录下的)+EmbedXrpcRutime/CS=客户端(上位机端)的源文件(如果上位机用C#开发)

A文件夹所有的文件(包括子目录下的)+EmbedXrpcRutime/Cpp+EmbedXrpcRutime/Cpp/RT-Thread.Port=服务端(单片机端)的源文件目前支持RT-Thread

功能介绍

EmbedXrpc 类似于 Google 的 GRPC,但是应用场景是单片机。RPC 远程调用极大的方便了开发,使得不必关注于协议解析,数据的序列化和反序列化等繁琐的工作。 所用技术:C#做 I...

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论