Hejsan
Håller på att läsa en kurs i C , som snart är slut.
Får nog ses som en grundkurs, iaf så undrar jag lite
hur jag ska gå tillväga om jag vill komma åt seriellporten
i C på en windowsdator, hört att det visst ska vara lite knepigt med just windows.. ? iaf inget vi fått lära oss.
Komma åt serieporten i C (windows)
Det är inget svårt alls faktisk.
Öppna en fil med namnet "COM1" (eller "COM2"...) och sedan är det klart.
Ett sax från ett av mina program i Borland C Builder:
Öppna en fil med namnet "COM1" (eller "COM2"...) och sedan är det klart.
Ett sax från ett av mina program i Borland C Builder:
Kod: Markera allt
// Check out COM1 - COM20 if they are available
for(int Counter = 1;Counter <= 20;Counter++)
{
sprintf(MyText,"COM%u",Counter);
Handle = CreateFile(MyText,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
if(Handle != INVALID_HANDLE_VALUE)
{
COM_Select->Items->Add(MyText);
PurgeComm(Handle,PURGE_RXABORT);
CloseHandle(Handle);
if(!strcmp(Config.COM_Port, MyText)) Select = Available;
Available++;
}
else
{
if(GetLastError() == 5)
{ // It's there....but used by another application
COM_Select->Items->Add(MyText);
if(!strcmp(Config.COM_Port, MyText)) Select = Available;
Available++;
}
}
}
Att komma åt själva serieporten (hårdvaruregisterna) under nyare Windows är i princip lika krångligt som med parallellporten eller annan hårdvara. Det är nog detta du tänker på. Det krävs speciella drivrutiner.
Däremot är det, precis som Icecap säger, väldigt enkelt att använda Windows API-funktioner för sända och ta emot seriedata.
Däremot är det, precis som Icecap säger, väldigt enkelt att använda Windows API-funktioner för sända och ta emot seriedata.