58 lines
1.6 KiB
C#
58 lines
1.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace AndroidLIB
|
|
{
|
|
public class MSG
|
|
{
|
|
public bool OK;
|
|
public int msgLen;
|
|
public string seqID;
|
|
public int opCode;
|
|
public string data;
|
|
public string error;
|
|
public string allData;
|
|
public byte[] b_allData;
|
|
|
|
public byte[] _rawdata;
|
|
public int _len;
|
|
public MSG(byte[] rawdata, int len)
|
|
{
|
|
_rawdata = rawdata;
|
|
b_allData = rawdata;
|
|
_len = len;
|
|
OK = Parse();
|
|
}
|
|
|
|
private bool Parse()
|
|
{
|
|
string dataTemp = System.Text.Encoding.ASCII.GetString(_rawdata, 0, _len);
|
|
SMd.Debug("multi RX: " + dataTemp.Trim());
|
|
this.allData = dataTemp;
|
|
|
|
string[] tempArr = dataTemp.Split('#');
|
|
if ((tempArr.Length == 0) || (tempArr.Length == 1))
|
|
{
|
|
SMd.Debug("incorect messagebuss message=" + data);
|
|
return false;
|
|
}
|
|
int messLen = Convert.ToInt32(tempArr[1]);
|
|
|
|
if (_len != messLen)
|
|
{
|
|
Console.WriteLine("message length({0}) != actual length({1})", messLen, _len);
|
|
return false;
|
|
}
|
|
|
|
seqID = tempArr[2];
|
|
opCode = Convert.ToInt32(tempArr[3]);
|
|
data = "";
|
|
int idx = 1+tempArr[1].Length + 1 + tempArr[2].Length + 1 + tempArr[3].Length + 1;
|
|
data = allData.Substring(idx);
|
|
return true;
|
|
}
|
|
}
|
|
}
|