gpt4 book ai didi

从外部蓝牙扫描仪捕获 iOS key 代码

转载 作者:行者123 更新时间:2023-12-01 17:52:36 25 4
gpt4 key购买 nike

我正在尝试在 iOS 中扫描包含不可打印字符的二维条码。我有多个想要支持的扫描仪。当使用 SDK 通过串行端口配置文件 (SPP) 连接时,我可以很好地读取所有这些数据。我想支持的设备之一只有人机接口(interface)设备(HID)支持(外接键盘)。

当我在 HID 模式下使用扫描仪填充 UITextField 时,无法打印的字符被删除。我已将该设备连接到我的笔记本电脑并使用关键代码捕获设备来查看数据是否实际正在发送。

有没有办法用来自作为 HID 连接的蓝牙设备的不可打印字符填充 UITextField?

最佳答案

我发现了如何从以 HID 模式连接到 iOS 的蓝牙设备接收不可打印的 key 代码。

作为引用,二维条码具有一般格式:

[)><RS>'01'<GS>'9612345'<GS>'111'<GS>'000'<GS>'012345678901234'<GS>'FDEB'<GS><GS><GS><GS><GS>'25'<GS>'Y'<GS>'123 1ST AVE'<GS>'SEATTLE'<GS>'WA'<RS><EOT>

其中 为 char(30) 或序列 ctrl-^, 为 char(29) 或序列 ctrl-], 为 char(4) 或 ctrl-d,即 ASCII control codes

在 iOS 7 及更高版本中,您可以使用 UIKeyCommand 从 HID 蓝牙设备捕获 Key Down 事件。 UIKeyCommand 旨在从蓝牙键盘捕获诸如 Command-A 之类的东西,但它也可用于映射 ASCII 序列。诀窍是映射键码序列而不是 ASCII 码。例如,在您的 View Controller 中,您可以:
- (NSArray *) keyCommands {
// <RS> - char(30): ctrl-shift-6 (or ctrl-^)
UIKeyCommand *rsCommand = [UIKeyCommand keyCommandWithInput:@"6" modifierFlags:UIKeyModifierShift|UIKeyModifierControl action:@selector(rsKey:)];
// <GS> - char(29): ctrl-]
UIKeyCommand *gsCommand = [UIKeyCommand keyCommandWithInput:@"]" modifierFlags:UIKeyModifierControl action:@selector(gsKey:)];
// <EOT> - char(4): ctrl-d
UIKeyCommand *eotCommand = [UIKeyCommand keyCommandWithInput:@"D" modifierFlags:UIKeyModifierControl action:@selector(eotKey:)];
return [[NSArray alloc] initWithObjects:rsCommand, gsCommand, eotCommand, nil];
}

- (void) rsKey: (UIKeyCommand *) keyCommand {
NSLog(@"<RS> character received");
}

- (void) gsKey: (UIKeyCommand *) keyCommand {
NSLog(@"<GS> character received");
}

- (void) eotKey: (UIKeyCommand *) keyCommand {
NSLog(@"<EOT> character received");
}

我希望这有帮助。

关于从外部蓝牙扫描仪捕获 iOS key 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25086597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com