Modbus TCP源代码,java实现

27 篇文章 0 订阅
27 篇文章 0 订阅

============================================================

test3.java - JAVA program to read registers

============================================================

// test3.java 7/23/97 - JAVA program to read registers via gateway

// compile as

// javac test3.java

// run as

// java test3 aswales1.modicon.com 1 2 3

import java.io.* ;

import java.net.* ;

import java.util.*;

class test3 {

public static void main(String argv[]) {

if (argv.length < 4) {

System.out.println("usage: java test3 dns_name unit reg_no num_regs");

System.out.println("eg java test3 aswales8.modicon.com 5 0 10");

return;

}

try {

String ip_adrs = argv[0];

int unit = Integer.parseInt(argv[1]);

int reg_no = Integer.parseInt(argv[2]);

int num_regs = Integer.parseInt(argv[3]);

System.out.println("ip_adrs = "+ip_adrs+" unit = "+unit+" reg_no = "+

reg_no+" num_regs = "+num_regs);

// set up socket

Socket es = new Socket(ip_adrs,502);

OutputStream os= es.getOutputStream();

FilterInputStream is = new BufferedInputStream(es.getInputStream());

byte obuf[] = new byte[261];

byte ibuf[] = new byte[261];

int c = 0;

int i;

// build request of form 0 0 0 0 0 6 ui 3 rr rr nn nn

for (i=0;i<5;i++) obuf[i] = 0;

obuf[5] = 6;

obuf[6] = (byte)unit;

obuf[7] = 3;

obuf[8] = (byte)(reg_no >> 8);

obuf[9] = (byte)(reg_no & 0xff);

obuf[10] = (byte)(num_regs >> 8);

obuf[11] = (byte)(num_regs & 0xff);

// send request

os.write(obuf, 0, 12);

// read response

i = is.read(ibuf, 0, 261);

if (i<9) {

if (i==0) {

System.out.println("unexpected close of connection at remote end");

} else {

System.out.println("response was too short - "+i+" chars");

}

} else if (0 != (ibuf[7] & 0x80)) {

System.out.println("Modbus exception response - type "+ibuf[8]);

} else if (i != (9+2*num_regs)) {

System.out.println("incorrect response size is "+i+" expected "+(9+2*num_regs));

} else {

for (i=0;i<num_regs;i++) {

int w = (ibuf[9+i+i]<<8) + ibuf[10+i+i];

System.out.println("word "+i+" = "+w);

}

}

// close down

es.close();

} catch (Exception e) {

System.out.println("exception :"+e);

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值