📄 crccheck.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 + -