com порт и ИК
Так что изучать распиновку...куда что послать чтобы что-то получить.
Кажется, питание с com'a убрать программно нельзя
Сильно сомневаюсь, что есть готовый класс для ИК-порта, подключенного к com'у.
Так что изучать распиновку...куда что послать чтобы что-то получить.
Кажется, питание с com'a убрать программно нельзя
Я тут с помощью одной программки выяснил, что при направлении пульта с сигналом на приемник тот получает какие-то RX. Посмотрел MSDN заменил кое-что на EV_RXFLAG и получилось:
#include <windows.h>
#include <assert.h>
#include <stdio.h>
void main( )
{
HANDLE hCom;
OVERLAPPED o;
BOOL fSuccess;
DWORD dwEvtMask;
hCom = CreateFile( "COM1",
GENERIC_READ | GENERIC_WRITE,
0, // exclusive access
NULL, // default security attributes
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);
if (hCom == INVALID_HANDLE_VALUE)
{
// Handle the error.
printf("CreateFile failed with error %d.\n", GetLastError());
return;
}
// Set the event mask.
fSuccess = SetCommMask(hCom, EV_RXFLAG);
if (!fSuccess)
{
// Handle the error.
printf("SetCommMask failed with error %d.\n", GetLastError());
return;
}
// Create an event object for use by WaitCommEvent.
o.hEvent = CreateEvent(
NULL, // default security attributes
FALSE, // auto reset event
FALSE, // not signaled
NULL // no name
);
// Intialize the rest of the OVERLAPPED structure to zero.
o.Internal = 0;
o.InternalHigh = 0;
o.Offset = 0;
o.OffsetHigh = 0;
dwEvtMask=EV_RXFLAG;
assert(o.hEvent);
if (WaitCommEvent(hCom, &dwEvtMask, &o))
{
if (dwEvtMask & EV_RXFLAG)
{
printf("EV_RXFLAG\n");
}
}
else
{
DWORD dwRet = GetLastError();
if( ERROR_IO_PENDING == dwRet)
{
printf("I/O is pending...\n");
// To do.
}
else
printf("WaitCommEvent failed with error %d.\n", GetLastError());
}
//return 0;
}
Я так понимаю здесь идет мониторинг состояния порта и при получении RXFLAG'а происходит событие, но этот код выдает ERROR_IO_PENDING может кто-нибудь объяснит. Насчет подачи напряжения где-то слышал что все как с LPT - может кто-нибудь скажет это как?