日记smarthome

测试命令:测试命令 7e 7e 两个字节 一个字节  两个字节 一个字节     解释: 两个字节是userid的值

int Userid = data[i] * 256 + data[i + 1]; 

一个字节是 DeviceID的值,

int Deviceid = data[i + 2];

说明测试命令发的是整型的userid,而不是字符string型

结束测试命令:只能7c 7c 7c

手机发命令:

用手机客户端的话,发的控制命令肯定就是字符型了目前只能是,

字符串“407”转为整数407,int str1 = Convert.ToInt32(string object);

首先服务器收到的数据存放在byte型数组 data[]里

步骤1:解码与编码      重点:数据类型之间转换

string str2 = new ASCIIEncoding  ().GetString(buffer);    // 如果buffer[]={0x33,0x32,0x2c,0x31}  则str2="32,1"

string dataToString = new ASCIIEncoding().GetString(data);
byte command = 0;
if (dataToString.Contains("relayoff"))
command = 1;

string[]Stringprocessed=dataToString.Split(','); //"407,102,relayoff"

int usertemp = Convert.ToInt32(Stringprocessed[0]);   //usertemp=407 
int devicetemp = Convert.ToInt32(Stringprocessed[1]);

设备终端插座的数据:

数据:16进制数  7c xxxxxxxxx7c  中间有7d 01 和7d 02 需要转义

注册命令:0x7e 0x7e userid deviceid    解释:userid也是整型,两个字节

 rec_ThreePhase[20] = (double)(data[i + 6] * 256 * 256 * 256 + data[i + 7] * 256 * 256 + data[i + 8] * 256 + data[i + 9])/100;//energy   当data[6],7,8,9都是0xff时,写入数据库的rec_ThreePhase[20] 值为-0.01

原文地址:https://www.cnblogs.com/fyp7077/p/7639493.html