#include <iostream>
#include <string>
#include "serial/serial.h"
using std::cout; using std::string;
typedef serial::Serial SeriPort;
const string veriGonder(SeriPort & seriPort, string ileti)
{
const size_t iletiUzunlugu = seriPort.write(ileti);
const string okunanIleti = seriPort.readline(iletiUzunlugu, "\n");
seriPort.waitReadable();
if (okunanIleti.size() == iletiUzunlugu)
{
cout << "Okunan ileti = " << okunanIleti << '\n';
return okunanIleti;
}
else
{
cout << "Veri okuma başarısız" << '\n';
veriGonder(seriPort, ileti);
}
}
int main()
{
SeriPort seriPort("/dev/ttyACM0", 9600, serial::Timeout::simpleTimeout(1000));
cout << "Seri port açık mı ?\n";
if (seriPort.isOpen())
cout << "Evet\n";
else
cout << "Hayır\n";
const string ileti = "Merhaba\n";
const string okunan = veriGonder(seriPort, ileti);
cout << "İşlev dışındaki okunan değişkeni = " << okunan << '\n';
return 0;
}
Gene seri porta veri gönderen bir uygulama üzerinde çalışıyorum. Seri portta Arduino bağlı. Programdan ne gönderirsem adeta yankı yaparak tekrar programa gönderiyor.
Ama şimdi asıl sorun buradaki C++ kodunda olabilir. Program çalıştırıldığında çıktısı şu şekilde:
'$ ./seri1
Seri port açık mı ?
Evet
Veri okuma başarısız
Okunan ileti = Merhaba
İşlev dışındaki okunan değişkeni =
'
Şöyle ki ilk kez veriGonder() işlevi çağrıldığında veriyi gönderiyor ama okuyamıyor. İkinci kez veriGonder() işlevini öz yinelemeli olarak çalıştırdığımızda veri gönderiyor bu sefer okuyor. Buraya kadar normal.
Hatta okunan ileti'yi işlev içinde yazıyoruz. Ama işlev dışında okunan değişkenine atamıyor. :huh:
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]