1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программирован. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Работа с Com-портом

Тема в разделе "С и С++", создана пользователем mike2007, 16 ноя 2007.

  1. mike2007

    mike2007 Гость

    Репутация:
    0
    Здравствуйте!
    У меня такая проблемка, не могу отправить в 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;
    }
    Помогите пожалуйста, заранее спасибо.
     
  2. sdriver

    sdriver Гость

    Репутация:
    0
    Пользуйся

    Вот второй
     

    Вложения:

  3. gamecreator

    gamecreator Гость

    Репутация:
    0
    запись/чтение файла с именем COM*, где * - номер порта
     
Загрузка...

Поделиться этой страницей