我使用Luars233库进行使用Lua的串行通信。我需要发送数据字节而不用ASCII格式转换它们,但luars232的写入功能在传输之前将数据转换为ASCII,即使我将它作为数字(数据类型)传递给函数。请提供可能的帮助使用luars232避免在串行通信中进行ASCII转换
0
A
回答
0
我已经通过在字符串数据类型中使用转义序列解决了该问题,例如'\ 2'会使用luars232的写入功能将0x02传递到串行端口。但是这限制了在传输之前对数据执行数学运算。欢迎进一步的建议。
0
库使用标准Lua规则通过luaL_checklstring将数据参数强制转换为字符串。所以,如果你想完全控制数据,你应该传递一个字符串。一个Lua字符串是一个计数的字节序列。
当然,正如您发现的那样,字面转义字符序列将起作用。
您也可以使用string.char(...)函数,该函数接受零个或多个值为0-255的列表,并使用这些字节值创建字符串。
如果你有一个字节table sequence,你可以unpack它们放入一个列表:
local bytes = { 27, 76, 117, 97 }
port:write(string.char(table.unpack(bytes)))
所以,是的,你必须转换为字符串。但是,你可以推迟,直到写电话之前。
相关问题
- 1. 如何避免使用通用返回值进行转换?
- 2. XSLT 1.0:如何避免ascii转换?
- 3. 避免在div中换行
- 4. 在C#中使用RS-485转换器和服务器进行串口通信
- 5. 避免使用connection.execute进行sql注入
- 6. 使用out-file时避免换行
- 7. 避免在Rails中进行轮询
- 8. 使用Spark进行字符串转换
- 9. Python:与USB到串行转换器的串行通信失败
- 10. 如何避免在Safari中换行?
- 11. 在写输出中避免换行
- 12. 避免使用C++/CLI属性进行双重转义
- 13. 从split()避免换行符?
- 14. 如何避免在arrayfire中使用flip和transpose进行memcpy?
- 15. 避免在加密和编码的URL字符串中换行
- 16. 使用Adobe Flash与串行端口进行通信
- 17. 使用GPS进行串行通信 - 连续数据传输
- 18. 如何使用vb.net语言进行串行通信
- 19. 使用'GNET'协议与USB设备进行串行通信
- 20. 使用Arduino和C++进行串行端口通信
- 21. 十六进制ASCII字符串转换
- 22. 如何避免$正在进行错误
- 23. 避免在行动
- 24. 避免在通用方法中转换为Nothing
- 25. 如何在C#中进行进程间通信时进行进程间通信?
- 26. 将字符串转换为十六进制以发送串行通信
- 27. 避免python输出中的换行
- 28. 串行通信
- 29. 通过串行端口进行通信的Web应用程序
- 30. 在COM端口上通过蓝牙进行串行通信
顺便说一句,Lua用于字符串转换的字符集和编码是由语言环境决定的,该语言环境特定于线程/进程/用户/操作系统的时间点。 (提示:除非你这样做,否则它不太可能是ASCII。) – 2014-09-04 02:08:12