X
XIII
Мне необходимо передать букву 'A' в порт COM1 со скоростью 50 или 150 бод.
Буду благодарен всем, кто откликнется.
Буду благодарен всем, кто откликнется.
HANDLE CreateFile
(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDistribution,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
BOOL GetCommState
(
HANDLE hFile,
LPDCB lpDCB
);
BOOL SetCommState
(
HANDLE hFile,
LPDCB lpDCB
);
BOOL WriteFile
(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped
);
HANDLE CreateFile
(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDistribution,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
BOOL GetCommState
(
HANDLE hFile,
LPDCB lpDCB
);
BOOL SetCommState
(
HANDLE hFile,
LPDCB lpDCB
);
BOOL WriteFile
(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped
);
Откуда ты взял, что не будет работать в NT? Все работает, тут же доступ к Com порту через API, а не напрямую.И это не будет работать под XP(NT). Винда скажет что мало привелегий. Выход один: написать свой драйвер или скачать готовый.
void WritePort()
{
HANDLE FHandle;
FHandle=CreateFile("COM1", GENERIC_READ || GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL || FILE_FLAG_OVERLAPPED, 0);
DCB dcb;
GetCommState(FHandle, &dcb);
dcb.BaudRate=57600;//скорость порта
SetCommState(FHandle, &dcb);
char buf[1]="A";
DWORD n;
WriteFile(FHandle, &buf, 1, &n, NULL);
CloseHandle(FHandle);
}
Купи книгу Агурова "Последовательные интерфейсы ПК", книга недорогая и все доступно, с примерами. А писать тебе тут код для чтения слишком гиморно, причем может быть множество вариантов, в зависимости от протокола обмена и других условий.че з аденьги никто не хочет ???
как жаль...
Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab