资源简介
网上没搜到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矿机控制板原理图
相关资源
- qt翻页效果
- Qt Thread code
- SlidingWindow
- qt5.5做的记事本
- Qt5 科学计算器的实现
- 整合32位、64位的win7到一个光盘ISO镜像
- Qt多网卡组播问题解决方法
- Qt5读取串口数据
- centos-6.4-x86_64位百度云链接
- PyQt非常好的资料
- 迷宫及最短路径遍历QT程序
- QFTP类实现FTP上传、、删除文件及文件
- QT后台监控鼠标侧键
- Qt下基于snap7西门子PLC通信.zip
- Qt类向导ClassWizardExample
- windows下的tftp服务器和客户端软件包含
- autopressmouse.rar
- Qt 右下角弹出框
- Qt4图片缩放应用程序
- Qt 坐标轴控件
- ICOFormat(32位+64位)
- Qt的卡拉OK效果
- Qt双滑块QxtSpanSlider测试代码
- QT 开启线程接收串口数据并由主线程
- QT皮肤界面
- 画图软件qt实现
- QT调用有道翻译API_在线英汉词典
- MainWindowAndQml.rar
- qtcharts实现在UI界面绘制图形
- Qt+Opencv实现四步相移
评论
共有 条评论