跪求解决方法!串口通讯数据处理有关问题

跪求解决办法!串口通讯数据处理问题
最近做一个串口数据界面,从串口接收数据格式如图跪求解决方法!串口通讯数据处理有关问题,我想做的是把这些数据映射成一个图形界面,每一个"."或者一个"B"是一个放格,涂上颜色。
现在的问题是,跪求解决方法!串口通讯数据处理有关问题,接收来的数据只能画出四个方格,我分析是第一句start test 后面那四个点,但是现在我想不识别那四个点,从后面的点阵列开始。
我之前的做法是将所有接收的字符变成一个字符串,在用另一个字符串把其中有用的取出,再根据字符串的数据画方格。代码如下:
void CtestDlg::OnCommMscomm1()
{
// TODO:  在此处添加消息处理程序代码
if (m_mscomm.get_CommEvent() == 2)
{
char str[1024] = { 0 };
long k;
VARIANT InputData = m_mscomm.get_Input(); //读缓冲区
COleSafeArray fs;
fs = InputData; //VARIANT型变À量转换为COleSafeArray型变量
for (k = 0; k<fs.GetOneDimSize(); k++)
fs.GetElement(&k, str + k); //转换为BYTE型数组

m_Receive += str;      // 接收到编辑框里面

CString good = _T(".");
CString bad = _T("B");
int w = 0;
for (int y = 0; y<sizeof(str); y++)
{
if (str[y] ==good){
strc[w] = str[y];
w = w + 1;
}
else if (str[y] == bad){
strc[w] = str[y];
w = w + 1;
}
else if (str[y] == '\r\n' || VK_RETURN || '\n' || ' '){
w = w;
}
else{
w = w;
}
}

//strcpy_s(strc, str);
CWnd *pWnd = GetDlgItem(IDC_STATIC_DRAWL);//画图部分
if (pWnd != NULL && ::IsWindow((pWnd->m_hWnd)))
{
CRect rcPic;
CRect rect;
pWnd->GetWindowRect(rcPic);
ScreenToClient(rcPic);
CClientDC dc(this);

HBRUSH hBrush = CreateSolidBrush(RGB(122, 122, 122));
CBrush brush(RGB(122, 122, 122));
int width = rcPic.right - rcPic.left;
int height = rcPic.bottom - rcPic.top;
dc.SetViewportOrg(rcPic.left, rcPic.top);
//dc.Rectangle(0,0,100,100);
//dc.FillRect(&rect, &brush);

CString  str;
CString  str1 = _T("16*16");
CString  str2 = _T("32*32");
CString  str3 = _T("64*64");
CString  str4 = _T("128*128");
m_Arraysel.GetLBText(m_Arraysel.GetCurSel(), str);
char str16[16][16] = { " " };
char str32[32][32] = { " " };
char str64[64][64] = { " " };
char str128[128][128] = { " " };
int t = 0;
//画图判定循环
//16*16型矩阵
if (str == str1){
for (int j = 0; j < 16; j++){//将串口数据读入图形矩阵
for (int i = 0; i < 16; i++)
{
str16[i][j] = strc[t];
t = t + 1;
}
}

for (int j = 0; j < 16; j++){//判定画图颜色,并顺序绘图
for (int i = 0; i < 16; i++){
int a = 25;
int g = i * a;
int k = j * a;
if (str16[i][j] ==  good){
CBrush brush(RGB(0, 0, 255));
CRect rect(g, k, g + a, k + a);
dc.FillRect(&rect, &brush);
}
else if (str16[i][j] == bad){
CBrush brush(RGB(255, 0, 0));
CRect rect(g, k, g + a, k + a);
dc.FillRect(&rect, &brush);
}
}
}
}

求高手帮忙解决。。。急。。。跪谢
------解决思路----------------------
收到的数据直接转换成CString,再使用其成员函数CString::Mid提取对应的字符与你设定的关键字比较。
------解决思路----------------------
CString是字符串
你要判断的是字符
直接用
char dot='.'
试试