J'utilise le SerialClass.h et Serial.cpp dans ce lien: http://playground.arduino.cc/Interfacing/CPPWindowsArduino et C de synchronisation de communication série
Mon main.cpp:
#include <stdio.h>
#include <tchar.h>
#include "SerialClass.h" // Library described above
#include <string>
// application reads from the specified serial port and reports the collected data
int main(int argc, _TCHAR* argv[])
{
printf("Welcome to the serial test app!\n\n");
Serial* SP = new Serial("COM4"); // adjust as needed
if (SP->IsConnected())
printf("We're connected\n");
char incomingData[256] = "hello";
int dataLength = 255;
int readResult = 0;
while(SP->IsConnected())
{
readResult = SP->ReadData(incomingData,dataLength);
incomingData[readResult] = 0;
if(readResult != 0){
printf("%s",incomingData);
printf("---> %d\n",readResult);
}
Sleep(500);
}
return 0;
}
Mon code arduino:
int mySize = 5;
char incomingData[256] = "hello";
void setup(){
Serial.begin(9600); // Seri haberleşmeyi kullanacağımızı bildirdik
pinMode(LedPin, OUTPUT); //LedPini çıkış olarak tanımlıyoruz.
}
void loop(){
incomingData[mySize] = 't';
++mySize;
Serial.write(incomingData);
delay(500);
}
Arduino écrit un tableau de caractères et C++ le lit. Le problème est parfois cpp manque les données. Ma sortie:
Ma première question est ce que je peux faire pour cela? Comment faire la synchronisation entre Arduino et C++? C++ devrait attendre, jusqu'à Arduino pour terminer l'écriture. Je pense que je devrais utiliser un système de verrouillage ou quelque chose comme ça.
Et autre question. Je veux que mon programme Arduino et C++ communique constamment. Je veux faire que: "Arduino écrit" Après "C++ lit" après "C++ écrit" après "Arduino lit" après encore "Arduino écrit". Donc, je n'utilise pas le sommeil et le retard. Ma deuxième question est comment puis-je faire pour cette synchronisation? Je pense que la réponse est la même que la réponse à la première question.