Как переключить режим 2G \ 3G на usb модем Huawei E171 с помощью C ++?

Я написал небольшую программу на C ++, она переключает модем в режим 2G \ 3G.
это не работает 🙁

Програм считывает данные из модема, если отправляет AT-Команды модем не отвечает.

Помогите мне, пожалуйста 😉

// huawei_mode_switcher
#include <windows.h>
#include <iostream>
#include <stdlib.h>

using namespace std;

int main(){

LPCTSTR sPortName = "//./COM13";
char data[] = "AT^SYSCFG=13,1,3FFFFFFF,2,4";
DWORD dwSize = sizeof(data);
DWORD dwBytesWritten;
HANDLE hSerial = CreateFile(sPortName,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

if(hSerial==INVALID_HANDLE_VALUE){

if(GetLastError()==ERROR_FILE_NOT_FOUND)
{
cout << "com port zanyat\n";
}
cout << "other error\n";

}
else {

BOOL iRet = WriteFile (hSerial,data,dwSize,&dwBytesWritten,NULL);

Sleep(100);
while(1)
{
DWORD iSize;
char sReceivedChar;
while (true)
{
ReadFile(hSerial, &sReceivedChar, 1, &iSize, 0);
if (iSize > 0)
cout << sReceivedChar;
}

}

}system("pause");
return 0;
}

1

Решение

Эта линия

DWORD dwSize = sizeof(data);

наборы dwSize до размера строки, включая нулевой символ в конце, который я не думаю, что вы хотите отправить. И команда должна заканчиваться \r персонаж. Пытаться:

char data[] = "AT^SYSCFG=13,1,3FFFFFFF,2,4\r";
DWORD dwSize = strlen(data);    // use strlen instead of sizeof

(См. Комментарий hlovdal ниже для справки. Также http://en.wikipedia.org/wiki/Hayes_command_set#The_basic_Hayes_command_set.)

2

Другие решения


По вопросам рекламы [email protected]