Empa
Cadet 4th Year
- Registriert
- Juni 2010
- Beiträge
- 82
Hey,
ich programmiere gerade einen eZ430, der über USB an meinen PC angeschlossen ist. Leider empfange ich nur Daten, wenn ich zuerst über Hyperterminal den COM Port öffne und dann wieder schließe. Meine vermutung war nun das die Initialisierung von COM Port falsch war. Habe jetzt 2 Tage lang vergeblich nach einer Lösung gesucht (gebe hier nur die derzeitige Lösungsidee an) und hoffe einer von euch kann mir dabei helfen.
Hier der Code:
fgetc gibt jedoch immer nur den Wert -1 aus. GetLastError() gibt 0 zurück, also kein Error.
ich programmiere gerade einen eZ430, der über USB an meinen PC angeschlossen ist. Leider empfange ich nur Daten, wenn ich zuerst über Hyperterminal den COM Port öffne und dann wieder schließe. Meine vermutung war nun das die Initialisierung von COM Port falsch war. Habe jetzt 2 Tage lang vergeblich nach einer Lösung gesucht (gebe hier nur die derzeitige Lösungsidee an) und hoffe einer von euch kann mir dabei helfen.
Hier der Code:
Code:
wstring testport = L"COM9"; //wird dynamisch erzeug aus testzwecken statisch
FILE *comport;
HANDLE hFile;
DCB port;
COMMTIMEOUTS timeouts;
char portString[5]={'C','O','M','9'}; //wird dynamisch erzeug aus testzwecken statisch
/**************************************
/**************Init COM*****************
/**************************************/
hFile = CreateFile(testport.c_str(),//only to init port
GENERIC_READ ,
0,
0,
OPEN_EXISTING,
0,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
printf("Cannt create File (COM) with error %d.\n", GetLastError());
SetupComm(hFile,(DWORD)2048, (DWORD)2048);
memset(&port, 0, sizeof(port));
port.DCBlength = sizeof(port);
if(!GetCommState(hFile, &port))
printf("GetCommState failed with error %d.\n", GetLastError());
port.BaudRate=CBR_9600;
port.Parity=NOPARITY;
port.StopBits=ONESTOPBIT;
port.ByteSize=8;
if(!SetCommState(hFile, &port))
printf("SetCommTimeouts failed with error %d.\n", GetLastError());
GetCommTimeouts(hFile, &timeouts);
timeouts.ReadIntervalTimeout = MAXDWORD;
timeouts.ReadTotalTimeoutMultiplier = 0;
timeouts.ReadTotalTimeoutConstant = 10;
timeouts.WriteTotalTimeoutMultiplier = 0;
timeouts.WriteTotalTimeoutConstant = 0;
if(!SetCommTimeouts(hFile, &timeouts))
printf("SetCommTimeouts failed with error %d.\n", GetLastError());
CloseHandle(hFile);
/***********************************************
/*************Open COM**************************
/*************************************************/
if((comport=fopen(portString,"r"))==NULL) //create the conncetion to the COM Port
{
printf("Cannt open %s ",portString);
while(1);
}
do
{
data=fgetc(comport); //get the first char from COM
printf("%i\n",GetLastError());
if(data!=-1)
{
//Fill buffer and do some calculations
}
}while(1);
fgetc gibt jedoch immer nur den Wert -1 aus. GetLastError() gibt 0 zurück, also kein Error.
Zuletzt bearbeitet:
(Nachgetragen)