我有一个可以读取 GS1-DataMatrix 码的手持式扫描仪(就像超市里的那种)。我可以在 Notepad++ 中扫描代码,我可以看到 FNC1 字符被传输(2210 之前的GS,HEX 中的 1D - 第一张图像)
现在我正在尝试从 Java 读取相同的 GS1 代码,但无法正常工作,Java 看不到 FNC1。在 Java 中,我只看到“01095011010209171719050810ABCD12342110”。我将字符串转换为十六进制,但结果是一样的,FNC1 也不在十六进制中(第二张图片)。
这是测试代码:
package gs1.datamatrix;
import java.awt.Font;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
public class GS1DataMatrix {
public static void main(String[] args) {
JFrame f=new JFrame();//creating instance of JFrame
Font font = new Font("Courier New", Font.PLAIN, 16);
JTextArea jtf2 = new JTextArea(); // used to hold the HEX data
jtf2.setBounds(10,250,900, 200);
jtf2.setFont( font.deriveFont( 24.0f) );
jtf2.setLineWrap(true);
f.add(jtf2);//adding button in JFrame
JTextArea jtf1 = new JTextArea(); // scan area for the DataMatrix scanner
jtf1.setBounds(10,10,900, 200);
jtf1.setFont( font.deriveFont( 24.0f) );
jtf1.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) { update(e); }
@Override
public void removeUpdate(DocumentEvent e) { update(e); }
第一张图片:这是 Notepad++ 读取 FNC1(黑色背景上的GS特殊字符)的方式:
第二张图片:这是 Java 结果:
第三张图片:Notepad++ 十六进制转储在每次扫描时将 FNC1 显示为十六进制中的一维:
后来编辑 我认为我的原始帖子引起了混淆:我不解析图像,扫描仪内置了为我执行此操作的硬件,我只收到文本和一些特殊字符(FNC1)。
富国沪深
相关分类