資源簡介
網上沒搜到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?<????}
}
/*?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?????????dest[i]?=?tab_byte[(i?-?idx)?/?8]?&?(1?<????????/*?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?????????value?|=?(src[idx+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
- 上一篇:非常實用的QQ在線客服
- 下一篇:螞蟻S9T9礦機控制板原理圖
評論
共有 條評論