M
mike2007
Здравствуйте!
У меня такая проблемка, не могу отправить в COM-порт и считать символы с него. Можете дать ссылочку на информацию по работе с COM-портом.
Вот програмка:
Помогите пожалуйста, заранее спасибо.
У меня такая проблемка, не могу отправить в COM-порт и считать символы с него. Можете дать ссылочку на информацию по работе с COM-портом.
Вот програмка:
Код:
int SendCom(void)
{
HANDLE ComHandle;
COMMCONFIG ComCfg, *lpComCfg=NULL;
COMSTAT *lpComStat=NULL;
//COMMTIMEOUTS ComTimeout, *lpComTimeout;
//DCB ComDcb, *lpComDcb;
//OVERLAPPED *lpOverlapped;
DWORD ComError;
DWORD lpSize;
DWORD nByteToWr=0, nByteOfWritten=0;
BOOL err;
char wBuff[5]={1,2,9,8,7};//, *lpBuff;
char rBuff[5]={0,0,0,0,0};
//lpBuff = Buff;
ComHandle = CreateFile(
"COM2",
GENERIC_READ || GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL || FILE_FLAG_OVERLAPPED,
NULL
);
if (ComHandle == INVALID_HANDLE_VALUE)
{
return 1;
}
lpComCfg = (COMMCONFIG *) malloc(sizeof(COMMCONFIG));
GetCommConfig(ComHandle,lpComCfg, &lpSize);
ComCfg = *lpComCfg;
ComCfg.wVersion = 1;
ComCfg.dwProviderSubType = PST_RS232;
ComCfg.dcb.BaudRate = 9600;
ComCfg.dcb.ByteSize = 8;
ComCfg.dcb.DCBlength = 28;
ComCfg.dcb.Parity = 0;
ComCfg.dcb.StopBits = 0;
SetCommConfig(ComHandle, &ComCfg, sizeof(COMMCONFIG));
lpComStat = (COMSTAT *) malloc(sizeof(COMSTAT));
ClearCommError(ComHandle, &ComError, lpComStat);
nByteToWr = 3;
err = WriteFile(ComHandle, &wBuff, nByteToWr, &nByteOfWritten, NULL);
ErrorR();
//*********************************************
// Вот здесь выводится ошибка "Отказано в доступе"
//*********************************************
nByteOfWritten = 0;
ClearCommError(ComHandle, &ComError, lpComStat);
nByteToWr = 3;
ReadFile(ComHandle, &rBuff, nByteToWr, &nByteOfWritten, NULL);
nByteOfWritten = 0;
CloseHandle(ComHandle);
return 0;
}