qextserialport probleme beim öffnen
Verfasst: 8. März 2007 15:54
Moin Moin
Ich benutze die Klasse qextserialport(version1.0,freundlicherweise gesponsort von dvdjimmy) und hab probleme beim öffen eines Ports. Ich benutze qt4 und hab mir mit dem qtdesigner eine gui erstellt. Jetzt möchte ich gerne einmalig Daten senden und über einen bestimmten Zeitpunkt ständig Daten empfangen. Diese Empfangszeit kann mit einem Button abgebrochen werden. Die Daten die empf. und gesend. werden sollen, sind in einem Protokoll vorhanden das aus einem struct besteht. Das Protokoll schreib ich in einen String und der wird dann komplett an die RS232 schnittstelle gesendet. Geht das so??? Oder kann man einfach das so basteln, dass der charpointer der für die Fkt. writeData benötigt wird, einfach auf das struct zeigt. Aber mein Hauptproblem ist das er den Port nicht öffnet. Allerdings konnte ich nur virtuell den Port ansprechen mit der Software: SerialTestW32.
Danke schon mal im voraus....
gyros
Ich benutze die Klasse qextserialport(version1.0,freundlicherweise gesponsort von dvdjimmy) und hab probleme beim öffen eines Ports. Ich benutze qt4 und hab mir mit dem qtdesigner eine gui erstellt. Jetzt möchte ich gerne einmalig Daten senden und über einen bestimmten Zeitpunkt ständig Daten empfangen. Diese Empfangszeit kann mit einem Button abgebrochen werden. Die Daten die empf. und gesend. werden sollen, sind in einem Protokoll vorhanden das aus einem struct besteht. Das Protokoll schreib ich in einen String und der wird dann komplett an die RS232 schnittstelle gesendet. Geht das so??? Oder kann man einfach das so basteln, dass der charpointer der für die Fkt. writeData benötigt wird, einfach auf das struct zeigt. Aber mein Hauptproblem ist das er den Port nicht öffnet. Allerdings konnte ich nur virtuell den Port ansprechen mit der Software: SerialTestW32.
Danke schon mal im voraus....
gyros
Code: Alles auswählen
writeData((char*)protocol,protocol)==0 KANN MAN DAS MACHEN???
typedef struct frame
{
int flag;
int eingang[8];
bool MFC_freigabe[8];
int sollwert[8];
int ausgang[8];
};
#include "MyDialog.h"
MyDialog::MyDialog()
:QDialog()
{
senden = new QextSerialPort();
_ui.setupUi(this);
initialUi();
}
void MyDialog::send_RS232(void)
{
for(int i = 0; i < 8; i = i++)
{
string2 = QString::number(protocol.MFC_freigabe[i],16);
string1 = string1 + "MFC_freigabe:" +string2;
string2 = QString::number(protocol.eingang[i],16);
string1 = string1 + "eingang:" + string2;
string2 = QString::number(protocol.ausgang[i],16);
string1 = string1+ "ausgang:" + string2;
string2 = QString::number(protocol.sollwert[i],16);
string1 = string1 + "sollwert:" +string2;
}
_ui.lineEdit->setText(string1);
senden->setPortName(ui1.comboBox->currentText());
senden->setDataBits(DATA_8);
senden->setFlowControl(FLOW_OFF);
senden->setStopBits(STOP_1);
senden->setParity(PAR_NONE);
senden->setTimeout ( 0,3);
if(senden->open())
{
senden->flush();
QMessageBox::information(this, "Message", QString("PORT %1 IS OPEN ").arg(senden->portName()));
}
else
_ui.lineEdit->setText("ERROR!!! PORT NOT OPEN: " + senden->portName());
/*for(int i = 0; i < 8; i = i++)
{
if (write_data((char*)protocol.MFC_freigabe[i],protocol.MFC_freigabe[i])==0)
_ui.lineEdit->setText("TRANSMIT ERROR ON: " + ui1.comboBox->currentText() );
if (write_data((char*)protocol.eingang[i],protocol.eingang[i])==0)
_ui.lineEdit->setText("TRANSMIT ERROR ON: " + ui1.comboBox->currentText() );
if (write_data((char*)protocol.ausgang[i],protocol.ausgang[i])==0)
_ui.lineEdit->setText("TRANSMIT ERROR ON: " + ui1.comboBox->currentText() );
if (write_data((char*)protocol.sollwert[i],protocol.sollwert[i])==0)
_ui.lineEdit->setText("TRANSMIT ERROR ON: " + ui1.comboBox->currentText() );
//write_data(string1.toLatin1(),string1.length());
}*/
if(senden->isOpen())
{
senden->writeData((char*)string1.data(),string1.length()QMessageBox::information(this, "Message", QString("WRITE ON %1 WAS SUCCESSFULL").arg(senden->portName()));
}
else
QMessageBox::warning(this, "Message", QString("WRITE ERROR ON PORT: %1 ").arg(senden->portName()));
senden->close();
}