libmodbus的移植

来源:互联网 发布:交易平台php源码 编辑:程序博客网 时间:2024/06/12 18:26

/**************************************************/

author: fulinux

e-mail: fulinux@sina.com

csdn blog: http://blog.csdn.net/fulinus

/**************************************************/

libmodbus的移植的过程中,要注意几点:

第一,在交叉编译器是最好加上--prefix参数,叫相关的库直接集中起来,方便拷贝到开发板相应的目录中去;

嵌入式开发板:./configure --build=i686 --host=arm-none-linux-gnueabi --enable-static --prefix=/root/libmodbus-3.1.1/install/ && make install

PC上运行    :./configure && make install


第二,如果在嵌入式开发板上运行类似unit-test-xxx测试程序时,首先要测试tcp的就要修改两个文件中的IP地址,默认是回环测试的,其次要测试rtu的就要修改两个文件中的串口设备文件名,嵌入式开发板上一般是ttySx,具体是哪个就看自己的板子了,可以一个个测试,PC上一般是ttyUSB0(如果是虚拟机的话,确保串口是在虚拟机中,而不是主机中);

unit-test-server.c

    if (use_backend == TCP) {        ctx = modbus_new_tcp("192.168.169.209", 1502);        query = malloc(MODBUS_TCP_MAX_ADU_LENGTH);    } else if (use_backend == TCP_PI) {        ctx = modbus_new_tcp_pi("::0", "1502");        query = malloc(MODBUS_TCP_MAX_ADU_LENGTH);    } else {        ctx = modbus_new_rtu("/dev/ttyS1", 115200, 'N', 8, 1);        modbus_set_slave(ctx, SERVER_ID);        query = malloc(MODBUS_RTU_MAX_ADU_LENGTH);    }

unit-test-client.c

if (use_backend == TCP) {        ctx = modbus_new_tcp("192.168.169.209", 1502);    } else if (use_backend == TCP_PI) {        ctx = modbus_new_tcp_pi("::1", "1502");    } else {        ctx = modbus_new_rtu("/dev/ttyUSB0", 115200, 'N', 8, 1);    }



第三,在test目录下的类似unit-test-server这个不是可执行文件,而是一个脚本,他会调用test目录下的.lib/下的unit-test-server可执行文件。在PC中需要执行对应的脚本文件,而在嵌入式平台上却是执行可执行文件;下面是rtu的测试结果:

嵌入式平台:



PC上面:




3 0
原创粉丝点击