数据包格式及接收后拆包的分析,谢谢啦
解决方案 »
- C#调用JAVA的WebService如何进行SoapHeader认证
- cookie的问题
- List<>的强制类型转换问题
- 继续关注,请问怎样杜绝树形控件在展开或者取节点值的时候闪烁刷新
- 关于C#调用Media Player问题,急!!
- 跪求高手回答:计算机是如何判别中的“数据与指令”一下子好像还真想不明白
- SQL语句用count算出总记录数怎么赋值给一个变量?C#
- 求助:能帮忙看看我这个代码吗,有更好的方式吗?
- 如何批量去掉某一文件夹中,某些文件名的所以空格????
- 不要笑話我,我要C#學習的好書
- input string was not in a correct fomat?请各位高手帮忙解决这个异常
- 关于DateTime和string的转换
private bool DecodeCarInfo(byte[] m_ReceiveBuffer)
{
long longitude = 0,latitude = 0;
double lo = 0.0,la = 0.0;
byte status = 0;
long mdtid = 0;
int hour = 0,minute = 0,second = 0,speed = 0,nyear = 0,nmonth = 0,ndate = 0;
byte btByte,btDirection = 0;;
try
{
int nArrayPos = 1;
btByte = m_ReceiveBuffer[ nArrayPos++];
mdtid = mdtid | btByte;
mdtid = mdtid << 8;
btByte = m_ReceiveBuffer[ nArrayPos++];
mdtid = mdtid | btByte;
mdtid = mdtid << 8;
btByte = m_ReceiveBuffer[ nArrayPos++];
mdtid = mdtid | btByte;
mdtid = mdtid << 8;
btByte = m_ReceiveBuffer[ nArrayPos++];
mdtid = mdtid | btByte; //status
btByte = m_ReceiveBuffer[ nArrayPos++];
status =Convert.ToByte(status | btByte);
//longitude
for(int i = 0;i< 4;i++)
{
btByte = m_ReceiveBuffer[ nArrayPos++ ];
longitude = longitude | btByte;
if(i < 3)
longitude = longitude << 8;
}
lo = ((double)longitude / 10000000) ;
//latitude
for(int i = 0;i< 4;i++)
{
btByte = m_ReceiveBuffer[ nArrayPos++ ];
latitude = latitude | btByte;
if(i < 3)
latitude = latitude << 8;
}
la = ((double)latitude / 10000000) ;
//year
nyear = nyear | m_ReceiveBuffer[ nArrayPos++];
//month
nmonth = nmonth | m_ReceiveBuffer[ nArrayPos++];
if(nmonth > 12 || nmonth<1)
nmonth = 1;
//date
ndate = ndate | m_ReceiveBuffer[ nArrayPos++];
if(ndate > 31)
ndate = 1;
//hour
hour = hour | m_ReceiveBuffer[ nArrayPos++];
if(hour > 23)
hour = 0;
//minute
minute = minute | m_ReceiveBuffer[ nArrayPos++];
if(minute > 59)
minute = 0;
//second
second = second | m_ReceiveBuffer[ nArrayPos++];
if(second > 59)
second = 0; DateTime t = new DateTime(2000 + nyear, nmonth , ndate, hour, minute, second );
//speed modify 2003.03.10
// speed = speed | m_strBuffer[ 18];
btByte = m_ReceiveBuffer[ nArrayPos++];
speed = speed | btByte;
speed = speed << 8;
btByte = m_ReceiveBuffer[ nArrayPos++];
speed = speed | btByte; btDirection = m_ReceiveBuffer[ nArrayPos++]; tagCARREALTIMEINFO ci= new tagCARREALTIMEINFO();
ci.nMdtid = mdtid.ToString();
ci.dbLongitude = lo;
ci.dbLatitude = la;
ci.timeReportTime =t;
ci.nStatus = status;
ci.nSpeed =(short)(speed);
ci.btDirection = btDirection;
ci.btTradeID = ClsGlobalSocket.TRADE_TAXI;
#if DEBUG
Console.WriteLine("{0}:MDTID={1}\\坐标({2},{3})\\时间{4}\\当前时间{5}\\剩余[{6}\\{7}]",
m_ChinaDesc,ci.nMdtid,ci.dbLongitude,ci.dbLatitude,ci.timeReportTime,DateTime.Now,
m_CarMsgListA.Count,m_CarMsgListB.Count);
#endif
m_MsgAction.AddCarMsg(ci);
return true;
}
catch(Exception ex)
{
#if DEBUG
Console.WriteLine("{0}时错误{1} ",m_ChinaDesc, ex.ToString());
#endif
return false;
}
}