• 大小: 8.96MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-10
  • 语言: 其他
  • 标签: Modbus  

资源简介

完整的Modbus资料,看过从初学到应用。

资源截图

代码片段和文件信息

/*
 * Copyright © 2010-2011 Stéphane Raimbault 
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not write to the Free Software
 * Foundation Inc. 51 Franklin Street Fifth Floor Boston MA 02110-1301 USA
 */

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

/* 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 index const uint8_t value)
{
    int i;

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

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

    for (i = index; i < index + nb_bits; i++) {
        dest[i] = tab_byte[(i - index) / 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 index
                                  unsigned int nb_bits)
{
    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[index+i] << i);
    }

    return value;
}

/* Get a float from 4 bytes in Modbus format */
float modbus_get_float(const uint16_t *src)
{
    float f = 0.0f;
    uint32_t i;

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

    return f;
}

/* Set a float to 4 bytes in Modbus format */
void modbus_set_float(float f uint16_t *dest)
{
    uint32_t i = 0;

    memcpy(&i &f sizeof(uint32_t));
    dest[0] = (uint16_t)i;
    dest[1] = (uint16_t)(i >> 16);
}

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

     文件     168319  2005-11-29 11:19  Modbus详解\第一章:控制设备通信慨况.pdf

     文件     764121  2005-11-29 11:22  Modbus详解\第三章:以C++Builder设计 Modbus通信程序.pdf

     文件     381293  2005-11-29 11:21  Modbus详解\第二章:Modbus 通信协议说明.pdf

     文件     399974  2005-11-29 11:22  Modbus详解\第五章:Modbus通信最新发展.pdf

     文件     222073  2005-11-29 11:20  Modbus详解\第六章:使用Modbus注意要项.pdf

     文件    1195222  2005-11-29 11:37  Modbus详解\第四章:以PC based Controller设计Modbus通信程序.pdf

     文件       2181  2012-01-17 05:39  libmodbus-3.0.3源码库\acinclude.m4

     文件      35712  2012-05-26 07:14  libmodbus-3.0.3源码库\aclocal.m4

     文件        124  2011-09-10 04:29  libmodbus-3.0.3源码库\AUTHORS

     文件      44941  2012-05-26 07:14  libmodbus-3.0.3源码库\config.guess

     文件       4374  2012-05-26 07:14  libmodbus-3.0.3源码库\config.h.in

     文件      34423  2012-05-26 07:14  libmodbus-3.0.3源码库\config.sub

     文件     577475  2012-05-26 07:14  libmodbus-3.0.3源码库\configure

     文件       3903  2012-05-26 07:06  libmodbus-3.0.3源码库\configure.ac

     文件      35147  2010-10-15 21:37  libmodbus-3.0.3源码库\COPYING

     文件      26530  2011-09-10 04:29  libmodbus-3.0.3源码库\COPYING.LESSER

     文件      18615  2012-05-26 07:14  libmodbus-3.0.3源码库\depcomp

     文件       1232  2011-09-10 04:29  libmodbus-3.0.3源码库\doc\asciidoc.conf

     文件       9593  2012-05-26 07:19  libmodbus-3.0.3源码库\doc\libmodbus.7

     文件      19795  2012-05-26 07:19  libmodbus-3.0.3源码库\doc\libmodbus.html

     文件       7743  2012-05-20 05:54  libmodbus-3.0.3源码库\doc\libmodbus.txt

     文件       2213  2012-05-20 05:54  libmodbus-3.0.3源码库\doc\Makefile.am

     文件      18251  2012-05-26 07:14  libmodbus-3.0.3源码库\doc\Makefile.in

     文件       2158  2012-05-26 07:18  libmodbus-3.0.3源码库\doc\modbus_close.3

     文件      10842  2012-05-26 07:18  libmodbus-3.0.3源码库\doc\modbus_close.html

     文件        792  2011-09-10 04:29  libmodbus-3.0.3源码库\doc\modbus_close.txt

     文件       2349  2012-05-26 07:18  libmodbus-3.0.3源码库\doc\modbus_connect.3

     文件      10734  2012-05-26 07:18  libmodbus-3.0.3源码库\doc\modbus_connect.html

     文件        981  2011-09-10 04:29  libmodbus-3.0.3源码库\doc\modbus_connect.txt

     文件       1956  2012-05-26 07:19  libmodbus-3.0.3源码库\doc\modbus_flush.3

............此处省略190个文件信息

评论

共有 条评论