首页 > 解决方案 > 如何在lua中生成串口BREAK条件

问题描述

我正在使用 ExtraPuTTY 的 Lua 脚本功能通过串行端口控制设备。该设备中有多个嵌入式模块和一个允许控制台端口成为嵌入式模块的“隧道”的命令。要返回设备的命令行界面,必须发送中断。在键盘上输入命令时,我可以选择“特殊命令”“中断”来发送中断。如何从 lua 脚本中发送“中断”?

我正在使用lua_senddata()向设备发送命令。还有其他功能可以发送休息吗?是否有一个转义序列表示中断,有点像 \n 表示换行?

我不确定这是一般 Lua 问题还是 ExtraPuTTY 特定问题。

标签: luaputty

解决方案


这是 CTRL-BREAK 的组合键 - https://en.wikipedia.org/wiki/Break_key

xev 将这些键码显示为:

KeyPress event,
    state 0x10, keycode 105 (keysym 0xffe4, Control_R)

KeyPress event,
    state 0x14, keycode 127 (keysym 0xff6b, Break)


KeyRelease event,
    state 0x14, keycode 127 (keysym 0xff6b, Break)

KeyRelease event,
    state 0x14, keycode 105 (keysym 0xffe4, Control_R)

我相信你只需要发送0xffe4 0xff6b- 根据这个答案,你会这样做,如下所示:

通过 extraPuTTY 添加错误数据发送十六进制值

lua_senddata( string.format( '%c%c%c%c', 0xff, 0xe4, 0xff, 0x6b ), false )

Window > Translation > Remote character set更改为 'Use font encoding' 并直接编写十六进制代码


推荐阅读