您的位置:首页 > 理论基础 > 计算机网络

MFC实现的串口测试程序

2015-07-31 18:54 519 查看
本人最近做了个小的测试软件,特别写个博客记录下过程中遇到的一些问题及解决办法,本人是个小白,大神路过不用停留,谢谢。

首先,介绍下我做的测试软件的功能。1)关于串口的功能,扫描当前PC已连接的串口,加入到串口列表里,然后通过按键打开串口,并实现串口的收发;2)扫描无线AP的功能,通过PC的无线网卡扫描环境中的AP,并且显示出来。

串口部分

串口部分网上的例子很多,就不具体介绍了,我是采用的控件的方法,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 loss
1>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 format
1>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 body
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 '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 constant
1>c:\program files\microsoft sdks\windows\v7.0a\include\ifdef.h(2): error C2015: too many characters in constant
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 '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 space
1>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新的编辑界面不是很完美,还需要提升哦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息