我正在尝试从连接到ESP8266的设备获取rs232数据(然后将通过http / wifi将数据发送给我们)。
我正在使用max3232 IC为ESP8266提供必要的3.3v TTL。
我已经将max3232(pin 12)连接到ESP8266的GPIO pin 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上犯了一些根本性的错误,但是我不知道这是什么。
解决了:
看来您既无法将ESP8266连接至用于调试的串行端口(例如,运行ESPlorer的PC上的串行端口),也无法将备用串行引脚(ESP8266 GPIO 13和15)连接(至外部串行设备)同时。
nodemcu uart.alt()函数似乎无法“关闭”标准串行I / O引脚。
断开PC与标准串行I / O引脚的连接即可解决此问题(调试成为一个问题,但是有解决方法来解决此问题)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句