vc++MSComm控件接收数据并曲线实时显示
void CSCommTestDlg::OnComm()
{
// TODO: Add your control notification handler code here
VARIANT m_input1;
COleSafeArray m_input2;
long length,i;
BYTE data[600];
CString str;
float d=0;
static int Count=0;
if(m_ctrlComm.GetCommEvent()==2)//接收缓冲区内有字符
{
m_input1=m_ctrlComm.GetInput();//读取缓冲区内的数据
m_input2=m_input1;//将VARIANT型变量转换为ColeSafeArray型变量
length=m_input2.GetOneDimSize();//确定数据长度
for(i=0;i<length;i++)
m_input2.GetElement(&i,data+i);//将数据转换为BYTE型数组
for(i=0;i<length;i++)//将数组转换为Cstring型变量
{
BYTE a=* (unsigned char *)(data+i);
BYTE b=* (unsigned char *)(data+(++i));
float c=((int)a+(int)b*256)*0.0625;
d+=c;
}
str.Format("%.1f",d);
m_strEditRXData=str;//将刚采集的数加到编辑框中
}
UpdateData(FALSE); //更新编辑框内容
POINT temp[31];
for ( i=0;i<31;i++)
{
temp[i]=polyLine[i];
}
for ( i=1;i<31;i++)
{
polyLine[i].y=temp[i-1].y;
}
polyLine[0].y=290-8*d;
LinePoints++;
}
上面的接受数据能看懂,就是后面的画图程序,polyLine以及polyLine[i].y是什么意思,?
POINT temp[31];
for ( i=0;i<31;i++)
{
temp[i]=polyLine[i];
}
for ( i=1;i<31;i++)
{
polyLine[i].y=temp[i-1].y;
}
polyLine[0].y=290-8*d;
LinePoints++;
??
各位给我看看了,麻烦了。 MSComm VC++ 串口通信 曲线 MFC
[解决办法]
POINT 这是一"点"结构体, 里面有x,y成员.
polyLine[i].y=temp[i-1].y; 这个的意思就是把点temp[i-1]的y给polyLine[i]的y.
实际就是两个点数组在传值.
//把点数组polyLine的值全部给点数组temp
for ( i=0;i<31;i++)
{
temp[i]=polyLine[i];
}
//然后把y坐标值错位.
for ( i=1;i<31;i++)
{
polyLine[i].y=temp[i-1].y;
}
.p' (10,?)
[解决办法]
-------------------------
width = 300
[解决办法]
不知道为啥,这个矩形编辑的时候是个矩形,一提交咋长这幅模样了。楼主认识它是个矩形就好。
[解决办法]
坐标变换撒.至于怎么变,那就是数学问题了.
x轴对称再移动原点即可.
假设你想在屏幕坐标的, x0,y0处作为你想绘制的坐标的原点.
数学坐标计算出来是x1,y1,
那么在屏幕上应该绘制的点为: x = x1 + x0; y= -y1+y0