结合VTS和BACnet协议栈源码分析Write Property读属性

本文主要探讨BACnet协议栈中Write Property操作的源码分析,重点关注wp.c文件中的编码和解码函数。通过结合VTS的BACnet Application Layer Detail,了解如何对具有写属性的PDU进行编码和解码,以实现数据的读取与写入。
摘要由CSDN通过智能技术生成

          协议栈主要是针对应用层的编码,因此我们只需要结合VTS中的 BACnet Application Layer Detail 来对源码进行分析,  写属性源文件是wp.c,

这个文件中一共包含以下函数:

int wp_encode_apdu( uint8_t * apdu, uint8_t invoke_id , BACNET_WRITE_PROPERTY_DATA * wpdata);

int wp_decode_service_request( uint8_t * apdu, unsigned apdu_len,  BACNET_WRITE_PROPERTY_DATA * wpdata);


        先看看第一个函数,这是一个发送写属性,对具有写属性的PDU进行编码的函数

int wp_encode_apdu(
    uint8_t * apdu,
    uint8_t invoke_id,
    BACNET_WRITE_PROPERTY_DATA * wpdata)
{
    int apdu_len = 0;   /* total length of the apdu, return value */
    int len = 0;        /* total length of the apdu, return value */

    if (apdu) {
        apdu[0] = PDU_TYPE_CONFIRMED_SERVICE_REQUEST;                                 
        apdu[1] = encode_max_segs_max_apdu(0, MAX_APDU);                              
        apdu[2] = invoke_id;                                                         
        apdu[3] = SERVICE_CONFIRMED_WRITE_PROPERTY;     /* service choice */          
        apdu_len = 4;
        len =
            encode_context_object_id(&apdu[apdu_len], 0, wpdata->object_type,
            wpdata->object_instance);
        apdu_len += len;
        len =
            encode_context_enumerated(&apdu[apdu_len], 1,
  
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值