如何讓烏龜在電腦技術中通過調製解調器 API 執行程序
我的世界裡有一台帶無線調製解調器的高級電腦,還有幾隻無線海龜。現在我想從那台電腦發送一個程序到烏龜並執行它。
我在ComputerCraft 網站上查找了調製解調器 API,但找不到方法。
我需要高級海龜嗎?FTB Mindcrack 1.4.7 有進階海龜嗎(不知道FTB Mindcrack 版中ComputerCraft 的版本)
如何向海龜發送程序並從我的高級電腦上執行它們?
首先讓我說 ComputerCraft 中的 Rednet API 很有趣。我想,我想任何給定的網路編碼都可能很有趣。
你可以做兩件事之一。您可以使用磁片將您的程序傳輸到海龜,然後向它發送命令以從電腦執行該程序,或者您可以將整個 lua 程序實際推送到電腦,然後命令它執行該程序。我將在這個答案中介紹這兩種解決方案。
您可以使用磁片將程序從電腦傳輸到海龜。要在電腦之間傳輸程序,您需要一個磁碟驅動器和一張空白磁片。將磁碟驅動器放在高級電腦旁邊,然後將磁片放入其中。您可以使用 將文件複製到磁碟
copy <file> disk
。現在您將程序儲存在磁片上。您現在可以使用磁片將程序放在 Turtle 上。把你的烏龜放在磁碟驅動器旁邊。您可以使用 .將文件從磁碟複製到海龜copy disk/<file> <file>
。現在烏龜有了程序。確保你給那隻烏龜命名,label set <name>
這樣當你破壞它時,所有的程序都會被儲存起來。現在你有一個名為
<file>
你的海龜的文件。讓我們在海龜上設置一個名為 的程序server
,它將偵聽一條消息,然後在 shell 中執行該消息。rednet.open("right") while true do senderID, message, distance = rednet.receive() if message == "exit" then break end shell.run(message) end rednet.close("right")
該程序將偵聽一條消息,將其作為 shell 命令執行,然後再次開始偵聽。因此,如果您發送它
excavate 10
,它將excavate
使用參數啟動程序10
,或者,如果您發送它<file>
,它將執行您新複製的程序。相應的客戶端程序可能是這樣的:rednet.open(<side>) while true do input = read() rednet.send(<ID>, input) if input == "exit" then break end end rednet.close(<side>)
<ID>
接收海龜的 ID 在哪裡。這將允許您在高級電腦上鍵入命令,以便海龜接收。將整個 lua 程序推送到海龜會稍微複雜一些,但並不多。除了之前的 API 之外,您還需要使用
fs
API 來訪問海龜和電腦的文件系統shell
。從一個名為
send
. 該程序的工作是讀取文件並將該文件作為字元串通過 rednet 發送。您可以使用fs
API 完成此操作。讓我們首先從參數列表中打開一個文件並初始化所有內容:args = {...} infile = fs.open(args[1], "r") rednet.open(<side>) rednet.send(<ID>,args[1]) os.sleep(2) filestring = infile.readAll() rednet.send(<ID>,filestring) rednet.close(<side>) infile.close()
這將從參數中獲取輸入文件,並將其作為字元串通過 rednet 發送到位於
<ID>
. 然后海龜必須將此字元串寫入文件並執行該文件。rednet.open("right") while true do file = rednet.receive() contents = rednet.receive() outfile = fs.open(file, "w") outfile.write(contents) outfile.flush() shell.run(file) end rednet.close("right")
這應該接收一個文件名,後跟一個帶有文件內容的大字元串,將其寫入文件名,然後執行該文件。
所以你可以這樣做。您可以在海龜上預定義命令,也可以將整個 lua 文件作為消息發送,並讓海龜在執行之前將該消息寫入本地文件。無論哪種方式都有效。