Communicating with Arduino
The following Arduino sketch reads incoming messages and echoes them back once the entire message has been read. Feel free to use and modify this sketch to your own purposes.
// Delimiter constant to signal end-of-message #define delimiter "\n" // This will store incoming messages String recieved = ""; void setup(){ // Open the serial port Serial.begin(9600); } void loop(){ } // This is called whenever there is incoming data void serialEvent(){ // Read the incoming data char append = Serial.read(); // Append the character to our string recieved += append; // Check for a newline, signaling that the message is complete if(recieved.endsWith(delimiter)){ // Remove the newline recieved.replace(delimiter, ""); recieved.trim(); // Echo the complete message Serial.println(recieved); // Reset the message recieved = ""; } }
Additionally, other plugins may be equipped to listen for events from the serial port:
import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import com.shortcircuit.mcinteractive.events.MCIMessageReceivedEvent; import com.shortcircuit.mcinteractive.events.MCISerialConnectEvent; import com.shortcircuit.mcinteractive.events.MCISerialDisconnectEvent; import com.shortcircuit.mcinteractive.events.MCISerialPortEvent; public class MCIEventListener implements Listener{ @EventHandler public void onConnect(final MCISerialConnectEvent event) { Bukkit.getLogger().info("Connected to " + event.getCommPortIdentifier().getName()); } @EventHandler public void onDisconnect(final MCISerialDisconnectEvent event) { Bukkit.getLogger().info("Disconnected from " + event.getCommPortIdentifier().getName()); } @EventHandler public void onEvent(final MCISerialPortEvent event) { Bukkit.getLogger().info("Event from " + event.getCommPortIdentifier().getName()); } @EventHandler public void onMessage(final MCIMessageReceivedEvent event) { Bukkit.getLogger().info("Message from " + event.getCommPortIdentifier().getName() + ": " + event.getMessage()); } }
Comments