此组件由网卡提供。无线网卡的特性与普通网卡基本相同,但是当设定了信号强度时还能将报文以无线“数据包”的形式发送出去。在组网时需要用到网卡的地址,地址可通过component.modem.address
获取。
组件名:modem
。
回调函数:
isWireless(): boolean
maxPacketSize(): number
"foo"
是一个5字节长的数据包;开头添加2字节,内容有3字节长的字符串。"currentStatus",300
是一个25字节长的数据包;开头添加4字节,内容有13字节长的字符串和一个占8字节的数字。isOpen(port: number): boolean
open(port: number): boolean
true
,若已开启则返回false
。注: 最大端口号为65535close([port: number]): boolean
true
。send(address: string, port: number[, ...]): boolean
true
,但不意味着报文已被接收,只意味着已被发送。我们不提供端口嗅探功能。nil
、布尔型、数字型以及字符串型,而不支持表和函数。参阅serialization(序列化) API以获取将表序列化的方法。broadcast(port: number, ...): boolean
true
。请注意广播报文不会传递给发送这条报文的调制解调器自身。send
。getStrength(): number
setStrength(value: number): number
getWakeMessage():string
setWakeMessage(message: string, [fuzzy: boolean]):string
fuzzy
参数决定,默认为false
)。模糊匹配时会忽略网络数据包中的其他参数。
当收到来自其他网卡的报文时,此组件会产生名为modem_message
的信号。
信号的签名为:localAddress: string, remoteAddress: string, port: number, distance: number, ...
。
localAddress
为收到报文的调制解调器组件地址。remoteAddress
为发送报文的调制解调器地址。port
为报文被发送到的端口号。distance
为到发送报文的网卡之间的距离。此值只对无线报文有意义。对于普通报文此值总为0。send
与broadcast
函数中的...
)。使用例:
local component = require("component") local event = require("event") local m = component.modem --获取首选调制解调器组件 m.open(123) print(m.isOpen(123)) -- true --发送信息。 m.broadcast(123, "this is a test") --等待来自其他网卡的信息。 local _, _, from, port, _, message = event.pull("modem_message") print("Got a message from " .. from .. " on port " .. port .. ": " .. tostring(message))