La communication série entre le pc et l'arduino via RS232 à l'aide de c++

Je suis en train d'essayer de communiquer avec mon arduino duemilanove par l'intermédiaire d'un cordon RS232. Je veux simplement être en mesure d'envoyer un octet (ou char) à mon arduino à partir d'une application de bureau. L'Arduino est de le brancher sur l'USB, le port COM5 sur mon ordinateur. J'ai l'RS232 branché sur le port COM1, et puis j'ai les broches 2, 3 et 5 sur l'autre extrémité de la liaison RS232 connecté à la broche de l'arduino TX, RX et GND, respectivement.

J'ai trouvé un serial comm classe pour le c++ sur le lien suivant:

http://playground.arduino.cc/Interfacing/CPPWindows

J'ai ajouté l' .h et .rpc fichiers à partir de l'exemple ci-dessus en tant que Série.h et Serial.cpp (je pense que l'exemple utilise SerialClass.h et SerialClass.cpp je change juste les noms).


Sur mon arduino, j'ai le code suivant fonctionne: de l'

//ARDUINO
char incomingByte = 0;

void setup() {
        Serial.begin(9600);
}

void loop() {

        //send data only when you receive data:
        if (Serial.available() > 0) {
                //read the incoming byte:
                incomingByte = Serial.read();

                //say what you got:
                Serial.print("I received: ");
                Serial.println(incomingByte, HEX);
        }
}

Et mon programme c++ est la suivante:

//C++
#include <iostream>
#include <Windows.h>
#include "Serial.h"

using namespace std;

int main(void)
{
    Serial port("COM1");

    char* msg = "Hello Arduino!";
    int msgLen = strlen(msg);
    bool writeSuccess = port.WriteData(msg, msgLen);

    cout << "\n\n";
    system("PAUSE");
}

Lorsque j'utilise l'Arduino port série de l'observateur pour voir ce qui est imprimé, je suis très étrange valeurs qui ne correspondent pas à ce que je suis d'envoi (pour autant que je puisse dire).

Quand j'envoie "Bonjour Arduino!", l'arduino imprime le suivant:

I received: FFFFFFAB
I received: 3A
I received: 3A
I received: A
I received: FFFFFFFA
I received: FFFFFFEB
I received: 6D
I received: 37
I received: 15
I received: 2D
I received: 23
I received: 21
I received: FFFFFFBD
I received: 0

Cela ne semble pas être la bonne hex pour "Bonjour Arduino!", mais je n'ai aucune idée de pourquoi il n'est pas correct. Quelqu'un a une idée de ce que je fais mal?

  • Avez-vous mis COM1 dans 9600 vitesse ainsi? Sont stop/bits de parité de la même chose aussi?
  • Yep et oui, i.imgur.com/CIt2Kog.png
  • Il est spécifique du système d'exploitation.
  • Suggérer de vous changer de code C++ ... Voir le.
InformationsquelleAutor user3330644 | 2014-07-29