⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crccheck.java

📁 演示CRC校验
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.Applet;

public class CRCCheck extends JFrame implements ActionListener {
	JButton clearBtn,ranBtn,codeBtn;
	JButton[] inBtn,outBtn;
	int[] ranArray,giveArray,tempArray; 
	//=========================构造
	CRCCheck (String title) {
		super(title);
		Container container = getContentPane();
		container.setLayout(new GridLayout(3,1));
		
		JPanel panel1 = new JPanel(new GridLayout(1,15));
		JPanel panel2 = new JPanel();
		
		inBtn = new JButton[10];
		for (int i = 0; i<10; i++) {
			int j = (int)(Math.random()*2);
			inBtn[i] = new JButton(String.valueOf(j));
			inBtn[i].addActionListener(this);
			panel1.add(inBtn[i]);
		}
		
		outBtn = new JButton[5];
		for (int i = 0; i<5; i++) {
			outBtn[i] = new JButton("0");
			outBtn[i].setBackground(new Color(50,50,100));
			outBtn[i].setEnabled(false);
			panel1.add(outBtn[i]);
		}
		
		JLabel label = new JLabel("选定的多项式比特序列:110101");
		JLabel head = new JLabel("[CRC校验]");
		clearBtn = new JButton("清零");
		clearBtn.addActionListener(this);
		ranBtn = new JButton("随机");
		ranBtn.addActionListener(this);
		codeBtn = new JButton("编码");
		codeBtn.addActionListener(this);
		
		panel2.add(label);
		panel2.add(clearBtn);
		panel2.add(ranBtn);
		panel2.add(codeBtn);
		
		container.add(head);
		container.add(panel1);
		container.add(panel2);
		
		ranArray = new int[16];
		giveArray =new int[6];
	
		giveArray[0] = 1;
		giveArray[1] = 1;
		giveArray[2] = 0;
		giveArray[3] = 1;
		giveArray[4] = 0;
		giveArray[5] = 1;
			
		this.pack();	
		setSize(this.getPreferredSize());	
		setVisible(true);		
	}

	void initArray() {
		for (int i = 0; i<ranArray.length; i++) {
			if(i<inBtn.length)
				ranArray[i] = Integer.valueOf(inBtn[i].getText());
			else	
				ranArray[i] = 0;
		//	System.out.println(ranArray[i]);
		}
			
	}
	
	int getStart() {
		int i=0;
		while(i<16&&ranArray[i]==0)	
			i++;		
		return i;	
	}

	void check() {
		int i,pos;
		initArray();
		while((pos=getStart())<10) 
			for(i=0;i<6;i++,pos++)	
				ranArray[pos]^=giveArray[i];
	}

	public void actionPerformed(ActionEvent e) {
	   //==================清零
	  if (e.getSource() == clearBtn) {
	  	for (int i = 0; i<inBtn.length; i++) {
	  		if(i<5)outBtn[i].setText("0");
	  		inBtn[i].setText("0");
	  	}	
	  }	
	 
	  //==================随机
	  if (e.getSource() == ranBtn) {
	  	for (int i = 0; i<inBtn.length; i++) {
	  		int j = (int)(Math.random()*2);
	  		if(i<5)outBtn[i].setText("0");
	  		inBtn[i].setText(String.valueOf(j));
	  	}	
	  }
	  
	  //==================编码
	  if (e.getSource() == codeBtn) {
	  	check();
	  	for (int i = 0; i<outBtn.length; i++) {
			outBtn[i].setText(String.valueOf(ranArray[i+10])); 
	  	}	
	  }
	  
	  //===================0,1转换
	  if (e.getActionCommand() == "0")	{
	  		((JButton)e.getSource()).setText("1");
	  				 			
	  } else {
	  		((JButton)e.getSource()).setText("0");
			clearBtn.setText("清零");
			ranBtn.setText("随机");
			codeBtn.setText("编码");
	  }
	}
	
	public static void main(String[] args) {
		new CRCCheck("040824410-CRC");
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -