当前位置: 代码迷 >> C# >> c#数据处理并输出,求大神帮解决方案
  详细解决方案

c#数据处理并输出,求大神帮解决方案

热度:67   发布时间:2016-05-05 03:26:46.0
c#数据处理并输出,求大神帮
我对C#一点没接触过,现写了个socket的网络端口监听,实现了读取我这里的GPRS模块发送的数据并显示。现在需要把收到的数据:<DB31      A26.0,B92.6,C26.0,D00.0,E00612.9,I00.1,JNNE,O00.0> 进行处理,然后输出如下的格式:
设备号:        DB31
空气温度:    26.0 oC
空气湿度:   92.6  hPa
土壤温度:   26.0 oC
土壤水分:   00.0
光照度:       00612.9 lx
风速:          00.1 m/s
风向:          NNE
日雨量:      00.0 mm

收到的数据A代表空气温度,B代表湿度,依次类推,后面的数字就是对应的数据大小, (由于发帖不能发特殊符上述中oC 代表摄氏度)
使用的平台是VS。
望大神们指教,如果大神们时间给代码的话,也希望给我个提示,比如使用什么语句实现,因为实在对C#不熟悉。
抱拳!
------解决思路----------------------
假设你已经收到了 string 消息,那么可以写
public class GPS
{
    public string 设备号;
    public float 空气温度;
    public string 空气湿度;
    public string 土壤温度;
    public string 土壤水分;
    public string 光照度;
    public string 风速;
    public string 风向;
    public string 日雨量;

    public void Parse(string s)
    {
        var 中间 = s.Split('<')[1].Split('>')[0];
        var 数据 = 中间.Split(new char[] { ',', ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);
        设备号 = 数据[0];
        for (var i = 1; i < 数据.Length; ++i)
        {
            var d = 数据[i];
            switch (d[0])
            {
                case 'A':
                    空气温度 = float.Parse(d.Substring(1));
                    break;
                case 'J':
                    风向 = d.Substring(1);
                    break;
            }
        }
    }
}


例如可以这样转换
var s = " <DB31      A26.0,B92.6,C26.0,D00.0,E00612.9,I00.1,JNNE,O00.0>这里是一些说明";
var g = new GPS();
g.Parse(s);

------解决思路----------------------
可以这样写
            var s = "<DB31      A26.0,B92.6,C26.0,D00.0,E00612.9,I00.1,JNNE,O00.0>";

            var dict = new Dictionary<char, string[]>();
            dict.Add('A', new string[] { "空气温度", "℃" });
            dict.Add('B', new string[] { "空气湿度", "hPa" });
            dict.Add('C', new string[] { "土壤温度", "℃" });
            dict.Add('D', new string[] { "土壤水分", "" });
            dict.Add('E', new string[] { "光照度", "lx" });
            dict.Add('I', new string[] { "风速", "m/s" });
            dict.Add('J', new string[] { "风向", "" });
            dict.Add('O', new string[] { "日雨量", "mm" });
                          
            s = s.Trim(new char[] { '<', '>' });
            var res = new List<string>() { string.Format("{0,-12}{1}", "设备号",s.Substring(0, 10)) };
            foreach (var c in s.Substring(10).Split(','))
            {
                res.Add(string.Format("{0,-12}{1}{2}", dict[c[0]][0], c.Substring(1), dict[c[0]][1]));
            }
            Console.WriteLine(string.Join("\r\n", res));
  相关解决方案