将“按键”(如TAB)存储为条形码中的ASCII控制字符

5
我试图创建一个带有“TAB键”的条形码。 (似乎有些生成器使用~作为TAB键。)我阅读了Code128支持ASCII的信息,这意味着“HT”应该可以作为水平制表符起作用。但是我似乎无法让它起作用。我该如何在Code128中存储HT字符以解码为TAB键按下?
4个回答

11

生成一个包含ASCII控制字符的Code 128条形码

Code 128可以用来编码Latin-1字符集中的任何字符,包括ASCII控制字符(编号为0到31的字符)。

这是一个表示单个HT字符(ASCII值为9)的Code 128条形码:

Code 128 of "HT" character

内部编码使用代码集A,并包含以下代码字:

[103/START-A] [73/HT] [73/check-digit] [106/STOP]

扫描包含ASCII控制字符的条形码的常见影响

扫描任何类型的包含ASCII控制字符的条形码可能会由于条形码内容以多种方式提供给系统而无法产生预期的结果。每种方法都提供不同的配置方式,以确定如何向您的应用程序呈现控制代码。

硬件读取器可以配置为“键盘楔子”模式,其中该设备通过生成键盘扫描码来模拟物理键盘。在这种情况下,您通常可以配置设备在扫描前后提供特定的“键序列”,并提供从条形码中表示的Latin-1序数(0-255)到键盘接口读取的物理扫描码的映射。例如,在某个应用程序中,可能会选择将回车(ASCII 13)映射到向下箭头(5000)扫描码。此文本描述了ASCII控制字符和扫描码之间的关系。

另外,硬件或软件读取器可能使用驱动程序。使用此方法会有很多变化,但通常它们提供合成的RS232接口(可能通过USB),或者钩入操作系统的OLE子系统。在最基本的情况下,扫描条形码将等价于将一些文本粘贴到文本字段中-您可能需要设备/软件执行某种原始条形码数据的转换,并且您还可能需要修改应用程序以适当地响应输入。

例如,考虑将包含HT字符的文本“粘贴”到文本字段中的结果并不一定与“手动键入”相同的文本,即实际上按下TAB键。在粘贴文本时,结果很可能是初始字段将包含完整的文本,包括文字HT字符。手动键入文本时,结果很可能是前导输入进入初始字段,然后TAB键按下导致焦点更改到制表顺序中的下一个字段,在该字段中剩余的文本将填充其中。

条形码读取器的文档应描述可用的接口和自定义扫描数据呈现的方法。


3

@terry-burton - 你给出了一份出色的答案。你的写作为我提供了寻找答案的方向。为了解决我的问题,也许能够回答@nir-tzezana的问题,我在扫描仪的文档中找到了答案。

正确的条形码 - 首先确保我的code128格式正确,并包含ASCII代码' tab'。在我的情况下,我设置了大量选项卡,因此可以快速扫描一个条形码并填充Excel中的多个单元格。

启用功能键映射 - 我们的环境使用Symbol LS2208扫描器。我获取了这个手册并打印了第7-14页的页面。特别是,我需要在设备上启用'启用功能键映射'。如果您参考第7-15页上的表格,您将看到“tab”键可以根据扫描仪设置而过度使用。通过进行此更改,我的扫描仪现在可以成功解析以下字符串并填入正确的单元格。

例如:

MyCode128Function("Text123".Chr(9)."Text456".Chr(9)."Test789")

术语很奇怪。启用功能键映射并不意味着F1-F12(毕竟,条形码是字符,而不是键),而“启用映射”意味着禁用不需要的翻译,例如从Tab到Ctrl + I这样的已知字符转换为键。在现代Web浏览器中,这一点非常重要,因为它们基于KeyDown Tab而不是KeyDown Ctrl,KeyDown I来执行焦点移位行为。 - Tom Blodget
2
术语是什么,我直接从摩托罗拉的文档中提取了这些词。它们不是我的话。 - Jeff Nichols

0
请尝试使用^K进行水平制表符。希望它能够正常工作。

0

我遇到了相同的问题。尝试打开记事本,制作文本示例:

1(按Tab键)1(按Tab键)(按Tab键)1

然后选择复制并粘贴到您的标签软件中。格式为128auto。

这样就可以正常工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接