Mirmik писал(а):Помогите, спасайте меня . Не могу разобраться с портами.
Написано по поводу встроенного UART (железо MR3020):сервис ser2net транслирует обмен на TCP порт 2000
Вопрос: каким образом вообще с этим портом можно установить связь?
Как установить связь с портом со стороны компа из под Windows?
Есть такая замечательная бесплатная утилитка HW VSP3 - Virtual Serial Port
http://www.hw-group.com/products/hw_vsp/index_en.html
Она эмулирует COM-порт на компьютере, считывая и отсылая данные в сетевой порт.
(как раз твой случай). Мною проверено - работает на ура.
Mirmik писал(а):Как установить связь с портом со стороны компа из под Linux?
Фактически меня интересует не сам UART, а именно вопрос общения с портами в локальной сети.
Если не интересует UART или тебе надо делать под Linux, то можно просто на прямую читать/писать в
этот открытый порт сети на любом языке программирования. Вот тебе кусок класса на C++ и QT.
К слову после долгих поисков единственно верное решение среды разработки ИМНО.
- Код: Выделить всё
int Arduino::Create(Ui::cvRobotClass *pui)
{
m_pTcpSocket = new QTcpSocket(this);
OpenSocket();
connect(m_pTcpSocket, SIGNAL(connected()), SLOT(slotConnected()));
connect(m_pTcpSocket, SIGNAL(disconnected()), SLOT(slotDisconnected()));
connect(m_pTcpSocket, SIGNAL(readyRead()), SLOT(slotReadyRead()));
connect(m_pTcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(slotError(QAbstractSocket::SocketError))
);
return 1;
}
void Arduino::OpenSocket(void)
{
m_nNextBlockSize=0;
UIOpenSocket(false);
m_pTcpSocket->connectToHost(ui->eIPAddress->text(), ui->sbPort->value());
}
void Arduino::CloseSocket(void)
{
m_pTcpSocket->disconnectFromHost();
}
void Arduino::slotConnected(void)
{
ui->eRec->append("Connected\n");
UIOpenSocket(true);
}
void Arduino::slotDisconnected(void)
{
ui->eRec->append("Disconnected\n");
UIOpenSocket(false);
}
void Arduino::slotError(QAbstractSocket::SocketError err)
{
QString strError =
"Error: " + (err == QAbstractSocket::HostNotFoundError ?
"The host was not found." :
err == QAbstractSocket::RemoteHostClosedError ?
"The remote host is closed." :
err == QAbstractSocket::ConnectionRefusedError ?
"The connection was refused." :
QString(m_pTcpSocket->errorString())
);
ui->eRec->append(strError);
}
void Arduino::slotReadyRead(void)
{
QString str;
if (!m_pTcpSocket->canReadLine())
m_pTcpSocket->waitForReadyRead();
// using socket readLine method
str = QString(m_pTcpSocket->readLine());//.simplified();
}
void Arduino::SendCommand(const QString &str)
{
if(!m_pTcpSocket->isOpen()) return;
m_pTcpSocket->write(str.toAscii());
}