只作了部分解析,更细致的解析自己做吧 string s = ""; string str = "36 50 0 98 32 22 9 81 72 4 7 17 52 72 38 23 0 17 51 149 54 78 0 49 71 239 255 223 255 255 0 106"; string[] ss = str.Split(' '); byte[] data = new byte[ss.Length]; for (int i = 0; i < ss.Length; i++) data[i] = byte.Parse(ss[i]); byte[] bb = new byte[5]; Array.ConstrainedCopy(data, 1, bb, 0, 5); s += "车载机序列号: "; for (int i = 0; i < 5; i++) s += bb[i].ToString("X2"); s += "\r\n"; bb = new byte[3]; Array.ConstrainedCopy(data, 6, bb, 0, 3); s += "时间: "; for (int i = 0; i < 3; i++) s += bb[i].ToString("X2"); s += "\r\n"; bb = new byte[3]; Array.ConstrainedCopy(data, 9, bb, 0, 3); s += "日期: "; for (int i = 0; i < 3; i++) s += bb[i].ToString("X2"); s += "\r\n"; bb = new byte[4]; Array.ConstrainedCopy(data, 12, bb, 0, 4); s += "纬度值: "; for (int i = 0; i < 4; i++) s += bb[i].ToString("X2"); s += "\r\n"; bb = new byte[5]; Array.ConstrainedCopy(data, 17, bb, 0, 5); s += "经度值: "; for (int i = 0; i < 5; i++) s += bb[i].ToString("X2"); s += "\r\n"; MessageBox.Show(s);
这是编码格式:
七、 监控信息的获得
有两种方式获得车载机的自动上传信息:
1) TCP协议,发送D1命令设定间隔,车载机按照间隔自动回传记录。
2) UDP协议,中心发送S17命令(注意:命令从TCP通道发送),车载机按照间隔自动回传记录。
标准模式记录(二进制V1一般信息)编码格式:序号 00 01 02 03 04 05 06 07 08 09 0A 0B
内容 $ 0x1030731001 0x050316 0x220902
含义 记录头 车载机序列号 时间 日期
序号 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18
内容 0x22128745 0x00 0x113466574C 0x014028
含义 纬度值 保留 经度值、N、E、AV 速度、方向
序号 19 1A 1B 1C 1D 1E 1F
内容 0Xfffffbff 0xff 0x00
含义 vehicle_status Usr_alarm_flag 保留 记录号说明:“$”(0x24):记录头,用于中心识别记录起始位置;
时间:0x050316,标准时间5点3分16秒,相当于北京时间13点3分16秒;
日期:0x220902,2002年9月22日;
纬度值:0x22128745,22度12.8745
经度值:0x113466574C,113度46.6574,最后字节(序号0x15)含义:
bit7654,经度最后一位
bit3,1:东经,0:西经
bit2,1:北纬,0:南纬
bit1,1:A,0:V
bit0,未定义
速度、方向:0x014028:速度014节,方向028
vehicle_status、 Usr_alarm_flag:以二进制表示的车辆状态和用户自定义报警状态。含义与短信(ASCII表示)相同。
记录号:二进制表示的记录序号,每发送一条记录自动加1。
以下是我用这方式接收并输出的
int recv = mUdpSocket.Receive(datat);
string re="";
for (int i = 0; i < recv; i++)
{
re = re+datat[i].ToString();
}
//输出re,查看接收的数据以下是接收的内容,
36 50 0 98 32 22 9 81 72 4 7 17 52 72 38 23 0 17 51 149 54 78 0 49 71 239 255 223 255 255 0 106
36 50 0 98 32 32 9 81 66 4 7 17 52 69 153 34 0 17 52 9 85 110 0 1 98 255 255 223 255 255 0 112
36 50 0 98 33 69 9 81 81 4 7 17 52 70 51 131 0 17 52 71 51 156 0 99 55 255 255 223 255 255 0 1
36 50 0 98 50 8 9 81 83 4 7 17 52 69 149 132 0 17 52 9 134 158 0 2 40 255 255 251 255 255 0 161
36 50 0 98 32 101 9 81 85 4 7 17 52 67 118 84 0 17 51 120 7 14 0 1 87 239 255 223 255 255 0 106
36 50 0 98 49 144 9 81 86 4 7 17 51 40 68 21 0 17 34 89 8 126 0 2 102 255 255 251 255 255 0 82
36 50 0 98 49 52 9 82 0 4 7 17 52 70 6 57 0 17 52 16 133 12 0 19 1 255 255 251 255 255 0 197
36 50 0 98 48 70 9 82 1 4 7 17 52 70 49 102 0 17 52 71 39 28 0 65 134 255 255 223 255 255 0 50
36 50 0 98 49 53 9 82 1 4 7 17 52 69 151 71 0 17 52 9 0 78 0 3 53 255 255 251 255 255 0 32
36 50 0 98 33 120 9 82 1 4 7 17 52 69 148 40 0 17 52 9 114 62 0 2 119 255 255 251 255 255 0 58
36 50 0 98 33 24 9 82 2 4 7 17 52 69 146 50 0 17 52 9 38 126 0 3 70 255 255 251 255 255 0 244
36 50 0 98 33 35 9 82 5 4 7 17 52 69 146 40 0 17 52 9 153 158 0 2 49 239 231 223 255 255 0 127
36 50 0 98 33 137 9 82 7 4 7 17 52 70 70 71 0 17 52 5 146 46 0 2 56 239 231 223 255 255 0 82
36 50 0 98 33 51 9 82 17 4 7 17 52 70 34 64 0 17 52 19 38 62 0 3 52 239 231 223 255 255 0 127
36 50 0 98 48 51 9 82 18 4 7 17 52 70 49 1 0 17 52 25 69 78 0 1 145 255 255 223 255 255 0 111
36 50 0 98 32 50 9 82 19 4 7 17 53 4 53 152 0 17 67 84 151 62 0 3 68 255 255 223 255 255 0 38
36 50 0 98 33 22 9 82 20 4 7 17 52 72 98 86 0 17 51 114 23 78 0 130 150 239 255 223 255 255 0 99
36 50 0 98 33 8 9 82 21 4 7 17 52 70 4 132 0 17 52 17 32 14 0 3 19 255 255 223 255 255 0 14
36 50 0 98 32 34 9 82 22 4 7 17 52 69 147 51 0 17 52 9 7 30 0 2 129 255 255 223 255 255 0 96
36 50 0 98 48 97 9 82 23 4 7 17 52 69 149 39 0 17 52 9 35 110 0 0 71 255 255 251 255 255 0 51
36 50 0 98 49 128 9 82 25 4 7 17 52 68 104 115 0 17 52 33 18 78 0 1 150 255 255 223 255 255 0 117
36 50 0 98 50 53 9 82 25 4 7 17 52 69 151 0 0 17 52 9 39 14 0 0 99 239 231 223 255 255 0 87
36 50 0 98 50 18 9 82 33 4 7 17 52 69 145 17 0 17 52 9 101 78 0 1 135 255 255 223 255 255 0 40
36 50 0 98 48 73 9 82 34 4 7 17 52 55 102 131 0 17 52 134 18 78 6 147 52 255 255 223 255 255 0 171
36 50 0 98 33 52 9 82 1 4 7 17 52 69 146 102 0 17 52 9 52 158 0 3 8 239 255 223 255 255 0 255
36 50 0 98 33 145 9 82 38 4 7 17 52 72 70 149 0 17 66 2 145 158 0 2 7 255 255 251 255 255 0 250
36 50 0 98 33 149 9 82 40 4 7 17 52 70 0 52 0 17 52 17 83 126 0 3 52 255 255 223 255 255 0 247 怎么把它转换成字符串,谁知道帮个忙
或加我QQ:125942687
string s = "";
string str = "36 50 0 98 32 22 9 81 72 4 7 17 52 72 38 23 0 17 51 149 54 78 0 49 71 239 255 223 255 255 0 106";
string[] ss = str.Split(' ');
byte[] data = new byte[ss.Length];
for (int i = 0; i < ss.Length; i++)
data[i] = byte.Parse(ss[i]);
byte[] bb = new byte[5];
Array.ConstrainedCopy(data, 1, bb, 0, 5);
s += "车载机序列号: ";
for (int i = 0; i < 5; i++)
s += bb[i].ToString("X2");
s += "\r\n"; bb = new byte[3];
Array.ConstrainedCopy(data, 6, bb, 0, 3);
s += "时间: ";
for (int i = 0; i < 3; i++)
s += bb[i].ToString("X2");
s += "\r\n"; bb = new byte[3];
Array.ConstrainedCopy(data, 9, bb, 0, 3);
s += "日期: ";
for (int i = 0; i < 3; i++)
s += bb[i].ToString("X2");
s += "\r\n"; bb = new byte[4];
Array.ConstrainedCopy(data, 12, bb, 0, 4);
s += "纬度值: ";
for (int i = 0; i < 4; i++)
s += bb[i].ToString("X2");
s += "\r\n"; bb = new byte[5];
Array.ConstrainedCopy(data, 17, bb, 0, 5);
s += "经度值: ";
for (int i = 0; i < 5; i++)
s += bb[i].ToString("X2");
s += "\r\n"; MessageBox.Show(s);
上面的那组数据应该是十进制的,只是显示的形式而己,你只需要关注的数据的真值就行了,按14楼的说法,直接读到byte数组中,然后再按你想用的显示形式读成字符串就行了。
我是用以下的方式接收显示的
int recv = mUdpSocket.Receive(datat);
string re="";
for (int i = 0; i < recv; i++)
{
re = re+datat[i].ToString();
}
//输出re,查看接收的数据
int recv = mUdpSocket.Receive(datat);
string re="";
for (int i = 0; i < recv; i++)
{
re = re+datat[i].ToString();
}
//输出re,查看接收的数据