Sida 1 av 1
Komma åt serieporten i C (windows)
Postat: 9 mars 2006, 23:28:26
av Johan.o
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.
Postat: 10 mars 2006, 05:03:57
av Icecap
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:
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++;
}
}
}
Postat: 10 mars 2006, 13:23:11
av Johan.o
Tack så mycket! Ska försöka kika på det lite senare..
Postat: 10 mars 2006, 14:36:23
av vfr
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.