资源简介
网上没搜到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
- 上一篇:非常实用的QQ在线客服
- 下一篇:蚂蚁S9T9矿机控制板原理图
相关资源
- 联想y470无线网卡驱动 for 32位64位
- JDK8 绿色版 免安装版 64位
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- Qt 读取16进制的data文件
- Win7 64位下不能运行dos 命令的原因
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- win10 64位下编译的opencv4.5.5库,opencv
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- H310.B360.H370.Z390.USB WIN7 64位第三方驱动
- librdkafka win7 64位 vs2015编译Release版本
- Notepad++最新版tidy2插件仅64位可用
- notepad++文本比较插件32位和64位
- ILASM32位 + 64位
- MTP USB驱动win7 32+64位可用版
- elite4 2.x驱动(解决加密狗驱动丢失问
- 富士通dpk8300E+驱动for win7 64位驱动
评论
共有 条评论