Зависание при подключении к Com модему

Тема в разделе "MS Visual C++", создана пользователем Yahoo, 17 апр 2010.

  1. Yahoo

    Yahoo Гость

    Форумчане, прошу помогите...

    Есть usb-модем опсосов HUAWEI "проецируется" на COM7
    Так вот написал программу, которая соединяется с модемом и позволяет мне звонить или отправлять СМС с него, но вот проблема, программа зависает когда я подключаюсь к модему, ЕСЛИ я его НЕ "Опросил"(через диспетчер устройств) или НИ РАЗУ не выходил в интернет, ДО ТОГО как вставил модем в порт. Если это сделать то ОНА ПОЛНОСТЬЮ РАБОТАЕТ.

    Привожу кусочек проблемной части программы
    Код (Text):
    void OpenPort()
    {
    if (hCom != INVALID_HANDLE_VALUE)
    {
    ClosePort();
    Sleep(300);
    }

    GetDlgItemTextA(hWnd, IDC_COMBO1, ModemPort, 6);

    char ComPort[10];
    lstrcpyA(ComPort, "\\.\\\\");
    lstrcatA(ComPort, ModemPort);

    hCom = CreateFileA(ComPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

    if (hCom == INVALID_HANDLE_VALUE) SetDlgItemTextA(hWnd, IDC_EDIT5, "failed to open port");
    else
    {
    SetDlgItemTextA(hWnd, IDC_EDIT5, "port successfully opened");

    hThread = CreateThread(0, 0, ReadThread, (LPVOID)hWnd, 0, 0);

    DCB dcb;
    memset(&dcb, 0, sizeof(dcb));
    dcb.DCBlength = sizeof(dcb);
    MessageBoxA(0, "Щас может зависнуть :(\nЧтобы этого не произошло:\
    \n Войдите хоть раз в интернет либо опросите модем ч/з диспетчер устройств.",
    "Bug", MB_OK | MB_ICONASTERISK );

    // При вызове GetCommState она и зависает...

    if(!GetCommState(hCom, &dcb)) SetDlgItemTextA(hWnd, IDC_EDIT5, "Error of get data about port");
    // Если закоментить GetCommState то прожка зависнет на SetCommState и т.д...
    dcb.BaudRate = CBR_57600; //460800;
    dcb.ByteSize = 8;
    dcb.Parity = NOPARITY;
    dcb.StopBits = ONESTOPBIT;

    if (SetCommState(hCom, &dcb)) SetDlgItemTextA(hWnd, IDC_EDIT5, "Configuring OK");
    else SetDlgItemTextA(hWnd, IDC_EDIT5, "Configuring Error");
    }
    return;
    }
    знаете как это можно исправить? Или мне искать мануалы на английском, которых в открытом доступе скорее всего не будет :sorry: Если они есть то можно и на них ссылочку...
     
  2. Yahoo

    Yahoo Гость

    Вопрос отпал сразу после полного анализа моего кода и удаления с него строчки создания потока на чтение.
    (Да как я на нее раньше внимание не обратил только голову Вам зря заморочил, простите)
    Тему можно прикрыть
     
Загрузка...

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