Ειδος γλωσσας?

Ξεκίνησε από ChrisS, 05 Μαΐου 2014, 04:50:19 ΜΜ

« προηγούμενο - επόμενο »

ChrisS

Ως εφηβος ασχοληθηκα λιγο με την πλατφορμα ανοιχτου υλισμικου και λογισμικου Arduino!
Αλλα παντα ειχα την απορια σε τι γλωσσα προγραμματιζεται ???
Ειχα διαβασει οτι η γλωσσα ειναι συνδιασμος C++ και Java αλλα υπαρχει καμια συγκεκριμενη ονομασια ?

Παραδειγμα κωδικα :

char INBYTE;
int  LED = 13;

void setup() {
  Serial.begin(9600); 
  pinMode(LED, OUTPUT);
}

void loop() {
  Serial.println("Press 1 to turn Arduino pin 13 LED ON or 0 to turn it OFF:");
  while (!Serial.available());   // stay here so long as COM port is empty   
  INBYTE = Serial.read();        // read next available byte
  if( INBYTE == '0' ) digitalWrite(LED, LOW);  // if it's a 0 (zero) tun LED off
  if( INBYTE == '1' ) digitalWrite(LED, HIGH); // if it's a 1 (one) turn LED on
  delay(50);
}

P.Tsiotakis


ChrisS

Βασικα πιο κατω λεει οτι η γλωσσα λεγεται Wiring και οτι μετα το Arduino IDE (Intergrated Developing Enviroment) την κανει compile σε C / C++


ΠαράθεσηArduino programs are written in C or C++. The Arduino IDE comes with a software library called "Wiring" from the original Wiring project, which makes many common input/output operations much easier. Users only need define two functions to make a runnable cyclic executive program:

setup(): a function run once at the start of a program that can initialize settings
loop(): a function called repeatedly until the board powers off
A typical first program for a microcontroller simply blinks an LED on and off. In the Arduino environment, the user might write a program like this:[16]



The integrated pin 13 LED
#define LED_PIN 13

void setup () {
  pinMode (LED_PIN, OUTPUT); // Enable pin 13 for digital output
}

void loop () {
  digitalWrite (LED_PIN, HIGH); // Turn on the LED
  delay (1000); // Wait one second (1000 milliseconds)
  digitalWrite (LED_PIN, LOW); // Turn off the LED
  delay (1000); // Wait one second
}
It is a feature of most Arduino boards that they have an LED and load resistor connected between pin 13 and ground; a convenient feature for many simple tests.[16] The previous code would not be seen by a standard C++ compiler as a valid program, so when the user clicks the "Upload to I/O board" button in the IDE, a copy of the code is written to a temporary file with an extra include header at the top and a very simple main() function at the bottom, to make it a valid C++ program.

bugman

Το wiring είναι βιβλιοθήκη, η γλώσσα παραμένει c++. (Δεν υπάρχει επιλογή για c, απλά μπορεί ο κώδικας να φαίνεται ότι είναι c, επειδή η c++ έχει στοιχεία από τη c, και για το λόγο αυτό λέεi c/c++). Οι βιβλιοθήκες είναι σε c++. Τα αντικείμενα που χρησιμοποιούμε είναι της c++ (η c δεν έχει αντικείμενα).
Απλά αυτά που γράφουμε είναι μέρος του τελικού προγράμματος (η c++ απαιτεί μια main() συνάρτηση). Το τελικό το φτιάχνει το IDE κατά τη μετάφραση του κώδικα.

Αυτό που έχει σημασία είναι ότι ο κώδικας θα έχει πράγματα που θα σχετίζονται με συγκεκριμένη υλοποίηση (hardware) Arduino (πχ nano ή Node Esp 12 ή DUO). Η διαφοροποίηση έχει να κάνει με τις πόρτες (Αριθμός και χρήση) και την μνήμη, και σε κάποιες περιπτώσεις με άλλα πιο εξωτικά χαρακτηριστικά. Οπότε χρειάζεται να ορίσουμε το τσιπάκι και μετά να προβούμε σε μετάφραση-έλεγχο.

Ένα άλλο χαρακτηριστικό του IDE του Arduino, ως προς το κώδικα είναι ότι γράφουμε απευθείας σε UTF-8. Αυτό δεν συμβαίνει σε ένα IDE για c++, πχ στο Code::Blocks, όπου ανάλογα τη χρήση χαρακτήρων αλλάζει ανά αρχείο το τύπο κωδικοποίησης και πρέπει να βάζει κανείς τα L ή R μπροστά από τα αλφαριθμητικά για να προσμετρήσει ο μεταφραστής τη σωστή κωδικοποίηση του τελικού αλφαριθμητικού που θα καταχωρήσει στο κώδικα του εκτελέσιμου αρχείου.


Παράθεση
Έτυχε να φτιάξω ένα αντικείμενο για να χειρίζεται η Μ2000 σειριακές πόρτες, ώστε να διαβάζει και να γράφει σε Arduino (καθώς τρέχουν, ώστε να καταχωρούμε στοιχεία ή να φτιάχνουμε γραφικές παραστάσεις, και επίσης για να το ελέγχουμε με μηνύματα). Διαπίστωσα ότι οι μεταφορές γίνονται με UTF-8. Αν κάποιος διαβάζει ή γράφει με χαρακτήρες με κωδικούς από 0 έως 127 τότε μπορεί να νομίζει ότι η μεταφορά γίνεται με ANSI. Αυτό συμβαίνει επειδή τα δυο στάνταρ κωδικοποίησης έχουν κοινό τόπο αυτή τη περιοχή χαρακτήρων. Το μπέρδεμα ξεκινάει όταν έχουμε χαρακτήρες των 2 ή τριών ή τεσσάρων bytes (το utf-8 έχει χαρακτήρες που πιάνουν στη μνήμη από 1 έως 4 bytes, ανάλογα το νούμερο).