首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

C++builder 与单片机的有关问题

2013-06-25 
C++builder 与单片机的问题做一个数据采集系统,利用上位机接受单片机发送的数据然后用chart控件画图显示,

C++builder 与单片机的问题
做一个数据采集系统,利用上位机接受单片机发送的数据然后用chart控件画图显示,由于使用的是12位AD转换芯片,所以单片机发送的数据是12的,用两个字节发送;现在弄不明白C++builder该如何处理单片机发送的数据啊,是设置MSComm控件接受到两个字节在触发oncomm事件么,然后再将十六进制的数据转换成int型的,再利用数组将数据送Tchart画图?LZ是C++builder新手啊,各位高人多多指教,谢谢了。
[解决办法]
你看看你的下位机协议就能知道,假如下位机协议规定一个12位数据所表示点的横坐标和纵坐标,上位机解析完就画点即可
比如CLQ7.txt储存了上位机解析的坐标点
//读取文件
    FILE* pFile=fopen("CLQ7.txt","r");
char* pBuf;
fseek(pFile,0,SEEK_END);// 移动文件指针到文件末尾
int len=ftell(pFile);// 获取文件指针所在位置到文件开始处的位置
pBuf=new char[len+1];
rewind(pFile);// 把文件指针移动到文件开头
fread(pBuf,1,len,pFile);// 读取文件
pBuf[len]=0;// 最后一个字符设置为结束符0,这样就不会接收乱码了
fclose(pFile);// 关闭文件
    char* buffer;
    int length=0;
    buffer=new char[len+1];
    for(int i=0;i<len;i++)
    {
        if(pBuf[i]=='\n')
        {
            buffer[length]=10*StrToInt(pBuf[i-2])+StrToInt(pBuf[i-1]);
            length++;
        }
    }
    //X轴
    Canvas->MoveTo(20,180);
    Canvas->LineTo(640,180);
    //Y轴
    Canvas->MoveTo(20,180);
    Canvas->LineTo(20,20);
    //画点
   for(int i=0;i<(length);i++)
    {
        Canvas->MoveTo(x,120-y);
        //设置横坐标
        //x++;
        x=x+10;
        //设置纵坐标
        y=buffer[i];
        Canvas->LineTo(x,120-y);
    }

热点排行