Bonjour à tous !!!
J'ai un soucis au niveau de la récupération des données d'une structure déclarée dans une autre classe ...
J'ai créé une structure dans une classe (RS232_Config) avec le numéro du port com, baudrate, bits de données, bits de stop, controle de flux, timeout etc...
J'aimerais la récupérer dans une autre classe (RS232_Com) pour pouvoir lancer la communication en récupérant les paramètres de la structure...
Il me semble que j'ai tout bien fait mais je n'arrive pas à récupérer les valeurs des données de la structure ... Je pense que je dois taper dans la mauvaise case mémoire ...
J'ai rajouter des "cout" pour vérifier si je récupère bien les valeurs sauf que je récupère que des 0 à part pour la 1ère valeur (nom du port), j'obtiens les valeurs suivantes :
alors que les paramètres sont les suivants:Port Com # : 197008
Transmission speed : 193440864
Data length is about 0 bits
Parity is 0
Stop bit is about 196615 bits
Flow Control is 17301998
Time out is about 1 msec
Port Com # : 1
Transmission speed : 4800
Data length is about 5 bits
Parity is 0
Stop bit is about 1 bits
Flow Control is 0
Time out is about 50 msec
Si vous voulez les codes les voila :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 // Classe ConfigRS232 #ifndef CONFIGRS232_H #define CONFIGRS232_H #include <QtGui> #include <QWidget> #include <QExtSerialPort.h> // Port com configuration structure struct PortConfigSet{ int PortCom; int BaudRate; int DataBits; int Parity; int StopBits; int FlowControl; int TimeOut; }; class ConfigRS232: public QWidget { Q_OBJECT QComboBox *portCom; QComboBox *baudRate; QComboBox *dataLength; QComboBox *parity; QComboBox *stopBit; QComboBox *flowControl; QSpinBox *timeOut; QPushButton *saveConfigButton; public: ConfigRS232(QWidget *parent = 0); // Constructor struct PortConfigSet* GetSerialStruct() {return(pt_SerialPort);} // Function to get param in other class void Enum_Ports(); protected: struct PortConfigSet *pt_SerialPort; //Pt_PortConfig pt_SerialPort; // Variable public slots: void SaveConfigParameters(); }; #endif // CONFIGRS232_H
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 // Code du fichier Config_RS232.cpp [...] pt_SerialPort->PortCom = portCom->itemData(portCom->currentIndex()).toInt(); pt_SerialPort->BaudRate = baudRate->itemData(baudRate->currentIndex()).toInt(); pt_SerialPort->DataBits = dataLength->itemData(dataLength->currentIndex()).toInt(); pt_SerialPort->Parity = parity->itemData(parity->currentIndex()).toInt(); pt_SerialPort->StopBits = stopBit->itemData(stopBit->currentIndex()).toInt(); pt_SerialPort->FlowControl = flowControl->itemData(flowControl->currentIndex()).toInt(); pt_SerialPort->TimeOut = timeOut->value(); cout << endl << "Port Com # : " << pt_SerialPort->PortCom << endl; cout << "Transmission speed : " << pt_SerialPort->BaudRate << endl; cout << "Data length is about " << pt_SerialPort->DataBits << " bits" << endl; cout << "Parity is " << pt_SerialPort->Parity << endl; cout << "Stop bit is about " << pt_SerialPort->StopBits << " bits" << endl; cout << "Flow Control is " << pt_SerialPort->FlowControl << endl; cout << "Time out is about " << pt_SerialPort->TimeOut << " msec" << endl; [...]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 //Code du header RS232_Com.h #ifndef RS232_COM_H #define RS232_COM_H #include <configrs232.h> #include <QExtSerialPort.h> class RS232_Com : public ConfigRS232 { public: RS232_Com(); private: struct PortConfigSet* SettingPort; }; #endif // RS232_COM_H
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 // Code du fichier RS232_Com.cpp #include "rs232_com.h" #include <stdio.h> #include <iostream> using namespace std; RS232_Com::RS232_Com() { SettingPort = GetSerialStruct(); cout << endl << "Port Com # : " << SettingPort->PortCom << endl; cout << "Transmission speed : " << SettingPort->BaudRate << endl; cout << "Data length is about " << SettingPort->DataBits << " bits" << endl; cout << "Parity is " << SettingPort->Parity << endl; cout << "Stop bit is about " << SettingPort->StopBits << " bits" << endl; cout << "Flow Control is " << SettingPort->FlowControl << endl; cout << "Time out is about " << SettingPort->TimeOut << " msec" << endl; }
PS: j'ai du mal avec les pointeurs de structures donc si au passage vous pouvez m'expliquer brièvement ça pourrait m'aider ^^
PPS: je pense qu'il manque un malloc du pointeur de structure, j'ai déjà essayé mais sans succès... peut être que je l'ai mal fait...
Je vous remercie par avance !
Partager