描述icsmanager与sdap的图形通信接口
采用管道通信的方式通信,默认管道名称为\\.\pipe\bbksdappipename 管道数据为连续的二进制数据,共分为2部分
.mat文件的字节流)| 数据字节 | 长度 | 描述 |
|---|---|---|
| 0-3 | 4 | 消息部分的消息长度N (Int32) |
| 4-N+3 | N | UTF-8 编码的消息内容 |
| N+4-结束 | 其余 | .mat文件字节流 |
BBK.SdksRemoteMessage
| 成员 | 说明 |
|---|---|
| Data | .mat文件解析参数数组 |
| Message | 发送的消息 |
| FromStream(Stream stream) | 将字节流按照数据格式解析为C#支持的类型 |
| GetStream() | 将数据内容编码成字节流 |
PipelineServer
| 成员 | 说明 |
|---|---|
| BeginPipelineServer | 启动管道监听服务 |
| EndPipelineServer | 结束管道监听服务 |
| PipelineConnectDelegate | 客户端连接事件 |
PipelineClient
| 成员 | 说明 |
|---|---|
| SendDataStream | 直接发送字节流到指定的管道中 |
Server与Client构造函数中的
ILogger可以指定为null
public void PipeTest()
{
//Server端
//创建Server实例
PipelineServer server = new PipelineServer(null);
//注册连接事件
server.PipelineConnected += Server_PipelineConnected;
//启动Server
server.BeginPipelineServer(TestPipeName);
//
var message = new RemoteMessage();
message.Data = CreateTestData();
//创建Client实例
PipelineClient client1 = new PipelineClient(null);
PipelineClient client2 = new PipelineClient(null);
message.Message = "test1";
//发送数据
client1.SendDataStream(message.GetStream(), TestPipeName);
message.Message = "test2";
client2.SendDataStream(message.GetStream(), TestPipeName);
}
//Server端注册事件处理方法
private void Server_PipelineConnected(System.IO.Pipes.NamedPipeServerStream pipeline, System.Threading.CancellationToken token)
{
var message = new RemoteMessage();
//处理接收数据
message.FromStream(pipeline);
}