Hallo Leute ich will über die RS232 Schnittstelle Daten Senden und Empfangen ->die Daten sollen von einem PIC µC kommen ->dieser µC benötigt die Daten in Binär - Form.
Jetzt ist mein Problem meine Daten werden in ASCII gesendet und in ASCII empfangen - ich krieg das aber nicht hin das es in Binär gesendet oder empfangen wird - hat jmd ne idee?
-----------------------------------CODE----------------------------------------------------------
void __fastcall TForm1::btnSendenClick(TObject *Sender)
{
int i,m;
int anzahl = StrToInt(edtAnzahl->Text);
int Daten[28];
Daten[0]=anzahl;
.
.
.
AnsiString s;
int x;
x=(3*anzahl)+1; //Berechnung der Menge der Daten die aus den arrays
//geholt werden
for(m=0; m < x; m++)
{
s=Daten[m];
int n=SendData(s.c_str() ,s.Length()); //Sendet jeden Wert einzeln
Memo1->Lines->Add(s);
}
}
----------------------------------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
}
void ShowLastError(AnsiString where)
{
MessageBox(NULL,SysErrorMessage(GetLastError()).c_ str(),
where.c_str(),
MB_OK|MB_ICONERROR);
}
HANDLE OpenComm(char* Port)
{
HANDLE hCom = CreateFile(Port,
GENERIC_READ|GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
0,
0);
if (hCom == INVALID_HANDLE_VALUE)
{
ShowLastError("CreateFile: "+AnsiString(Port));
}
return hCom;
}
void SetDCB(HANDLE hCom)
{
DCB dcb;
BOOL fSuccess = GetCommState(hCom, &dcb);
if (!fSuccess)
{
ShowLastError("GetCommState");
}
dcb.BaudRate = 2400;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
fSuccess = SetCommState(hCom, &dcb) ;
if (!fSuccess)
{
ShowLastError("SetCommState");
}
}
int SendData(char Data[], int n)
{
DWORD NumberOfBytesWritten;
bool b= WriteFile(hComSend,
Data,
n,
&NumberOfBytesWritten, 0);
if(!b)
{
ShowLastError("WriteFile");
}
return NumberOfBytesWritten;
}
DWORD ReceiveData(char* Data,int n)
{
DWORD NumberOfBytesRead;
bool b=ReadFile(hComReceive,
Data,
n,
&NumberOfBytesRead,
0);
if(!b)
{
ShowLastError("Readfile");
}
return NumberOfBytesRead;
}
//---------------------------------------------------------------------------
Jetzt ist mein Problem meine Daten werden in ASCII gesendet und in ASCII empfangen - ich krieg das aber nicht hin das es in Binär gesendet oder empfangen wird - hat jmd ne idee?
-----------------------------------CODE----------------------------------------------------------
void __fastcall TForm1::btnSendenClick(TObject *Sender)
{
int i,m;
int anzahl = StrToInt(edtAnzahl->Text);
int Daten[28];
Daten[0]=anzahl;
.
.
.
AnsiString s;
int x;
x=(3*anzahl)+1; //Berechnung der Menge der Daten die aus den arrays
//geholt werden
for(m=0; m < x; m++)
{
s=Daten[m];
int n=SendData(s.c_str() ,s.Length()); //Sendet jeden Wert einzeln
Memo1->Lines->Add(s);
}
}
----------------------------------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
}
void ShowLastError(AnsiString where)
{
MessageBox(NULL,SysErrorMessage(GetLastError()).c_ str(),
where.c_str(),
MB_OK|MB_ICONERROR);
}
HANDLE OpenComm(char* Port)
{
HANDLE hCom = CreateFile(Port,
GENERIC_READ|GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
0,
0);
if (hCom == INVALID_HANDLE_VALUE)
{
ShowLastError("CreateFile: "+AnsiString(Port));
}
return hCom;
}
void SetDCB(HANDLE hCom)
{
DCB dcb;
BOOL fSuccess = GetCommState(hCom, &dcb);
if (!fSuccess)
{
ShowLastError("GetCommState");
}
dcb.BaudRate = 2400;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
fSuccess = SetCommState(hCom, &dcb) ;
if (!fSuccess)
{
ShowLastError("SetCommState");
}
}
int SendData(char Data[], int n)
{
DWORD NumberOfBytesWritten;
bool b= WriteFile(hComSend,
Data,
n,
&NumberOfBytesWritten, 0);
if(!b)
{
ShowLastError("WriteFile");
}
return NumberOfBytesWritten;
}
DWORD ReceiveData(char* Data,int n)
{
DWORD NumberOfBytesRead;
bool b=ReadFile(hComReceive,
Data,
n,
&NumberOfBytesRead,
0);
if(!b)
{
ShowLastError("Readfile");
}
return NumberOfBytesRead;
}
//---------------------------------------------------------------------------
Comment