Tell me more ×
Electrical Engineering Stack Exchange is a question and answer site for electronics and electrical engineering professionals, students, and enthusiasts. It's 100% free, no registration required.

I developed a app that send data for arduino by serial port, but i can understand how i can recevied in arduino. Because i send a string by serial port for arduino and the arduino recevied anything but don't work my code (in arduino i recevied byte a byte).

Update: it's work ;)

The code in C# that send data:

using System;
using System.Windows.Forms;
//
using System.Threading;
using System.IO;
using System.IO.Ports;

pulic class senddata(){

    private void Form1_Load(object sender, System.EventArgs e)
    {
    //Define a Porta Serial
        serialPort1.PortName = textBox2.Text;
        serialPort1.BaudRate = 9600;
        serialPort1.Open();
    }
private void button1_Click(object sender, System.EventArgs e)
{
    serialPort1.Write("10");  //This is a string  The 1 is a comand 0 is interpeter       
}

} 

The Arduino Code: I have Update the Code

#include <Servo.h>

Servo servo;
String incomingString;
int pos;

void setup()
{
    servo.attach(9);
    Serial.begin(9600);
    incomingString = "";
}

void loop()
{
   if(Serial.available())
   {
   // Read a byte from the serial buffer.
   char incomingByte = (char)Serial.read();
   incomingString += incomingByte;

     // Checks for null termination of the string.
     if (incomingByte == '0') { //When 0 execute de code, the last byte is 0

      if(incomingString == "10"){ //The string is 1 and the last byte 0... beacause incomingString += incomingByte
                servo.write(90);
          }

       incomingString = "";
    }

  }
}
share|improve this question

1 Answer

You're not terminating your string properly.

The Arduino code is looking for 0x31 0x00.

The PC is sending just 0x31.

You need to send the 1 and a terminating character (say a carriage return) and look for that on the Arduino. That would, for example, be sending 0x31 0x0d, and the Arduino would look for 0x0d as the terminating character.

Or you could tell the PC to transmit a 1 followed by a null character 0x00. I don't know C# but if it follows standard escaping procedures you may be able to send something like "1\000".

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.