博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android java 经典字符模式通信接收处理,标准modbus通讯协议接收处理提取数据
阅读量:2390 次
发布时间:2019-05-10

本文共 2607 字,大约阅读时间需要 8 分钟。

通信接收处理

一、字符

接收数据字符串格式:Te:xx Hu:xx GM:xxx CO:xxx \r\n

要提取上面这3个参数的值。

代码:

try {			if (smsg.endsWith("\r\n") &&smsg.length()>20) {				String s = "Te:";				if (smsg.contains(s)) {					int beginIndex = smsg.lastIndexOf(s);					int endIndex = smsg.indexOf(' ',beginIndex + s.length());					textView001.setText(smsg.substring(beginIndex + s.length(), endIndex));									}				s = "Hu:";				if (smsg.contains(s)) {					int beginIndex = smsg.lastIndexOf(s);// 761-754					int endIndex = smsg.indexOf(' ',beginIndex + s.length());					textView002.setText(smsg.substring(beginIndex + s.length(), endIndex));				}				s = "GM:";				if (smsg.contains(s)) {					int beginIndex = smsg.lastIndexOf(s);// 761-754					int endIndex = smsg.indexOf(' ',							beginIndex + s.length());					textView003.setText(smsg.substring(beginIndex + s.length(), endIndex));				}				s = "CO:";				if (smsg.contains(s)) {					int beginIndex = smsg.lastIndexOf(s);// 761-754					int endIndex = smsg.indexOf('\r',beginIndex + s.length());					textView004.setText(smsg.substring(beginIndex + s.length(), endIndex).replaceAll(" ", ""));				}					}				} catch (Exception e) {		}

二、十六进制

临时

// 接收数据线程	Thread ReadThread = new Thread() {		public void run() {			byte[] buffer = new byte[1];			bRun = true;			// 接收线程			while (true) {				try {					while (is.available() == 0) {						while (bRun == false) {						}					}					while (true) {						if (1 == is.read(buffer, 0, 1)) // 一个一个地接收,把需要的数据放在buffer_new中						{							if (num_new == 0) {								if (buffer[0] == Wka.add) {									buffer_new[num_new++] = buffer[0];								}							} else if (num_new == 1) {								buffer_new[num_new++] = buffer[0];							} else if (num_new < buffer_new[1]) {								buffer_new[num_new++] = buffer[0];							}							// smsg+=String.format("%02X ",buffer[0]);							// //转为十六进制格式 所有接收						}						// 接收处理最好放在线程中						if (num_new == buffer_new[1]) {							if ((buffer_new[num_new - 4] & 0xff) == 0xCC									&& (buffer_new[num_new - 3] & 0xff) == 0x33									&& (buffer_new[num_new - 2] & 0xff) == 0xC3									&& (buffer_new[num_new - 1] & 0xff) == 0x3C) {								Wka.jszt = buffer_new[3];								if (Wka.jszt == 0x1f)									Wka.ds++;								if (Wka.jszt == 0) //									Wka.pow_con = 0; // 更改状态								else									Wka.pow_con = 1;								Wka.temsj = buffer_new[17] & 0xff;								Wka.jserrno = buffer_new[16] & 0xff;							}							num_new = 0;						}						if (is.available() == 0)							break; // 短时间没有数据才跳出进行显示					}					// 发送显示消息,进行显示刷新					handler.sendMessage(handler.obtainMessage());				} catch (IOException e) {				}			}		}	};

标准modbus通讯协议接收处理

之前写的代码,打不到放那了。

转载地址:http://icaab.baihongyu.com/

你可能感兴趣的文章
Use Docker Engine plugins
查看>>
Using Gluster for a Distributed Docker Storage Volume
查看>>
有容云老司机带路, 使用Docker实现丝般顺滑的持续集成
查看>>
如何让Ubuntu系统支持WebP图片格式
查看>>
变态的静态资源缓存与更新(超详细好文)
查看>>
关于lvs均衡负载socket服务的配置实现
查看>>
Qt学习旅程(1)
查看>>
[转]CentOS 5.4挂载可读写NTFS
查看>>
SmartChineseAnalyzer的对中文开源社区是一大贡献
查看>>
[转]Apache Mahout 简介
查看>>
[转]分布式key-value存储方案介绍:Cassandra,LightCloud,TokyoCabinet
查看>>
[转]HDFS+MapReduce+Hive+HBase十分钟快速入门
查看>>
stdlib中的xmalloc,xfree,xinit_mempool
查看>>
关于Java Advanced Imaging(JAI)的一点积累
查看>>
Spirit越狱iPhone/iPod touch/iPad 3.1.3/3.2固件(Windows)
查看>>
[转]Adobe发布Puppet Recipes for Hadoop
查看>>
[转]mysql里not in语句怎么写
查看>>
outlook 2010 突破附件大小限制
查看>>
[转][Magick++] How to convert jpg image to raw 32 bit float
查看>>
[转]数据类型 -- uint32_t 类型
查看>>