C#——串口接收JSON数据处理

C#——串口接收JSON数据处理

待处理的json数据

{
	"altogether_time": "32",
	"measure_deep": "5",
	"measure_speed": "7",
	"origin_distance": "9",
	"relative_value": "0.2",
	"signal_num": "8",
	"water_deep": "2"
}

下面是串口接收并解析这些数据

//定义一些字符串变量
private string altogether_time = string.Empty; //总历时
private string measure_deep = string.Empty;    //测深
private string measure_speed = string.Empty;   //测速
private string origin_distance = string.Empty; //起点距
private string relative_value = string.Empty;  //相对值
private string signal_num = string.Empty;      //信号数
private string water_deep = string.Empty;      //水深

//定义一个类
public class TOKENValue
{
    public string altogether_time { get; set; }
    public string measure_deep { get; set; }
    public string measure_speed { get; set; }
    public string origin_distance { get; set; }
    public string relative_value { get; set; }
    public string signal_num { get; set; }
    public string water_deep { get; set; }
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)  //串口中断接收函数
{
    try
    {
	    if(this.serialPort1.IsOpen)
	    {
	        Thread.Sleep(300);  //延时有必要等待全部接收到
	        //获取串口数据
	        byte[] receiveData = new byte[this.serialPort1.BytesToRead];
	        this.serialPort1.Read(receiveData, 0, receiveData.Length);
	        string temp = Encoding.ASCII.GetString(receiveData, 0, receiveData.Length);
	        
	        temp = temp.Replace("\\", "");//使用替换的方法去掉"\\","\{","}\"
	        temp = temp.Replace("\"{", "{");
	        temp = temp.Replace("}\"", "}");
	        
            TOKENValue rValue = new TOKENValue();//实例化一个对象
            
            try
            {
                rValue = JsonConvert.DeserializeObject<TOKENValue>(temp);
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误提示:" + ex.ToString());
                return;
            }
            
            altogether_time = rValue.altogether_time;//获取到值付给我们的变量
            measure_deep = rValue.measure_deep;
            measure_speed = rValue.measure_speed;
            origin_distance = rValue.origin_distance;
            relative_value = rValue.relative_value;
            signal_num = rValue.signal_num;
            water_deep = rValue.water_deep;
            
            Console.WriteLine(altogether_time );//打印变量是32
            Console.WriteLine(measure_deep );
            Console.WriteLine(measure_speed );
            Console.WriteLine(origin_distance );
            Console.WriteLine(relative_value );
            Console.WriteLine(signal_num );
            Console.WriteLine(water_deep );
	    }
    }
    catch
    {
    	return;
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值