java 串口调试 传感器指令发送与数据接收

    本文主要讲述串口调试的Java工具类,并实现循环发送指令,接收数据!!

    本文主要实现的功能是调用工具类中打开串口方法,连接传感器所在串口,向串口(传感器)发送指令,并接收串口(传感器)数据。

主函数-----main():

public static void main(String[] args){
		SerialTool st =SerialTool.getSerialTool();//实例化一个串口工具类对象
		String portName = "COM9";//传感器连接的串口
		int baudrate = 9600;//设置波特率
		List<String> portNameList = st.findPort();//查询所有可用串口
		for(int i=0;i<portNameList.size();i++) {
			System.out.println("可能串口:"+portNameList.get(i)); 
		}
		//打开串口	
		SerialPort serialPort = null;
		try {
			serialPort = st.openPort(portName, baudrate);//打开串口
		} catch (PortInUseException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		} catch (NoSuchPortException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		//解析指令
		List<Attribute> list = serialMessage.dealxml();
		while(true){//循环发送指令接收数据
			for (Attribute attr : list) {
				String order = attr.getValue();//获取指令
				order = order.replaceAll(" ", "");
				byte[] order1 = hexStringToByteArray(order);//十六进制转字节数组
				//发送数据
				st.sendToPort(serialPort, order1);
				try {
					Thread.sleep(2000);//休眠2秒
				} catch (InterruptedException e) {
					e.printStackTrace(); 
				}
				//读取数据
				byte[] shuju = st.readFromPort(serialPort);//读取传感器数据
				String s=bytesToHex(shuju);//字节数组转16进制
				System.out.println("传感器返回数据为:"+s);
				ProcessMethod.ZPFunction(s,order);
				try {
					Thread.sleep(5000);//休眠5秒
				} catch (InterruptedException e) {
					e.printStackTrace(); 
				}
			}
		}
}
	

 byte数组转16进制-----bytesToHex(byte[] bytes):

/**  
	 *  byte字节数组转16进制  
     */  
	public static String bytesToHex(byte[] bytes) {      
		StringBuffer sb = new StringBuffer();      
		for(int i = 0; i < bytes.length; i++) {          
			String hex = Integer.toHexString(bytes[i] & 0xFF);          
	
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值