【发布时间】:2019-07-03 08:54:23
【问题描述】:
我的总体计划目标是使用 Lua 创建一个更好的 3D 打印机校准 GUI,幸运的是我的 GUI 部分已经在工作。我正在尝试将 Windows 10 计算机上的 COM 端口读写到打印机的 Arduino。但是,我被串行通信难住了。目前,我有两条 FTDI 电缆连接在一起,并且可以使用 RealTerm(终端程序)在它们之间进行通信以进行测试,所以我知道接线是正确的。我正在使用 ZeroBrane Studio 进行开发,但还不习惯安装库。
到目前为止,我已经尝试了以下解决方案:
结果:端口没有数据出来,但没有产生错误
结果:代码中的 require "rs232" 失败,因为它找不到文件。我将 SRC 的内容安装到与我的 Lua 代码相同的目录中,但很可能这不是正确的做法。
- 尝试:在 Lua 中使用原生 io 函数
结果:我能够使用这种方法发送数据,这是个好消息。但是,我看不到调整端口波特率的方法。进入设备管理器并修改设置没有效果。默认为 115200bps。
代码:
file = io.open("COM5","wb")
io.output(file)
io.write("Hello world!")
其他选项: 我已经安装了 luarocks,但无法让它在命令提示符中安装任何库。 “错误:找不到 FFI 的预期文件 ffi.lib、ffi.dll 或 libffi.dll - 您可能必须在系统中安装 FFI 和/或设置 FFI_DIR 变量”
如果有任何解决方案需要库,我希望得到一些关于哪些文件去哪里的指导。
提前谢谢你!
PS:以下是我调查的一些进一步的参考资料。
-
posix 似乎只适用于 linux
-
lua-user.org Serial Communication wiki。我不明白说明,他们的recommended library 数据不足..
【问题讨论】:
-
io.open("COM5:","wb")在 Windows 上会更正确 -
设置com口参数:
os.execute[[mode COM5: baud=9600 parity=N data=8 stop=1]] -
感谢推荐!我一直在浏览 Microsoft 在 System.IO.Ports 上的文档,但还没有找到读取 powershell 打印的任何值的方法。如果 Lua 调用了一个 powershell 脚本,并且 powershell 脚本进行了任何打印,那么它就会显示在 Lua 的控制台中。
-
要读取程序的标准输出,请使用
file=io.popen("program args", "rb"); s=file:read"*a"; file:close() -
太棒了!到目前为止,Powershell 一直运行良好。我唯一的问题是打开端口会删除之前发送的任何数据,并且我无法在一个脚本中打开端口(当用户启动程序时)然后再读取另一个(连续)。我已附上我的 powershell 脚本作为答案。为了避免这种情况,我尝试使用 io.read,但它总是读取 Lua 控制台。
fileIn = io.open("COM2:","rb"); io.input(fileIn); print(io.read("*line"));
标签: windows lua serial-port port communication