使用luars232避免串行通信中的ASCII转换

时间:2014-09-03 07:38:05

标签: lua serial-port ascii

我正在使用luars233库进行使用Lua的串行通信。我需要发送数据字节而不用ASCII格式转换它们,但是luars232的写入功能在传输之前将数据转换为ASCII,即使我将它作为数字(数据类型)传递给函数。请提供可能的帮助

2 个答案:

答案 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)))

所以,是的,您必须转换为字符串。但是,您可以将其推迟到写入调用之前。