package com.hanheng.a53.dotarray;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.regex.Pattern;
public class FontClass implements Runnable{
private byte[][] fontCodes;
private String content;
private int showTime;
private static FontClass instance = new FontClass();
public static FontClass getInstance() {
if(instance==null) {
instance = new FontClass();
}
return instance;
}
private FontClass() {
this.setContent("系统对用户进行了分级管理");
this.setShowTime(3);
}
public void startService() {
DotArrayClass.Init();
new Thread(this).start();
}
public void stopService() {
DotArrayClass.Exit();
}
@Override
public void run() {
for(int i=0;i<this.fontCodes.length;i++) {
final int no = i;
new Thread(new Runnable() {
public void run() {
DotArrayClass.DotShow(rearrange(printCode(fontCodes[no],true,false)));
}
}).start();
try {
Thread.sleep(this.showTime*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/**
* 获取汉字字模编码,编码方式: 阴码,逐行,顺向
* @param str 待取模汉字,仅限于汉字
* @return 字模编码,二维字节数组,每一行对应一个汉字的编码,输入非汉字字符串返回null
*/
public byte[][] Str2ByteArr(String str){
if(!Pattern.matches("^[\\u4e00-\\u9fa5]+$", str)) {
str = "非法字符";
System.out.println(str);
}
try {
InputStream is = getClass().getResourceAsStream(("/assets/hzk16s"));
byte[] buffer = new byte[is.available()];
int b = 0,k=0;
while((b=is.read())!=-1) {
buffer[k] = (byte) b;
k++;
}
is.close();
byte[] str2byte = str.getBytes("GB2312");
int len = str2byte.length/2;
byte[][] result = new byte[len][32];
for(int i=0;i<len;i++) {
int offset = (94*((str2byte[i*2]&0xFF)-161)+(str2byte[i*2+1]&0xFF)-161)*32;
result[i] = Arrays.copyOfRange(buffer, offset,offset+32);
}
return result;
}catch(IOException e) {
return null;
}
}
/**
* 阴码,逐行,顺向编码打印到控制台
* @param code 阴码,逐行,顺向编码
* @param p 是否在控制台打印
* @param yy false:阴码,true:阳码
* @return 阴码/阳码 逐行,顺向数组,元素为0/1
*/
public int[][] printCode(byte[] code,boolean p,boolean yy) {
int[][] arr = new int[16][16];
byte[] buffer = Arrays.copyOf(code, 32);
for(int k=0; k<16; k++){
for(int j=0; j<2; j++){
int v = buffer[k*2+j]&0xFF;
for(int i=0; i<8; i++){
if(p)
System.out.print((v>>(7-i))%2==1?"● ":"○ ");
if(yy) {
arr[k][j*8+i] = (v>>(7-i))%2==1?0:1;
}else {
arr[k][j*8+i] = (v>>(7-i))%2==1?1:0;
}
}
}
if(p)
System.out.println();
}
if(p)
System.out.println();
return arr;
}
/**
* 重新排列字模编码:阴码,逐行,顺向-->阴码,逐列,逆向
* @param code 阴码,逐行,顺向编码
* @return 阴码,逐列,逆向编码
*/
public byte[] rearrange(int[][] arr) {
byte[] code = new byte[32];
for(int i=0;i<16;i++) {
int a=0,b=0;
for(int j=0;j<8;j++) {
a+=arr[j][i]<<j;
b+=arr[j+8][i]<<j;
}
code[i*2] = (byte) a;
code[i*2+1] = (byte)b;
}
return code;
}
/**
* 重新排列字模编码:阴码,逐行,顺向-->阴码,逐列,顺向
* @param code 阴码,逐行,顺向编码
* @return 阴码,逐列,顺向编码
*/
public byte[] rearrange1(int[][] arr) {
byte[] code = new byte[32];
for(int i=0;i<16;i++) {
int a=0,b=0;
for(int j=0;j<8;j++) {
a+=arr[j][i]<<(7-j);
b+=arr[j+8][i]<<(7-j);
}
code[i*2] = (byte) a;
code[i*2+1] = (byte)b;
}
return code;
}
public String getHexString(byte[] bt){
String HEX = "01234567890ABCDEF";
StringBuffer sb = new StringBuffer();
for(int i=0,len=bt.length;i<len;i++){
int num = 0;
num = (bt[i] & 0xFF);
sb.append(HEX.charAt(num>>4));
sb.append(HEX.charAt(num%16));
sb.append(" ");
}
return sb.toString();
}
public byte[][] getFontCodes() {
return fontCodes;
}
public String getContent() {
return content;
}
public byte[][] setContent(String content) {
this.content = content;
this.fontCodes = Str2ByteArr(content);
return this.fontCodes;
}
public int getShowTime() {
return showTime;
}
public void setShowTime(int showTime) {
this.showTime = showTime;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
JNI源码和动态库实验参考.rar_JNI源码_和动态库_实验参考
共61个文件
so:42个
java:7个
h:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 99 浏览量
2022-09-24
10:35:21
上传
评论
收藏 174KB RAR 举报
温馨提示
内含JNI的源码和动态库,其他的我也不知道该怎么说诶
资源推荐
资源详情
资源评论
收起资源包目录
JNI源码和动态库实验参考.rar (61个子文件)
JNI源码和动态库实验参考
seg7
source
Seg7Class.c 3KB
Seg7Class.java 279B
Seg7Class.h 1KB
libs
armeabi-v7a
libseg7-jni.so 13KB
x86_64
libseg7-jni.so 6KB
armeabi
libseg7-jni.so 17KB
arm64-v8a
libseg7-jni.so 6KB
x86
libseg7-jni.so 5KB
mips64
libseg7-jni.so 10KB
mips
libseg7-jni.so 6KB
dotArray
source
FontClass.java 5KB
DotArrayClass.c 12KB
DotArrayClass.h 1KB
DotArrayClass.java 329B
libs
armeabi-v7a
libdotArray-jni.so 17KB
x86_64
libdotArray-jni.so 14KB
armeabi
libdotArray-jni.so 17KB
arm64-v8a
libdotArray-jni.so 14KB
x86
libdotArray-jni.so 13KB
mips64
libdotArray-jni.so 19KB
mips
libdotArray-jni.so 70KB
beep
source
BeepClass.c 2KB
BeepClass.java 288B
BeepClass.h 1KB
libs
armeabi-v7a
libbeep-jni.so 13KB
x86_64
libbeep-jni.so 6KB
armeabi
libbeep-jni.so 13KB
arm64-v8a
libbeep-jni.so 6KB
x86
libbeep-jni.so 5KB
mips64
libbeep-jni.so 6KB
mips
libbeep-jni.so 6KB
relay
source
RelayClass.java 306B
RelayClass.h 1KB
RelayClass.c 2KB
libs
armeabi-v7a
librelay-jni.so 13KB
x86_64
librelay-jni.so 6KB
armeabi
librelay-jni.so 13KB
arm64-v8a
librelay-jni.so 6KB
x86
librelay-jni.so 5KB
mips64
librelay-jni.so 6KB
mips
librelay-jni.so 6KB
led
source
LedClass.java 296B
LedClass.c 2KB
LedClass.h 1KB
libs
armeabi-v7a
libled-jni.so 13KB
x86_64
libled-jni.so 6KB
armeabi
libled-jni.so 13KB
arm64-v8a
libled-jni.so 6KB
x86
libled-jni.so 5KB
mips64
libled-jni.so 6KB
mips
libled-jni.so 6KB
dip
source
DipClass.h 1KB
DipClass.c 6KB
DipClass.java 269B
libs
armeabi-v7a
libdip-jni.so 13KB
x86_64
libdip-jni.so 10KB
armeabi
libdip-jni.so 13KB
arm64-v8a
libdip-jni.so 10KB
x86
libdip-jni.so 9KB
mips64
libdip-jni.so 11KB
mips
libdip-jni.so 70KB
共 61 条
- 1
资源评论
周楷雯
- 粉丝: 78
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- 【ERP标准流程-标准流程-进货管理】(DOC 17页).doc
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- Java爬虫项目【项目开发计划】(共12页).docx
- 11111111111
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功