Y
Yahoo
Форумчане, прошу помогите...
Есть usb-модем опсосов HUAWEI "проецируется" на COM7
Так вот написал программу, которая соединяется с модемом и позволяет мне звонить или отправлять СМС с него, но вот проблема, программа зависает когда я подключаюсь к модему, ЕСЛИ я его НЕ "Опросил"(через диспетчер устройств) или НИ РАЗУ не выходил в интернет, ДО ТОГО как вставил модем в порт. Если это сделать то ОНА ПОЛНОСТЬЮ РАБОТАЕТ.
Привожу кусочек проблемной части программы
знаете как это можно исправить? Или мне искать мануалы на английском, которых в открытом доступе скорее всего не будет :sorry: Если они есть то можно и на них ссылочку...
Есть usb-модем опсосов HUAWEI "проецируется" на COM7
Так вот написал программу, которая соединяется с модемом и позволяет мне звонить или отправлять СМС с него, но вот проблема, программа зависает когда я подключаюсь к модему, ЕСЛИ я его НЕ "Опросил"(через диспетчер устройств) или НИ РАЗУ не выходил в интернет, ДО ТОГО как вставил модем в порт. Если это сделать то ОНА ПОЛНОСТЬЮ РАБОТАЕТ.
Привожу кусочек проблемной части программы
Код:
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: Если они есть то можно и на них ссылочку...