Jeg har tænkt mig at lave et program som bruger inferrød netværk, men kan ikke finde ud af hvilken port, som jeg skal forbinde til?
jeg har lavet et trådløst netværk med windows xp, og valgt vært, hvor jeg får oplyst "Infrarød port (IRDA1-0)", er det så IRDA1-0 jeg skal oprette forbindelse til, eller er det COM*, hvis det sidste, hvilken comport er det så jeg skal forbinde til?
desuden har jeg prøvet at tilgå både IRDA1-0 og COM (1-3), uden nogle resultater med nedenstående kode. så vil høre om hvor min fejl er, og hvad skal jeg gøre for at komme i kontakt med min inferrøde port?
#include <stdio.h>
#include <windows.h>
void SetTimeOut(HANDLE Port, int sec)
{
COMMTIMEOUTS commtimeouts;
GetCommTimeouts(Port, &commtimeouts);
commtimeouts.ReadIntervalTimeout = 1000*sec;
commtimeouts.ReadTotalTimeoutMultiplier = 10;
commtimeouts.ReadTotalTimeoutConstant = 1000*sec;
SetCommTimeouts(Port, &commtimeouts);
}
void Tx(HANDLE Port, const char *data)
{
DWORD Dummy;
WriteFile(Port, data, strlen(data), &Dummy, 0);
WriteFile(Port, "\\r\\n", 2, &Dummy, 0);
}
void Rx(HANDLE Port)
{
char Buffer[128];
DWORD Length, i;
ReadFile(Port, Buffer, 128, &Length, 0);
for(i = 0; i < Length; i++)
if(Buffer[i] != '\\r')
printf("%c", Buffer[i]);
}
int main(void)
{
DCB dcb;
HANDLE ComPort = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
GetCommState(ComPort, &dcb);
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
dcb.fOutxCtsFlow = 1;
SetCommState(ComPort, &dcb);
SetTimeOut(ComPort, 1);
Tx(ComPort, "AT");
Rx(ComPort);
Tx(ComPort, "ATZ");
Rx(ComPort);
CloseHandle(ComPort);
return 0;
}