• 大小: 19.03MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-14
  • 语言: 其他
  • 标签: modbus  

资源简介

libmodbus的安装包,以及破解版本的Modbus Poll和Modbus Slave安装包,具体参考博文https://blog.csdn.net/qq_23670601/article/details/82112875

资源截图

代码片段和文件信息

/*
 * Copyright © 2010-2014 Stéphane Raimbault 
 *
 * SPDX-License-Identifier: LGPL-2.1+
 */

#include 

#ifndef _MSC_VER
#  include 
#else
#  include “stdint.h“
#endif

#include 
#include 

#if defined(_WIN32)
#  include 
#else
#  include 
#endif

#include 

#include “modbus.h“

#if defined(HAVE_BYTESWAP_H)
#  include 
#endif

#if defined(__APPLE__)
#  include 
#  define bswap_16 OSSwapInt16
#  define bswap_32 OSSwapInt32
#  define bswap_64 OSSwapInt64
#endif

#if defined(__GNUC__)
#  define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__ * 10)
#  if GCC_VERSION >= 430
// Since GCC >= 4.30 GCC provides __builtin_bswapXX() alternatives so we switch to them
#    undef bswap_32
#    define bswap_32 __builtin_bswap32
#  endif
#  if GCC_VERSION >= 480
#    undef bswap_16
#    define bswap_16 __builtin_bswap16
#  endif
#endif

#if defined(_MSC_VER) && (_MSC_VER >= 1400)
#  define bswap_32 _byteswap_ulong
#  define bswap_16 _byteswap_ushort
#endif

#if !defined(bswap_16)
#  warning “Fallback on C functions for bswap_16“
static inline uint16_t bswap_16(uint16_t x)
{
    return (x >> 8) | (x << 8);
}
#endif

#if !defined(bswap_32)
#  warning “Fallback on C functions for bswap_32“
static inline uint32_t bswap_32(uint32_t x)
{
    return (bswap_16(x & 0xffff) << 16) | (bswap_16(x >> 16));
}
#endif

/* Sets many bits from a single byte value (all 8 bits of the byte value are
   set) */
void modbus_set_bits_from_byte(uint8_t *dest int idx const uint8_t value)
{
    int i;

    for (i=0; i < 8; i++) {
        dest[idx+i] = (value & (1 << i)) ? 1 : 0;
    }
}

/* Sets many bits from a table of bytes (only the bits between idx and
   idx + nb_bits are set) */
void modbus_set_bits_from_bytes(uint8_t *dest int idx unsigned int nb_bits
                                const uint8_t *tab_byte)
{
    unsigned int i;
    int shift = 0;

    for (i = idx; i < idx + nb_bits; i++) {
        dest[i] = tab_byte[(i - idx) / 8] & (1 << shift) ? 1 : 0;
        /* gcc doesn‘t like: shift = (++shift) % 8; */
        shift++;
        shift %= 8;
    }
}

/* Gets the byte value from many bits.
   To obtain a full byte set nb_bits to 8. */
uint8_t modbus_get_byte_from_bits(const uint8_t *src int idx
                                  unsigned int nb_bits)
{
    unsigned int i;
    uint8_t value = 0;

    if (nb_bits > 8) {
        /* Assert is ignored if NDEBUG is set */
        assert(nb_bits < 8);
        nb_bits = 8;
    }

    for (i=0; i < nb_bits; i++) {
        value |= (src[idx+i] << i);
    }

    return value;
}

/* Get a float from 4 bytes (Modbus) without any conversion (ABCD) */
float modbus_get_float_abcd(const uint16_t *src)
{
    float f;
    uint32_t i;

    i = ntohl(((uint32_t)src[0] << 16) + src[1]);
    memcpy(&f &i sizeof(float));

    return f;
}

/* Get a float from 4 bytes (Modbus) in inversed format (DCBA) */
f

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-08-27 13:59  libmodbus-master\
     文件          96  2018-06-07 16:40  libmodbus-master\.dir-locals.el
     文件         575  2018-06-07 16:40  libmodbus-master\.gitignore
     文件         100  2018-06-07 16:40  libmodbus-master\.travis.yml
     文件         336  2018-06-07 16:40  libmodbus-master\AUTHORS
     文件        1256  2018-06-07 16:40  libmodbus-master\CONTRIBUTING.md
     文件       26530  2018-06-07 16:40  libmodbus-master\COPYING.LESSER
     文件        2731  2018-06-07 16:40  libmodbus-master\ISSUE_TEMPLATE.md
     文件        1780  2018-06-07 16:40  libmodbus-master\MIGRATION
     文件         307  2018-06-07 16:40  libmodbus-master\Makefile.am
     文件       21213  2018-06-07 16:40  libmodbus-master\NEWS
     文件        3347  2018-06-07 16:40  libmodbus-master\README.md
     文件        1489  2018-06-07 16:40  libmodbus-master\acinclude.m4
     文件         385  2018-06-07 16:40  libmodbus-master\autogen.sh
     文件        4912  2018-06-07 16:40  libmodbus-master\configure.ac
     目录           0  2018-08-27 13:59  libmodbus-master\doc\
     文件        2665  2018-06-07 16:40  libmodbus-master\doc\Makefile.am
     文件        1233  2018-06-07 16:40  libmodbus-master\doc\asciidoc.conf
     文件        9451  2018-06-07 16:40  libmodbus-master\doc\libmodbus.txt
     文件         792  2018-06-07 16:40  libmodbus-master\doc\modbus_close.txt
     文件         965  2018-06-07 16:40  libmodbus-master\doc\modbus_connect.txt
     文件         564  2018-06-07 16:40  libmodbus-master\doc\modbus_flush.txt
     文件         444  2018-06-07 16:40  libmodbus-master\doc\modbus_free.txt
     文件         764  2018-06-07 16:40  libmodbus-master\doc\modbus_get_byte_from_bits.txt
     文件         957  2018-06-07 16:40  libmodbus-master\doc\modbus_get_byte_timeout.txt
     文件         868  2018-06-07 16:40  libmodbus-master\doc\modbus_get_float.txt
     文件         830  2018-06-07 16:40  libmodbus-master\doc\modbus_get_float_abcd.txt
     文件         849  2018-06-07 16:40  libmodbus-master\doc\modbus_get_float_badc.txt
     文件         853  2018-06-07 16:40  libmodbus-master\doc\modbus_get_float_cdab.txt
     文件         862  2018-06-07 16:40  libmodbus-master\doc\modbus_get_float_dcba.txt
     文件         638  2018-06-07 16:40  libmodbus-master\doc\modbus_get_header_length.txt
............此处省略136个文件信息

评论

共有 条评论