2014-05-02 50 views
1

我在C++上編寫小程序,她切換調制解調器2G \ 3G模式。 其行不通:-(如何在USB調制解調器上切換2G 3G模式使用C++的華爲E171?

PROGRM讀取數據形式調制解調器,如果發送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。)

+0

OOGA,thenks //// 其工作 – user3597106

+1

[V.250(HTTP://www.itu。 int/rec/T-REC-V.250-200307-I/en)要求AT命令行應該僅以'\ r'結尾,而不是其他任何東西(例如不是'\ n'而不是'\ r \ n ')。 – hlovdal

+0

@hlovdal您已經鏈接了一個100頁的文檔。你指的是哪一頁? – ooga

相關問題