ccwind 发表于 2007-7-31 18:35:09

新手求助 关于串口采集

现在编了一个程序ADAM5510模块从下位机通过串口发送数据

数据格式为8路AD采集    最后的52为数据校验位
>+05015+05025+04864+05385+04953+05063+05001+04362<52

接到的数据在文本框显示应该为
>+05015+05025+04864+05385+04953+05063+05001+04362<52

>+05103+05238+04907+05504+04974+05111+04999+04389<58

>+05074+05213+04923+05458+04980+05157+04999+04397<58

这个是比较完美的结果但是我采集的显示的数据是

<49
>+05087+05243+04910+05544+04982+05157+04999+04373<55
>+04999
4400<58
>+05082+05238+04899+05565+04977+
07+05514+04972+05103+04999+04378<59
>+05071+0523
5+05396+04961+05063+04999+04402<61
>+05101+05232
09+04999+04410<57
>+0501
>+05017+05039+04738+05407+04953+05060+04
04413<61
>+05106+05243+04888+055
+05001+04400<62


程序采用的是定时器采集
int CVICALLBACK Timerback (int panel, int control, int event,
                void *callbackData, int eventData1, int eventData2)
{

        switch (event)
        {
                case EVENT_TIMER_TICK:
                      COUNTlog=GetInQLen(comselect);   //获取串口字符数                           
                              if(COUNTlog>0)                     
                {
                        ComRd(comselect,readBuf,COUNTlog);
                        SetCtrlVal(PANEL,PANEL_RECEIVETEXT,readBuf);                                    
                        SetCtrlVal(PANEL,PANEL_RECEIVETEXT,"\r");
                        SetActiveCtrl(PANEL,PANEL_RECEIVETEXT);
                        strcat(readBuf,space); //将采集到的数据后边加\r                                 
                        strcat(save,readBuf);//将采集到的数据放入save数组中save数组用于文件存储      
                        memset(readBuf,0,80);   //清空字符串
                        COUNTlog=0;
                       FlushInQ(comselect);
                }
                else
                {;}
                break;
        }
        return 0;
}

请哪位给我讲解讲解   多谢!

想用 InstallComCallback这个函数 但是不知道该怎么操作

cpubbs 发表于 2007-8-1 21:20:36

InstallComCallback这个在CVI自带的例子中有用到的,您可以看一下的,好运!它自带的例子中有用这个来进行读数!
页: [1]
查看完整版本: 新手求助 关于串口采集