Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过串行连接将minecraft插件连接到arduino_Java_C_Arduino_Minecraft - Fatal编程技术网

Java 通过串行连接将minecraft插件连接到arduino

Java 通过串行连接将minecraft插件连接到arduino,java,c,arduino,minecraft,Java,C,Arduino,Minecraft,我正试图通过COM4从minecraft和命令/arduino发送一条消息 (我的arduino所在的端口)消息必须是“allesfade” 我只在java中使用它,但在minecraft中没有 这是我的代码(不工作) 下面是我用java编写的代码,它是有效的 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.P

我正试图通过COM4从minecraft和命令/arduino发送一条消息 (我的arduino所在的端口)消息必须是“allesfade” 我只在java中使用它,但在minecraft中没有

这是我的代码(不工作)

下面是我用java编写的代码,它是有效的

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import com.fazecast.jSerialComm.SerialPort;

public class Main {

static SerialPort chosenPort;

public static void main(String[] args) {

JFrame window = new JFrame();
window.setTitle("Arduino Kleurenzender");
window.setSize(600, 75);
window.setLayout(new BorderLayout());
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Sound.HAM.play();

JComboBox < String > portList = new JComboBox < String > ();
JComboBox < String > kleurselector = new JComboBox < String > ();
JComboBox < String > wat = new JComboBox < String > ();
JButton connectButton = new JButton("aan");
JPanel topPanel = new JPanel();
topPanel.add(portList);
topPanel.add(kleurselector);
topPanel.add(wat);
topPanel.add(connectButton);
window.add(topPanel, BorderLayout.NORTH);

SerialPort[] portNames = SerialPort.getCommPorts();
for (int i = 0; i < portNames.length; i++)
portList.addItem(portNames[i].getSystemPortName());
kleurselector.addItem("groen");
kleurselector.addItem("geel");
kleurselector.addItem("rood");
kleurselector.addItem("blauw");
kleurselector.addItem("alles");
wat.addItem("aan");
wat.addItem("flikkeren");
wat.addItem("fade");
connectButton.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent arg0) {
if (connectButton.getText().equals("aan")) {
chosenPort = SerialPort.getCommPort(portList.getSelectedItem().toString());
chosenPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 0, 0);
if (chosenPort.openPort()) {
connectButton.setText("uit");
portList.setEnabled(false);

Thread thread = new Thread() {
@Override public void run() {

try {
Thread.sleep(100);
} catch (Exception e) {}


PrintWriter output = new PrintWriter(chosenPort.getOutputStream());
while (true) {
output.print(kleurselector.getSelectedItem() + "" + wat.getSelectedItem());
output.flush();
try {
Thread.sleep(2000);
} catch (Exception e) {}
}
}
};
thread.start();
}
} else {
chosenPort.closePort();
portList.setEnabled(true);
connectButton.setText("aan");
}
}
});

window.setVisible(true);
}

}
导入java.awt.BorderLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.io.PrintWriter;
导入javax.swing.JButton;
导入javax.swing.JComboBox;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入com.fazecast.jSerialComm.SerialPort;
公共班机{
静态串行端口选择端口;
公共静态void main(字符串[]args){
JFrame窗口=新JFrame();
window.setTitle(“Arduino Kleurenzender”);
设置窗口大小(600,75);
setLayout(新的BorderLayout());
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Sound.HAM.play();
JComboBoxportList=newjcombobox();
JComboBoxkleurselector=newjcombobox();
JComboBoxwat=新JComboBox();
JButton connectButton=新JButton(“aan”);
JPanel-topPanel=新的JPanel();
topPanel.add(端口列表);
topPanel.add(kleurselector);
topPanel.添加(wat);
topPanel.add(连接按钮);
添加(topPanel,BorderLayout.NORTH);
SerialPort[]端口名=SerialPort.getCommPorts();
for(int i=0;i
控制台中的错误

'4/04/2016 21:19:49[信息]Pixel仓鼠发布服务器命令:/arduino

2016年4月4日21:19:49[错误]空

2016年4月21日21:19:49 org.bukkit.command.CommandException:插件arduino v1.0.0中执行命令“arduino”时出现未经处理的异常

2016年4月21日21:19:49在org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)~[spigot 1.9.jar:git-spigot-7d15d07-c194444]

2016年4月21日21:19:49在org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141)~[spigot-1.9.jar:git-spigot-7d15d07-c194444]

2016年4月21日21:19:49在org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchCommand(CraftServer.java:645)~[spiget-1.9.jar:git-spiget-7d15d07-c194444]

2016年4月21日21:19:49在net.minecraft.server.v1_9_R1.PlayerConnection.handleCommand(PlayerConnection.java:1302)[spigot-1.9.jar:git-spigot-7d15d07-c194444]

2016年4月21日21:19:49在net.minecraft.server.v1_9_R1.PlayerConnection.a(PlayerConnection.java:1137)[spigot-1.9.jar:git-spigot-7d15d07-c194444]

2016年4月21日21:19:49在net.minecraft.server.v1_9_R1.PacketPlayInChat.a(PacketPlayInChat.java:45)[spigot-1.9.jar:git-spigot-7d15d07-c194444]

2016年4月21日21:19:49在net.minecraft.server.v1_9_R1.PacketPlayInChat.a(PacketPlayInChat.java:1)[spigot-1.9.jar:git-spigot-7d15d07-c194444]

2016年4月21日21:19:49在net.minecraft.server.v1_9_R1.PlayerConnectionUtils$1.run(源文件:13)[spigot-1.9.jar:git-spigot-7d15d07-c194444]

2016年4月21日21:19:49在java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[?:1.8.031]

2016年4月21日21:19:49在java.util.concurrent.FutureTask.run(FutureTask.java:266)[?:1.8.031]

2016年4月21日21:19:49在net.minecraft.server.v1_9_R1.SystemUtils.a(源文件:45)[spigot-1.9.jar:git-spigot-7d15d07-c194444]

2016年4月21日21:19:49在net.minecraft.server.v1_9_R1.MinecraftServer.D(MinecraftServer.java:716)[spigot-1.9.jar:git-spigot-7d15d07-c194444]

2016年4月21日21:19:49在net.minecraft.server.v1_9_R1.dicatedserver.D(dicatedserver.java:400)[spigot-1.9.jar:git-spigot-7d15d07-c194444]

2016年4月21日21:19:49在net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:655)[spigot-1.9.jar:git-spigot-7d15d07-c194444]

2016年4月21日21:19:49在net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:554)[spigot-1.9.jar:git-spigot-7d15d07-c194444]

2016年4月21日21:19:49在java.lang.Thread.run(Thread.java:745)[?:1.8.031]

2016年4月21日21:19:49原因:java.lang.NullPointerException

2016年4月21日21:19:49在me.Pixel仓鼠.idk.Main.onCommand(Main.java:34)~[?:?]

2016年4月21日21:19:49在org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)~[spigot-1.9.jar:git-spigot-7d15d07-c194444]

2016年4月4日21:19:49。。。15多'

感兴趣的项目:)

我想说的是,问题在于它是一个插件。插件在服务器上运行,而不是在客户端。因此,您需要将arduino连接到服务器。如果你想从minecraft控制arduino,你需要一个用于minecraft的mod(在客户端运行)

IDK,如果那样行的话

另一种方法是将arduino连接到Internet(Shield,或使用Raspberry pi),然后让插件(在服务器上运行)通过Internet向该Shield/pi发送消息

糟糕英语的sry
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import com.fazecast.jSerialComm.SerialPort;

public class Main {

static SerialPort chosenPort;

public static void main(String[] args) {

JFrame window = new JFrame();
window.setTitle("Arduino Kleurenzender");
window.setSize(600, 75);
window.setLayout(new BorderLayout());
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Sound.HAM.play();

JComboBox < String > portList = new JComboBox < String > ();
JComboBox < String > kleurselector = new JComboBox < String > ();
JComboBox < String > wat = new JComboBox < String > ();
JButton connectButton = new JButton("aan");
JPanel topPanel = new JPanel();
topPanel.add(portList);
topPanel.add(kleurselector);
topPanel.add(wat);
topPanel.add(connectButton);
window.add(topPanel, BorderLayout.NORTH);

SerialPort[] portNames = SerialPort.getCommPorts();
for (int i = 0; i < portNames.length; i++)
portList.addItem(portNames[i].getSystemPortName());
kleurselector.addItem("groen");
kleurselector.addItem("geel");
kleurselector.addItem("rood");
kleurselector.addItem("blauw");
kleurselector.addItem("alles");
wat.addItem("aan");
wat.addItem("flikkeren");
wat.addItem("fade");
connectButton.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent arg0) {
if (connectButton.getText().equals("aan")) {
chosenPort = SerialPort.getCommPort(portList.getSelectedItem().toString());
chosenPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 0, 0);
if (chosenPort.openPort()) {
connectButton.setText("uit");
portList.setEnabled(false);

Thread thread = new Thread() {
@Override public void run() {

try {
Thread.sleep(100);
} catch (Exception e) {}


PrintWriter output = new PrintWriter(chosenPort.getOutputStream());
while (true) {
output.print(kleurselector.getSelectedItem() + "" + wat.getSelectedItem());
output.flush();
try {
Thread.sleep(2000);
} catch (Exception e) {}
}
}
};
thread.start();
}
} else {
chosenPort.closePort();
portList.setEnabled(true);
connectButton.setText("aan");
}
}
});

window.setVisible(true);
}

}