新图文基本通信协议

本文详细介绍了针对不同通信类型的指令构造方法,包括RS232串口、网络及服务器通信方式。通过具体的代码示例展示了如何为每种通信类型生成对应的查询亮度指令,并涉及了校验和计算及字节序列组装过程。
if ( m_nComType == COMMDATA_TYPE_RS232 )
{
bybuf[nLen++] = 0x68;
bybuf[nLen++] =0x32;
bybuf[nLen++]= 0xff;
bybuf[nLen++]= 0x46;//亮度查询

bybuf[nLen++]= 0x01;

bybuf[nLen++]= 0x01;

wdCheckNum = CheckNum( bybuf , nLen );
ushort2buf( bybuf + nLen , wdCheckNum );
nLen += 2;
}
else if( m_nComType == COMMDATA_TYPE_NetWork ) 
{
bybuf[ nLen++] =0xff;
bybuf[ nLen++] = 0xff;
bybuf[ nLen++ ] = 0xff;
bybuf[ nLen ++] = 0xff;
int nPos = nLen;
bybuf[ nLen++] = 0;//长度

bybuf[ nLen++ ] = 0;//长度;
bybuf[ nLen++ ] = 0;//这里应该也是长度
bybuf[ nLen++ ] = 0;//这里应该也是长度

int nLenBegin = nLen;
bybuf[nLen++] = 0x68;
bybuf[nLen++] =0x32;
bybuf[nLen++]=0xff;//控制卡ID

bybuf[nLen++]= 0x46;//亮度查询

bybuf[nLen++]= 0x01;
bybuf[nLen++]= 0x01;
wdCheckNum = CheckNum( bybuf +nLenBegin , nLen - nLenBegin );
ushort2buf( bybuf + nLen , wdCheckNum );
nLen += 2;
ushort2buf( bybuf + nPos , nLen - nLenBegin );
}

else if(m_nComType == COMMDATA_TYPE_LMSERVER)

{  

int nLen = 0;
byBuf[ nLen++ ] =0x00;//长度,低字节在前;len(2bytes)+DeviceID(6bytes)+原協議包. len包括“DeviceID(6bytes)+原協議包”的長度,低位在前,

byBuf[ nLen++] = 0x00;//长度;高字节在后
memset( &byBuf[ nLen ] , 0x01, 6 ); //服务器ID,我随便填的
nLen +=6;
int nLenPos = nLen;
//byBuf[ nLen ++] = 0xa5;//开始码
byBuf[ nLen ++] = 0x68;//包类型
byBuf[ nLen ++] = 0x32;//卡类型
byBuf[ nLen ++] = atoi( pPSign->GetID() );//卡ID
byBuf[ nLen ++] = 0x46;//命令码(CMD)
byBuf[ nLen ++] = 0x01;//返回标记

byBuf[ nLen ++] = 0x00;//设置亮度信息
int i = m_Arraylight->GetAt( 1 );
memset( &byBuf[nLen] , m_Arraylight->GetAt( 1 ) , 24 );
nLen +=24;
unsigned short unCheck = 0;
for ( int i = nLenPos ; i < nLen ; i ++ )
unCheck += byBuf[i];

byBuf[ nLen++ ] = (BYTE)unCheck;
byBuf[ nLen++ ] = unCheck>>8;
byBuf[ 0 ] = (BYTE)( nLen -2 );
byBuf[ 1 ] =(BYTE)( ( nLen -2 )>>8);
return nLen;


}
)

 

转载于:https://www.cnblogs.com/chenzuoyou/p/3469000.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值