Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
10 years, 7 months ago.
Sending Decimals over Serial
I am trying to send decimals to the Processing IDE over serial
is there anyway of expanding on this idea. it does not comiple at the moment. thanks for having a look.
include the mbed library with this snippet
#include "mbed.h" Serial pc(USBTX,USBRX); int s= 200; int main() { while(1) { pc.putc(s,DEC); pc.printf("%d"DEC,s); } }
1 Answer
10 years, 7 months ago.
I'm not quite sure what you mean by "send decimals", but this small variation of what you have will send the ASCII text representation of s to the serial port.
pc.printf("%d", s);
On the other hand, this will send the binary value:
pc.putc(s);
So, for the value 200, it will likely not be legible in a terminal program. If s = 0x41, you would see 'A' on a connected terminal.
Thanks for respoding. i am trying to send adc reading, from a custom code, raning from 0-1023 in a way that Processing can see them as int not their ASCII value. i've tried both printf, which receieves the ASCII but the application I am sending the data requires it to be in decimal or hex. Tried putc(s) the is no read on that all.
posted by 26 Apr 2014this is the processing apllication that is receiving the data
include the mbed library with this snippet
/** * Simple Read * * Read data from the serial port and change the color of a rectangle * when a switch connected to a Wiring or Arduino board is pressed and released. * This example works with the Wiring / Arduino program that follows below. */ import processing.serial.*; Serial myPort; // Create object from Serial class float xVal, Yval; // Data received from the serial port int linefeed = 10; float sensorValue; void setup() { size(500, 500); // I know that the first port in the serial list on my mac // is always my FTDI adaptor, so I open Serial.list()[0]. // On Windows machines, this generally opens COM1. // Open whatever port is the one you're using. String portName = Serial.list()[0]; myPort = new Serial(this, portName, 9600); myPort.bufferUntil(linefeed); } void draw() {/* if ( myPort.available() > 0) { // If data is available, xVal = myPort.read(); }*/ // read it and store it in val fill(255); rect(0, 0, 500, 500); //stroke(255, 0, 0); line(0,250, 500, 250); //stroke(255, 0, 0); line(250, 0, 250, 500); ellipseMode(CENTER); fill(150, 0, 0); ellipse(250,sensorValue-10, 15, 15); } void serialEvent(Serial myPort) { // read the serial buffer: String myString = myPort.readStringUntil(linefeed); // if you got any bytes other than the linefeed: if (myString != null) { // trim off the carriage return and convert the string to an integer: println(myString); sensorValue = int(trim(myString))*500; // print it: println(sensorValue); } }