一.定义一个JSON数据模型
我们通过Note编号来区分数据的归属,比如Note=1存的是齿轮设计数据,Note=2存的是轴设计的数据,这个类被反复重置,只用编号来区分类别,其他属性就是存储数据而已
cs
public class PipeMessage
{
public double Note { get; set; }//编号
public double Num1 { get; set; }
public double Num2 { get; set; }
public double Num3 { get; set; }
public double Num4 { get; set; }
public double Num5 { get; set; }
public double Num6 { get; set; }
public double Num7 { get; set; }
public double Num8 { get; set; }
public double Num9 { get; set; }
public double Num10 { get; set; }
public double Num11 { get; set; }
public double Num12 { get; set; }
public double Num13 { get; set; }
public double Num14 { get; set; }
public double Num15 { get; set; }
public double Num16 { get; set; }
public double Num17 { get; set; }
public double Num18 { get; set; }
public double Num19 { get; set; }
public double Num20 { get; set; }
public double Num21 { get; set; }
public double Num22 { get; set; }
public double Num23 { get; set; }
public double Num24 { get; set; }
public double Num25 { get; set; }
public double Num26 { get; set; }
public double Num27 { get; set; }
public double Num28 { get; set; }
public double Num29 { get; set; }
public double Num30 { get; set; }
}
二、客户端发送 JSON 示例
比如客户端发送:
cs
var msg = new
{
Note = 1,
Num1 = 10.5,
Num2 = 20.3,
};
你在 NX 插件端接收到后,就能解析出这些字段。
三、在你的项目中增加 JSON 解析
1.安装Newtonsoft.Json包
然后引用:
cs
using Newtonsoft.Json;
2.将服务器接收到的json信息解析出来
cs
private static void ProcessClientCommandInMainThread(string commandJson)
{
try
{
// 将 JSON 字符串反序列化为 PipeMessage 模型类对象
PipeMessage msg = JsonConvert.DeserializeObject<PipeMessage>(commandJson);
if (msg == null)
{
theUFSession.Ui.DisplayMessage("收到的 JSON 为空或解析失败", 1);
return;
}
//显示测试
theUFSession.Ui.DisplayMessage($"收到命令: {msg.Note},数据1:{msg.Num1},数据2:{msg.Num2}", 1);
}
catch (Exception ex)
{
theUFSession.Ui.DisplayMessage($"JSON 解析或执行失败: {ex.Message}", 1);
}
}
四.客户端发送信息的封装
1.安装Newtonsoft.Json包
2.WPF项目同样也新建一个一模一样的数据模型类 PipeMessage
3.按键事件将数据序列化为json数据,并发送给服务器
cs
private async void Button_Click(object sender, RoutedEventArgs e)
{
//要发送的数据
var msg = new
{
Note = 1,
Num1 = 10.5,
Num2 = 20.3,
};
string json = JsonConvert.SerializeObject(msg);//将对象序列化为JSON字符串
using (var client = new NamedPipeClientStream(".", pipeName, PipeDirection.InOut))
{
client.Connect(3000); // 3秒超时
using (var writer = new StreamWriter(client, Encoding.UTF8) { AutoFlush = true })
{
writer.WriteLine(json);
}
}
MessageBox.Show("信息已经发送");
}
五.运行测试
ug软件内运行的管道服务器正确接收到wpf软件发过来的json数据,有了这些数据我们就可以给到ug建模
