• 大小: 80KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: 其他
  • 标签: libmodbus  64位  qt  

资源简介

网上没搜到64位的libmodbus,索性自己用QT(VS2017)编译了一个。 注:32位的git上下载后很容易编译,所以资源仅包含64位的。如有需要,欢迎下载。

资源截图

代码片段和文件信息

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

#include 

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

#include 
#include 

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

#include 

#include “modbus.h“
#pragma comment (lib“ws2_32.lib“)

#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 by

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4959  2020-05-04 20:58  Modbus\config.h

     文件      93696  2020-05-07 22:25  Modbus\debug\Modbus.dll

     文件      16080  2020-05-06 21:55  Modbus\debug\Modbus.lib

     文件       5345  2020-05-06 21:36  Modbus\modbus-data.c

     文件       3444  2020-05-07 22:02  Modbus\modbus-private.h

     文件       1635  2019-08-02 23:25  Modbus\modbus-rtu-private.h

     文件      36887  2020-05-07 22:14  Modbus\modbus-rtu.c

     文件       1207  2019-08-02 23:25  Modbus\modbus-rtu.h

     文件       1278  2020-05-07 22:03  Modbus\modbus-tcp-private.h

     文件      22881  2020-05-07 22:22  Modbus\modbus-tcp.c

     文件       1402  2020-05-07 22:22  Modbus\modbus-tcp.h

     文件       2177  2020-05-04 20:58  Modbus\modbus-version.h

     文件      58241  2020-05-07 22:05  Modbus\modbus.c

     文件      11230  2020-05-07 22:05  Modbus\modbus.h

     文件       1322  2020-05-06 21:54  Modbus\Modbus.pro

     文件      39936  2020-05-07 22:25  Modbus\release\Modbus.dll

     文件      16080  2020-05-06 21:55  Modbus\release\Modbus.lib

     目录          0  2020-05-07 22:25  Modbus\debug

     目录          0  2020-05-07 22:26  Modbus\release

     目录          0  2020-05-07 22:25  Modbus

----------- ---------  ---------- -----  ----

               317800                    20


评论

共有 条评论