将 GSM 模块与 NodeMCU 进行交互

我编写了这段代码以便与 GSM 模块进行交互,有人可以检查一下代码并给我一些建议吗?

hex1= '0x1A';
function delay_s(delay)
delay = delay or 1
local time_to = os.time() + delay
while os.time() < time_to do end
end
uart.alt(1);
uart.setup(0, 9600, 8, uart.PARITY_NONE, uart.STOPBITS_1, 1)
uart.write(0,"AT+IPR=9600\n")
for j = 1, 10 do
uart.write(0, "AT\n")
end
delay_s(1000)
uart.write(0, "AT\n")
delay_s(1000)
uart.write(0, 'AT+CSCS="GSM"\n')
delay_s(1000)
uart.write(0, 'AT+CMGF=1\n')
delay_s(1000)
uart.write(0, 'AT+CMGS="+21654102832"\n')
delay_s(1000)
uart.write(0, " Salut tout le mond !!!\n")
delay_s(1000)
uart.write(0, hex1)
delay_s(1000)
点赞
用户131929
用户131929

这段代码甚至不能在NodeMCU上运行,因为标准的Lua os.time()会失败,因为os模块不可用。我建议你深入研究http://nodemcu.readthedocs.io/en/latest/en/lua-developer-faq/#how-is-nodemcu-lua-different-to-standard-lua

此外,即使os.time()可用,它的分辨率只有1秒。

返回的值是一个数字,其意义取决于你的系统。在POSIX、Windows和其他一些系统中,这个数字计算自某个给定的开始时间(“纪元”)以来的秒数。

因此,你的delay_s(1000)将延迟执行1000秒。使用忙等待这样做并不是最优的。

你可能想使用tmr模块来代替。

2017-02-01 20:27:23
用户7727651
用户7727651
uart.alt(x);

0 - 标准引脚
1 - 切换引脚

您还没有指定通信要使用哪些引脚,否则请使用 uart.alt(0); 来选择标准引脚。

2017-09-18 13:36:12