package damtest;

import net.wimpi.modbus.util.BitVector;

public class damtest {
public static void main(String[] args) throws Exception{
		Test2();
    }
	public static void Test2() throws Exception
	{
		JYDAMEquip equip = new JYDAMEquip();
		
		//please input the real number of the channel
		int MaxDONum = 4;//继电器数量     必须是准确的设备端口数量，否则会访问失败
		int MaxDINum = 4;//光耦输入数量    必须是准确的设备端口数量，否则会访问失败
		int MaxAINum = 0;//模拟量输入通道数量  必须是准确的设备端口数量，否则会访问失败
		//初始化设备
		equip.Init("192.168.1.150", 10000, 254); //ip 端口为10000   254为设备的广播地址      
		equip.BeginConnect();	
		
		int cnt=0;
		while(true)
		{
			if(MaxDONum>0)
			{
				cnt++;
				if((cnt&0x01)==0x01)
				{
					System.out.println("打开第一路DO");
					equip.writeSignalDO(0, 1);//
				}
				else 
				{
					System.out.println("关闭第一路DO");
					equip.writeSignalDO(0, 0);//
				}					
			}
			
			//读取DO 继电器
			BitVector DOVal=null;
			if(MaxDONum>0)DOVal= equip.readDO(MaxDONum);
			Thread.sleep(100);
			//读取DI
			BitVector DIVal=null;
			if(MaxDINum>0) DIVal= equip.readDI(MaxDINum);
			Thread.sleep(100);
			//读取AI
			int[]     AIVal =null;
			if(MaxAINum>0)  AIVal= equip.readAI(MaxAINum);
			Thread.sleep(100);
			
			//部分打开 部分关闭
			BitVector SetDOVal= new BitVector(MaxDONum);
			for(int i=0;i<MaxDONum;i++)
                SetDOVal.setBit(i,(i&0x01)==0x01);
			equip.writeAllDO(0, SetDOVal);//
			Thread.sleep(1000);

			//部分关闭  部分打开
            BitVector SetDOVal2= new BitVector(MaxDONum);
            for(int i=0;i<MaxDONum;i++)
                SetDOVal2.setBit(i,(i&0x01)==0x00);
			equip.writeAllDO(0, SetDOVal2);//
            Thread.sleep(1000);
			
			
			if(MaxDONum>0)PrintfDODIVal("DO Status:",DOVal,MaxDONum);
			if(MaxDINum>0) PrintfDODIVal("DI Status:",DIVal,MaxDINum);
			if(MaxAINum>0)PrintfAIVal("AI Status:",AIVal);
			Thread.sleep(1000);
		}
		//注意，调试的时候 可能出现链接失败。请手动停止之前的调试。
		//equip.DisConnect();
	}
	
	public static void PrintfDODIVal(String prev,BitVector val,int size)
	{
		System.out.println(prev);
		if(val==null)return;
		for(int i=0;i<size;i++)
			System.out.print("  "+(val.getBit(i)?"1":"0"));
		System.out.println("");
		
	}
	public static void PrintfAIVal(String prev,int[] val)
	{
		System.out.println(prev);
		if(val==null)return;
		for(int i=0;i<val.length;i++)
			System.out.print(val[i]+"  ");
		System.out.println("");
	}
}
