# Disabling serialEvent() for COM11 null

**URL:** <https://discourse.processing.org/t/disabling-serialevent-for-com11-null/6689>\
**Category:** Electronics (Arduino, etc.)\
**Created:** [December 17, 2018, 6:09am UTC](https://discourse.processing.org/t/disabling-serialevent-for-com11-null/6689 "2018-12-17T06:09:11Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![shady24](https://avatars.discourse-cdn.com/v4/letter/s/e95f7d/32.png) [@shady24](https://discourse.processing.org/u/shady24)\
**Post date:** [December 17, 2018, 6:09am UTC](https://discourse.processing.org/t/disabling-serialevent-for-com11-null/6689/1 "2018-12-17T06:09:11Z")

</div>

Hi,

I am trying to make a game controller using Arduino mega and ADXL 335 & linear potentiometer. The controller works fine but most of the time it gives the error

> Error, disabling serialEvent() for COM11  
> null

I am attaching my arduino and processing code

```auto
**ARDUINO CODE**

/*  
 * Arduino Game Controller 
 */
// Defining variables
int pinX=A2;   
int pinY=A1;
int pinZ=A0; //accelerometer values
int pinA5=A5;
int pinA6=A6;
int pinA7=A7; //potentiometer

//int pinA2=A2;
void setup() 
{
  Serial.begin(115200); // starts the serial communication
}
void loop()
{
  int valX=analogRead(pinX); // reads the Analog Input, t.e the value from the X - axis from the accelerometer
  Serial.print(valX); // sends that value into the Serial Port
  Serial.print(","); // sends addition character right next to the read value needed later in the Processing IDE for indexing

   delay(30);
  int valY=analogRead(pinY);
  
  Serial.print(valY);
  
  Serial.print("/");
  
  int valZ=analogRead(pinZ);
  Serial.print(valZ);
  Serial.print(";");
//  
  int valA5=analogRead(pinA5);
  Serial.print(valA5);
  Serial.print(":");
  
  int valA6=analogRead(pinA6);
  Serial.print(valA6);
  Serial.print("<");
  
  int valA7=analogRead(pinA7);
  Serial.print(valA7);
  Serial.print("!");

  delay(30);
}

```

**PROCESSING CODE**

```auto
/* 
Controller
*/

import processing.serial.*; // imports library for serial communication
import java.awt.Robot; // imports library for key press or release simulation
import java.awt.event.KeyEvent; // imports library for reading the data from the serial port
import java.io.IOException;

Serial port; // defines Object Serial

Robot robot; // defines Object Robot
//defining variables

String X= "";
String Y= "";
String Z= "";
String A0= "";
String A1= "";
String A2= "";
String A3= "";
String A4= "";

String data= "";

int index=0;
int index2=0;
int index3=0;
int index4=0;
int index5=0;
int index6=0;

int iX=0;
int iY=0;
int iZ=0;

int iA0=0;
int iA1=0;
int iA2=0;

// creates new robot object

void setup()
{
try 
{
robot = new Robot();

}
catch (Exception e) {
e.printStackTrace();
exit();
}
delay(2000);
size (800, 800);

port = new Serial(this,"COM11", 115200); // starts the serial communication
port.bufferUntil('!'); // reads the data from the serial port up to the character '.'. So actually it reads this: 215,214/141;315:314<316!314?315.
}
void draw()
{
background(0,0,0);
fill(255, 255, 255);
//Simulating key press or release
// left
if(iX<325)
{ 
delay(40);
robot.keyPress(KeyEvent.VK_A); 
}
if(iX>=325){
delay(40);
robot.keyRelease(KeyEvent.VK_A); 
}
//right
if( iX>345 ) 
{
delay(40);
robot.keyPress(KeyEvent.VK_D); 
}
if(iX<=345){
delay(40);
robot.keyRelease(KeyEvent.VK_D);
}

// up
if(iY>360)
{
delay(40);
robot.keyPress(KeyEvent.VK_W); 
}
if(iY<=360){
delay(40);
robot.keyRelease(KeyEvent.VK_W);
}
// down
if( iY<330 ) 
{
delay(40);
robot.keyPress(KeyEvent.VK_S);
}
if(iY>=330){
delay(40);
robot.keyRelease(KeyEvent.VK_S);
}

// indexFinger punch
if( iA0<700 ) 
{
delay(40);
robot.keyPress(KeyEvent.VK_I); 
}
if(iA0>=700){
robot.keyRelease(KeyEvent.VK_I);
}

// PINKIE sit in vehicle
if( iA1<700 ) 
{
robot.keyPress(KeyEvent.VK_F);
}
if(iA1>=700){
robot.keyRelease(KeyEvent.VK_F);
}

// middleFinger jump
if( iA2<700 ) 
{
robot.keyPress(KeyEvent.VK_SPACE); 
}
if(iA2>=700){
robot.keyRelease(KeyEvent.VK_SPACE);
}
}

// Reading data from the Serial Port
void serialEvent (Serial port) // starts reading data from the Serial Port
{
data = port.readStringUntil('!'); 
data = data.substring(0,data.length()-1); 
index = data.indexOf(","); 
X= data.substring(0, index); 
index2 = data.indexOf("/"); 
Y= data.substring(index+1, index2); 
index3 = data.indexOf(";");
Z= data.substring(index2+1, index3);
index4 = data.indexOf(":");
A0= data.substring(index3+1, index4);
index5 = data.indexOf("<");
A1= data.substring(index4+1, index5);
index6 = data.indexOf("!");
A2= data.substring(index5+1, data.length());
// Converting the String variables values into Integer values needed for the if statements above
iX= int(X);
iY= int(Y);
iZ= int(Z);
iA0= int(A0);
iA1= int(A1);
iA2= int(A2);
}

```

---

<div class="post-metadata">

**Author:** ![kll](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/kll/32/964_2.png) [@kll](https://discourse.processing.org/u/kll)\
**Post date:** [December 19, 2018, 1:44pm UTC](https://discourse.processing.org/t/disabling-serialevent-for-com11-null/6689/2 "2018-12-19T13:44:57Z")

</div>

very interesting streaming protocol  
i am used to sending lines like  
for A2 A1 A0 A5 A6 A7  
you make a string first like  
SA = “1023,1023,1023,1023,1023,1023”;  
and that send in one command  
Serial.println(SA);

but ok you must find out where is the actual problem?

-a- disable in processing ALL ( robot and draw content)  
but the arduino communication.

-b- if still same problem change the last arduino  
delay(30); to delay(1000); ( one second )  
and add in processing after

> data = port.readStringUntil(‘!’);  
> println(data);

so you might see if there are short or empty strings,  
if all ok, might change arduino delay timer slowly back, but to a reasonable value.  
300?

short form: do something that you can follow the communication.
