资源简介
亲测windows7下可用
代码片段和文件信息
#include
#ifndef _MSC_VER
#include
#endif
#include
#include
#include
#include “modbus.h“
#define LOOP 1
#define SERVER_ID 17
#define ADDRESS_START 0
#define ADDRESS_END 99
int main(void)
{
modbus_t *ctx;
int rc;
int nb_fail;
int nb_loop;
int addr;
int nb;
uint8_t *tab_rq_bits;
uint8_t *tab_rp_bits;
uint16_t *tab_rq_registers;
uint16_t *tab_rw_rq_registers;
uint16_t *tab_rp_registers;
ctx = modbus_new_rtu(“COM3“ 19200 ‘N‘ 8 1);
modbus_set_slave(ctx SERVER_ID);
modbus_set_debug(ctx TRUE);
if(modbus_connect(ctx)==-1)
{
fprintf(stderr “Connection failed: %s\n“
modbus_strerror(errno));
modbus_free(ctx);
return -1;
}
nb = ADDRESS_END-ADDRESS_START;
tab_rq_bits = (uint8_t *)malloc(nb * sizeof(uint8_t));
memset(tab_rq_bits 0 nb * sizeof(uint8_t));
tab_rp_bits = (uint8_t *)malloc(nb * sizeof(uint8_t));
memset(tab_rp_bits 0 nb * sizeof(uint8_t));
tab_rq_registers = (uint16_t *)malloc(nb * sizeof(uint16_t));
memset(tab_rq_registers 0 nb * sizeof(uint16_t));
tab_rp_registers = (uint16_t *)malloc(nb * sizeof(uint16_t));
memset(tab_rp_registers 0 nb * sizeof(uint16_t));
tab_rw_rq_registers = (uint16_t *)malloc(nb * sizeof(uint16_t));
memset(tab_rw_rq_registers 0 nb * sizeof(uint16_t));
nb_loop = nb_fail = 0;
while(nb_loop++ {
for(addr = ADDRESS_START; addr < ADDRESS_END;addr++)
{
int i;
for(i=0; i {
tab_rq_registers[i] =
(uint16_t)(65535.0*rand()/(RAND_MAX+1.0));
tab_rw_rq_registers[i]=~tab_rq_registers[i];
tab_rq_bits[i] = tab_rq_registers[i] % 2;
}
nb = ADDRESS_END - addr;
rc = modbus_write_bit(ctx addr tab_rq_bits[0]);
if(rc!=1)
{
printf(“ERROR modbus_write_bit (%d)\n“ rc);
printf(“Address = %d value = %d\n“ addr tab_rq_bits[0]);
nb_fail++;
}
else
{
rc = modbus_read_bits(ctx addr 1 tab_rp_bits);
if(rc!= 1 || tab_rq_bits[0]!=tab_rp_bits[0])
{
printf(“ERROR modbus_read_bits single (%d)\n“ rc);
printf(“address = %d\n“ addr);
nb_fail++;
}
}
rc = modbus_write_bits(ctx addr nb tab_rq_bits);
if(rc != nb)
{
printf(“ERROR modbus_write_bits (%d)\n“ rc);
printf(“Address = %d nb = %d\n“ addr nb);
nb_fail++;
}
else
{
rc = modbus_read_bits(ctx addr nb tab_rp_bits);
if(rc != nb)
{
printf(“ERROR modbus_read_bits\n“);
printf(“Address = %d nb = %d\n“ addr nb);
nb_fail++;
}
else
{
for(i=0;i {
if(tab_rp_bits[i] != tab_rq_bits[i])
{
printf(“ERROR modbus_read_bits\n“);
printf(“Addr=%d Val=%d(0x%X) != %d (0x%x)\n“
addr tab_rq_bits[i] tab_rq_bits[i]
tab_rp_bits[i] tab_rp_bits[i]);
nb_fail+
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-06-29 09:56 TestRtuMaster\
目录 0 2017-06-29 09:05 TestRtuMaster\Debug\
文件 32256 2017-06-20 13:04 TestRtuMaster\Debug\TestRtuMaster.exe
文件 406 2017-06-20 13:04 TestRtuMaster\Debug\TestRtuMaster.exe.manifest
文件 363372 2017-06-20 13:04 TestRtuMaster\Debug\TestRtuMaster.ilk
文件 445440 2017-06-20 13:04 TestRtuMaster\Debug\TestRtuMaster.pdb
目录 0 2017-06-29 09:46 TestRtuMaster\Release\
文件 9728 2017-06-29 09:46 TestRtuMaster\Release\TestRtuMaster.exe
文件 289792 2017-06-29 09:46 TestRtuMaster\Release\TestRtuMaster.pdb
目录 0 2017-06-29 09:05 TestRtuMaster\TestRtuMaster\
目录 0 2017-06-29 09:05 TestRtuMaster\TestRtuMaster\Debug\
文件 15230 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\CL.read.1.tlog
文件 354 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\CL.write.1.tlog
文件 1034 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\TestRtuMaster.Build.CppClean.log
文件 381 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\TestRtuMaster.exe.intermediate.manifest
文件 51 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\TestRtuMaster.lastbuildstate
文件 2133 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\TestRtuMaster.log
文件 39304 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\TestRtuMaster.obj
文件 0 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\TestRtuMaster.write.1.tlog
文件 674 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\cl.command.1.tlog
文件 1388 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\li
文件 2800 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\li
文件 692 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\li
文件 450 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\mt.command.1.tlog
文件 174 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\mt.read.1.tlog
文件 290 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\mt.write.1.tlog
文件 396288 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\vc100.idb
文件 110592 2017-06-20 13:04 TestRtuMaster\TestRtuMaster\Debug\vc100.pdb
目录 0 2017-06-29 09:46 TestRtuMaster\TestRtuMaster\Release\
文件 15386 2017-06-29 09:46 TestRtuMaster\TestRtuMaster\Release\CL.read.1.tlog
文件 362 2017-06-29 09:46 TestRtuMaster\TestRtuMaster\Release\CL.write.1.tlog
............此处省略32个文件信息
相关资源
- Windows下基于ModbusRtu的Slave端开发C语言
- C++编写基于TCP/IP的Modbus网络通讯工具
- MODBUS协议主从机程序
- Quartus II 12.0 license完全破解文件
- 组态王modbus协议驱动vc++
- modbus 客户端主站C++源代码
- modbus tcp/rtu客户端服务端通讯程序合集
- VC++串口modbus测试工程
- stm32实现MODBUS-MODBUS做主站
- 火牛跑马灯实验(火牛开发板-UGPIO)
- modscan32(可用于modbus 测试)
- STM32 modbus协议 从机程序
- 基于MODBUS RTU MFC上位机软件
- modbus串口从机程序基于libmodbus,《M
- C语言的Modbus RTU程序各种实现方法
- 基于Windows的Modbus/TCP服务器
- c语言实现 通过rs232可实现上位机和下
- Quartus 17.1 正式版和pro版 破解器/注册
- Quartus_18.0_链接和破解器Windows+Linux版
- 51单片机Modbus协议
- MODBUS TCP SERVER 源码
- c++ MODBUS串行通信程序
- MODBUS--ASCII方式实现完整版
- MFC modBus 读写串口
- C语言编写modbus
- Modbus源码(PIC单片机版)
- STC15的modbus程序
- 原创modbus 协议c实现 C 语言 实现功能
- 最全CRC16计算代码(包含直接计算和查
- VS2013开发的MFC下的Modbus RTU
评论
共有 条评论