Witam,
wziąłem się za napisanie klasy do obsługi transferu po porcie com
i wywala mi dwa błędy, nie zabardzo wiem co z nimi zrobić, ponad to potrzebowałbym drobnej pomocy w sprawie dostępu z zewnątrz do prywatnej tablicy. chcę ją pobierać z obiektu za pomocą getBuffer(); - jak zwrócić całą tablicę tak żebym mógł w programie się odnosić do poszczególnych jej komórek?
np:
transmisja = new RS232;
char bufor = transmisja->getBuffer();
cout << bufor[3]; //na przykład
błędy:
C:\Users\user\Desktop\Piotr-Placzek\INNE\commPort_Terminal\nienazwany\main.cpp:12: błąd:new types may not be defined in a return type
C:\Users\user\Desktop\Piotr-Placzek\INNE\commPort_Terminal\nienazwany\main.cpp:12: (perhaps a semicolon is missing after the definition of 'RS232')
C:\Users\user\Desktop\Piotr-Placzek\INNE\commPort_Terminal\nienazwany\main.cpp:37: błąd:two or more data types in declaration of 'comPortOpen'
moja klasa:
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
#define FRAME_SIZE 8
class RS232{
private:
static DCB dcb;
static HANDLE hNumPort;
static char lpBuffor_read[FRAME_SIZE], lpBuffor_write[FRAME_SIZE];
static DWORD RS_ile;
public:
bool comPortOpen(wstring ComID);
bool comPortConfig(int BR, bool fparity, int parity, int stopbits);
void comPortClose();
bool comPortWrite();
bool comPortRead();
bool setBuffer(char *buff);
char getBuffer();
}
bool RS232::comPortOpen(wstring ComID){
hNumPort = CreateFile(ComID.c_str(), GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if(hNumPort){
return true;
}else{
return false;
}
}
bool RS232::comPortConfig(int BR, bool fparity, int parity, int stopbits){
dcb.DCBlength = sizeof(dcb);
dcb.BaudRate = BR;
dcb.fParity = fparity; //TRUE
dcb.Parity = parity; //
dcb.StopBits = stopbits; //ONESTOPBIT
dcb.ByteSize = 7; //od 5 do 7
dcb.fDtrControl = DTR_CONTROL_ENABLE;
dcb.fRtsControl = RTS_CONTROL_ENABLE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDsrSensitivity = FALSE;
dcb.fAbortOnError = FALSE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
return SetCommState(hNumPort, &dcb);
}
void RS232::comPortClose(){
CloseHandle(hNumPort);
}
bool RS232::comPortWrite(){
return WriteFile(hNumPort, &lpBuffor_write, strlen(lpBuffor_write), &RS_ile, 0);
}
bool RS232::comPortRead(){
return ReadFile(hNumPort, lpBuffor_read, FRAME_SIZE, &RS_ile, 0);
}
bool RS232::setBuffer(char *buff){
if(sizeof(buff)>FRAME_SIZE){
return false;
}
else{
for(int i=0;i<FRAME_SIZE;++i){
lpBuffor_write[i] = buff[i];
}
return true;
}
}
char RS232::getBuffer(){
}