Estou procurando a dias ja alguma forma de comunicar serial com arduino e C++, mas esta complicado, nada efetivo, todos os fóruns pessoal indica o Rogercom, mas os códigos dele não rodaram aqui, ...
Enfim se alguém tiver algum tutorial ou link ai pra indicar...
Eu estou usando C++ puro, com o DevC++, o visual C++ instala uns 20GB de coisas da microsoft no PC,...
eu já tinha visto esse link, até testei com o DevC++ mas não rolou.
Na verdade eu estava querendo fazer rodar com o Qt mas esta uma merda de achar algo compatível, até acha diversas libs mas tudo para versão 4.x...
o visual C++ instala uns 20GB de coisas da microsoft no PC,...
Concordo contigo plenemente.
Se alguém ja conseguiu com alguma linguagem desktop comunicar posta ai....
Ja usei Visual Basic 2010, Real Studio e um pouco de Delphi com o Embarcadero
De todos o que mais gosto é do Real Studio por é multiplataforma na hora de fazer o executavel.Tanto faz para MAC OS, WIN ou LINUX
No entanto a documentaçao na minha opiniao é má.Por vezes nao sei usar uma funçao e a documentaçao é muito obscura ou falta dela.
Eu tenho DVD da embarcadero, delphi é outro que instala 20GB, mas eu gosto dele, só que eu to totalmente sem espaço.
To apanhando feio aqui, ontem fiquei das 14:00 às 23:00 direto tentando com Qt em Linux, depois Qt no Windows, e C++, nada funcionou, hoje ja tentei desde as 10:00, em Java, C, C++ e nada concreto, ....
O resto ta tudo funcionando do sistema só falta comunicação com Alguma linguagem Desktop pra interfacear, ...
Assumindo que estás a usar Linux (e sendo eu tudo menos um perito em Linux), não tens de seguir o processo normal do Linux (Posix???) e abrir o "ficheiro" correspondente à porta série e escrever para lá?
Em Windows e C++, admito que deve ser uma merda sem teres os drivers (incluídos nesses 20Gb) para a comunicação série. Antigamente com as portas RS232 era apenas declarar um apontador para o 0x378 (ou algo similar) e estava a andar de mota, com as novas versões do Windows e USB, sinceramente não sei.
Em tempos este site era bom para comunicações... agora está um pouco mudado, mas vejo que ainda tem muita informação.
declarar um apontador para o 0x378 (ou algo similar)
Este era para a porta Paralela LPT1
Se estas a usar o "pinguim" espreita o Gambas2.
Com ele tambem podes criar apps em GUI.Muito parecido ao VB no Windows
brigadão pelas respostas. Infelizmente ainda não consegui, mas só estou trabalhando nisto aos fins de semana, sexta a noite vou tentar novamente e aviso aqui se tiver sucesso
Espero que funcione. Como disse antes, eu usei a porta série em C com windows fazendo o truque do apontador e mais tarde "brinquei" um pouco com a porta série em Linux e pelo que vejo no código que te enviei é parecido o suficiente para usares em Linux sem grandes problemas.
Ahh, se conseguires fazer disable do auto-reset do Arduino, acredito que seja mais simples de testar a comunicação.
Não... mas estamos a falar no Windows que se usava no longínquo ano de 1999. Era prai o 95 ou 98 e esse ainda tinha resquícios do DOS nele (e uma porta RS-232 nativa) que permitia usá-la criando um apontador para aquelas moradas que referi.
Agora, com o USB, não imagino como seja e acho que não te vais safar sem uma biblioteca qualquer.
Se quiseres java, podes usar a biblioteca que o Arduino usa.
Estou tentando com qualquer coisa ultimamente, meu desejo era fazer em C++ para usar com Qt mas se não der certo, pelo menos por enquanto vou usar java...
vou ter que dar uma estudada como a IDE funciona...
#include "qextserialport.h"
#include "qextserialenumerator.h"
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"QTimer"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//Scanei as portas disponiveis e carrega em um ComboBox
foreach (QextPortInfo info, QextSerialEnumerator::getPorts())
ui->List_PortSerial->addItem(info.portName);
// Define paramentros da porta serial
PortSettings settings = {BAUD9600, DATA_8, PAR_NONE, STOP_1, FLOW_OFF, 10};
port = new QextSerialPort(ui->List_PortSerial->currentText(), settings, QextSerialPort::Polling);
//chama a função de leitura da porta serial de 10 em 10ms
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()),SLOT(onReadyRead()));
timer->start(10);
enumerator = new QextSerialEnumerator(this);
enumerator->setUpNotifications();
}
MainWindow::~MainWindow()
{
delete ui;
delete port;
}
//Botão Conectar na porta Selecionada no ComboBox
void MainWindow::on_B_Conectar_clicked()
{
if (!port->isOpen()) {
port->setPortName(ui->List_PortSerial->currentText());
port->open(QIODevice::ReadWrite);
}
else {
port->close();
}
}
//Le porta serial e Insere em um PainTextEdit
void MainWindow::onReadyRead()
{
if (port->bytesAvailable()) {
ui->Status_PortSerial->moveCursor(QTextCursor::End);
ui->Status_PortSerial->insertPlainText(QString::fromLatin1(port->readAll()));
}
}
//Envia dados de um PainTextEdit
void MainWindow::on_B_Envia_clicked()
{
port->write(ui->Status_PortSerial_2->toPlainText().toLatin1());
}