MFC实现的串口测试程序

来源:互联网 发布:由诲女知之乎翻译 编辑:程序博客网 时间:2024/06/08 06:23

本人最近做了个小的测试软件,特别写个博客记录下过程中遇到的一些问题及解决办法,本人是个小白,大神路过不用停留,谢谢。
首先,介绍下我做的测试软件的功能。1)关于串口的功能,扫描当前PC已连接的串口,加入到串口列表里,然后通过按键打开串口,并实现串口的收发;2)扫描无线AP的功能,通过PC的无线网卡扫描环境中的AP,并且显示出来。

  1. 串口部分
    串口部分网上的例子很多,就不具体介绍了,我是采用的控件的方法,VS2010需要安装一个补丁。这里有个小插曲,我按照网上的方法操作,结果串口没响应,折腾了好久,似乎也没人遇到过这个问题,最后我发现是建立控件响应消息的函数时,通过在控件上右键添加消息事件才行,我之前是在类向导添加的,不知道为什么不行。
    另外,扫描PC已连接串口的方法网上也有介绍,大都差不多,我随便粘贴了个,但是发现如果串口号大于等于10就不行,后面又上午搜了下,是因为一个参数设置问题。RegQueryValueEx()函数最后一个参数,记不清之前是设置的多少,改成64后就没问题了。
    贴上代码:
    long lReg;      HKEY hKey;      DWORD MaxValueLength;      DWORD dwValueNumber;      CString error_log;    lReg=RegOpenKeyEx(HKEY_LOCAL_MACHINE,  TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"),                          0,  KEY_QUERY_VALUE,  &hKey);    if(lReg!=ERROR_SUCCESS) //成功时返回ERROR_SUCCESS,    {          MessageBox(_T("Open Registry Error!"));      }      lReg=RegQueryInfoKey(hKey,  NULL,   NULL,  NULL,  NULL,NULL, NULL,                         &dwValueNumber, &MaxValueLength,  NULL, NULL,  NULL);      if(lReg!=ERROR_SUCCESS) //没有成功    {          MessageBox(_T("Getting Info Error!"));      }      TCHAR *pValueName, *pCOMNumber;      DWORD cchValueName,dwValueSize=10;      //clear    m_Comport.ResetContent();    for(int i=0; i < dwValueNumber; i++)      {          cchValueName = MaxValueLength+1;          dwValueSize = 64;          pValueName = (TCHAR*)VirtualAlloc(NULL,cchValueName,MEM_COMMIT,PAGE_READWRITE);          lReg = RegEnumValue(hKey, i,  pValueName,  &cchValueName,  NULL, NULL,  NULL, NULL);          if((lReg!=ERROR_SUCCESS)&&(lReg!=ERROR_NO_MORE_ITEMS))          {              MessageBox(_T("Enum Registry Error or No More Items!"));        }          pCOMNumber=(TCHAR*)VirtualAlloc(NULL,64,MEM_COMMIT,PAGE_READWRITE);          lReg=RegQueryValueEx(hKey,  pValueName, NULL,                              NULL, (LPBYTE)pCOMNumber, &dwValueSize);          if(lReg!=ERROR_SUCCESS)          {  port!"));        }          CString str(pCOMNumber);        m_Comport.AddString(str);       //把获取的值加入到ComBox控件中        VirtualFree(pValueName,0,MEM_RELEASE);          VirtualFree(pCOMNumber,0,MEM_RELEASE);      }  }里写代码片`分分  pCOMNumber,0,MEM_RELEASE);      }  }

2.扫描AP部分
扫描AP的代码也可以找到,只是有点瑕疵,会有重复的无线被扫到,这个没管他,也贴上代码:

int id=0;        //char *lang = setlocale(LC_CTYPE,NULL);//获取当前的本地语言        //setlocale(LC_ALL, "chs");//设置本地语言        HANDLE ClientHandle;DWORD nv,i,c;PWLAN_INTERFACE_INFO_LIST ilist;PWLAN_AVAILABLE_NETWORK_LIST nlist;static char ssid[36];        char data_2_write[64] = {0};        //UpdateData();        if(WlanOpenHandle(1,0,&nv,&ClientHandle)==0)        {            if(WlanEnumInterfaces(ClientHandle,0,&ilist)==0)            {                for (i = 0; i< ilist->dwNumberOfItems; i++) {                    wprintf(L"\r\n%s%s\r\n",L"网卡:",ilist->InterfaceInfo[i].strInterfaceDescription);                    if(WlanGetAvailableNetworkList(ClientHandle,&ilist->InterfaceInfo[i].InterfaceGuid,0,0,&nlist)==0){                        if(0 == WlanScan(ClientHandle,&ilist->InterfaceInfo[i].InterfaceGuid,NULL,NULL,NULL))                        {                            for(c=0;c<nlist->dwNumberOfItems;c++)                            {                                    memcpy(ssid,nlist->Network[c].dot11Ssid.ucSSID,nlist->Network[c].dot11Ssid.uSSIDLength);                                    ssid[nlist->Network[c].dot11Ssid.uSSIDLength]=0;                                    sprintf(data_2_write,"%3d. SSID: %-25s      信号强度:  %5d\r\n",id++,ssid,nlist->Network[c].wlanSignalQuality);                                    m_log += data_2_write;                            }                            WlanFreeMemory(nlist);                        }                    }                }                WlanFreeMemory(ilist);            }            WlanCloseHandle(ClientHandle,0);        }        //setlocale(LC_ALL, lang);//恢复语言

3.其他
由于想做个自己的特有的图标,我下了个制作图标的软件Axialis IconWorkshop,它会选择安装VS的插件,我开始想挺好的,就装了。结果,等我做好自己的图标后,编译,傻了,死活编不过,提示下面的错误信息:

1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h : error C4335: Mac file format detected: please convert the source file to either DOS or UNIX format1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2470: '箖p癗0' : looks like a function definition, but there is no parameter list; skipping apparent body1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x6'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x8'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x6'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x1'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x5'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x5'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x7'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x1'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x1'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x4'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x6'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x8'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x6'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x1'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x5'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x5'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x7'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x1'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x2'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x6'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x6'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x1'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x1'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x5'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x5'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x7f'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x6'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x3'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x13'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x2'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x13'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x11'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x6'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x3'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(1): error C2018: unknown character '0x13'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2018: unknown character '0x10'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2018: unknown character '0xe'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2018: unknown character '0x6'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2018: unknown character '0x3'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2018: unknown character '0x13'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2018: unknown character '0x7'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2018: unknown character '0x1e'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2018: unknown character '0x1c'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2018: unknown character '0x6'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2018: unknown character '0x3'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2018: unknown character '0x13'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2018: unknown character '0x15'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2001: newline in constant1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2015: too many characters in constant1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(3): error C2018: unknown character '0x13'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(3): error C2018: unknown character '0x15'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(3): error C2018: unknown character '0x1f'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(3): error C2018: unknown character '0x6'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(3): error C2018: unknown character '0x3'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(3): error C2018: unknown character '0x13'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(3): error C2018: unknown character '0x18'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(4): error C2018: unknown character '0x2'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(4): error C2018: unknown character '0x1'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(4): error C2018: unknown character '0xf'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(4): error C2018: unknown character '0x1f'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(4): error C2018: unknown character '0x1c'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(4): error C2018: unknown character '0x1d'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(4): error C2018: unknown character '0xe'1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(4): error C2014: preprocessor command must start as first nonwhite space1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(4): fatal error C1004: unexpected end-of-file found

到网上找解决办法,都试了,没用,最后不得不用另外一台没装Axialis IconWorkshop软件的电脑编过了,原因好像是这个软件有关于MAC的一些绑定吧,没具体看,后面有时间再看看。
好吧,大致是这些,第一次写自己的博客,记录自己的成长吧。

PS:CSDN新的编辑界面不是很完美,还需要提升哦。

0 0
原创粉丝点击