我正在尝试从连接到 ESP8266 的设备获取 rs232 数据(然后数据将通过 http/wifi 发送给我们)。
我正在使用 max3232 IC 为 ESP8266 提供必要的 3.3v TTL。
我已将 ESP8266 上的 max3232(引脚 12)连接到 GPIO 引脚 13(rx)(我只接收数据不发送数据,因此只连接了 rx 引脚)。
我正在使用的代码:
--
--file: test2.lua
--
tst2 = require "tst2"
tst2.start()
--tst2.lua (testing script)
local module = {}
function module.start()
print("in tst2.start")
uart.alt(1) --use alt GPIO pin 13 (Rx)
uart.setup(0, 9600,8, uart.PARITY_NONE, uart.STOPBITS_1,0)
uart.on("data",10,
function(data)
file.open("data.tmp", "w+")
file.writeline("starting")
for i=1,10 do
file.writeline(string.byte(string.sub(data,i,i)) )
end
file.writeline("from uart: ", data)
file.writeline("finished")
file.close()
end, 0)
uart.alt(0) --switch back to standard Rx/Tx pins
end
return module
连接到ESP8266的rs232设备每3秒输出一个字母字符,但是写入文件(data.tmp)的数据如下
starting
10
13
10
13
10
13
10
13
10
13
from uart:
finished
file.close()
问题:
1- rs232 设备未发出任何 newln 或 cr 字符,但这些字符出现在数据文件中。
2-字符串“file.close()”被写入数据文件,看起来它是最终file.writeline命令之后的实际lua命令。
3- 字母数据未出现在数据文件中。
4- 通过 uart.alt(0) 切换回标准 uart 引脚不起作用(ESP8266 必须重新启动 - 这不是主要问题,因为标准 uart 引脚仅在调试期间使用)。
我正在将 rs232 数据写入文件,而不是简单地在屏幕上打印出来(我使用的是 ESPlorer v0.2.0),因为 uart.alt(1) 命令将串行端口重定向到备用 ESP8266 gpio 引脚。
我认为我在设置 uart 时做错了什么,但我不知道它是什么。