Я использую SerialClass.h и Serial.cpp в этой ссылке: http://playground.arduino.cc/Interfacing/CPPWindowsАрдуино и C++ последовательной связи синхронизации
Мой 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;
}
Мой 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 пишет массив символов, и C++ читает его. Проблема в том, что иногда cpp пропускает данные. Мой выход:
Мой первый вопрос, что я могу сделать для этого? Как сделать синхронизацию между Arduino и C++? C++ должен ждать, пока ардуино не закончит писать. Я думаю, я должен использовать систему блокировки или что-то в этом роде.
И другие вопросы. Я хочу, чтобы моя программа Arduino и C++ постоянно общались. Я хочу это сделать: «Arduino пишет» После того, как «C++ читает» после «C++ пишет» после того, как «Arduino читает» снова «Arduino пишет». Поэтому я не использую сон и задержку. Мой второй вопрос: как это сделать для этой синхронизации? Я думаю, что ответ такой же, как и ответ на первый вопрос.