我正在使用luars233库进行使用Lua的串行通信。我需要发送数据字节而不用ASCII格式转换它们,但是luars232的写入功能在传输之前将数据转换为ASCII,即使我将它作为数字(数据类型)传递给函数。请提供可能的帮助
答案 0 :(得分:0)
我通过在String数据类型中使用转义序列解决了这个问题,例如' \ 2'将使用luars232的写入功能将0x02传递到串行端口。但这限制了在传输之前对数据执行数学运算。欢迎提出进一步的建议。
答案 1 :(得分:0)
该库获取data参数并使用标准Lua规则通过luaL_checklstring将其强制转换为字符串。因此,如果要完全控制数据,则应传递一个字符串。 Lua字符串是计数的字节序列。
当然,正如您所发现的,文字转义字符序列将起作用。
您还可以使用string.char(...)函数,该函数获取零个或多个值0-255的列表,并使用这些字节值创建字符串。
如果您有table sequence个字节,可以unpack将它们放入列表中:
local bytes = { 27, 76, 117, 97 }
port:write(string.char(table.unpack(bytes)))
所以,是的,您必须转换为字符串。但是,您可以将其推迟到写入调用之前。