lyq 发表于 2007-2-6 10:13:10

急需解决在cvi使用中遇到的几个问题

1、CVI运行界面点击最大化按钮后,面板上的控件没有相应的变大感觉很不协调,怎么办呢?
2、数组元素是用科学计数法表示的浮点数,无法画图用什么函数可以将其转化成一般形式的浮点数呢?
3、串口通信不稳定,数据有时可以收到有时不可以,确定硬件没有问题,软件也单步调试过,可问题究竟在那呢?
//串口发送数据
int CVICALLBACK SendCom (int panel, int control, int event,
                void *callbackData, int eventData1, int eventData2)
{
        char data={0};

       
        switch (event)
        {
                case EVENT_COMMIT:
                       
                        GetCtrlVal(rs232pc,RS232COMMU_SENDTEXTBOX,data);
                       
                        FlushOutQ(comindex);
                        FlushInQ(comindex);
                       
                       
                       
                        status=ComWrt(comindex,data,strlen(data));
                       
                        if(status!=strlen(data))
                                MessagePopup("Error","Send data failed!");
                        break;
        }
        return 0;
}

//串口读取数据

int CVICALLBACK ReadData (int panel, int control, int event,
                void *callbackData, int eventData1, int eventData2)
{
        char data={0};
        int strLen;
        switch (event)
                {
                case EVENT_COMMIT:
                       
                       
            strLen=GetInQLen(comindex);
            status=ComRd (comindex, data, strLen);

            //读取数据是否成功
         if(status<0)
            {
               //读取数据失败,显示出错信息并退出
               MessagePopup ("Error", "Read data failed!");
                     break;
                        }
                       
                        //将读取的数据显示在TEXTBOX控件中
                  
                        ResetTextBox(rs232pc, RS232COMMU_RECEIVETEXTBOX , data);
                        SetActiveCtrl(rs232pc,RS232COMMU_RECEIVETEXTBOX);
                       
                        FlushInQ(comindex);
                       
                  break;
                }
        return 0;
}

cpubbs 发表于 2007-2-6 10:32:23

1,如果这个必要性不是太大的话最好不要用,如果要做的话可以尝试一下这个,双击面板,然后从other attribute里面勾选上scale contents on resize,这样试试!
2,您试一下看这个画图控件的数据形式改一下,因为数组和它不匹配!
3,数组您这样接收相当于扫描,您尝试用事件,installcomevent(),名字大概是如此,自动用事件接收的!

祝您好运!

yufuwan 发表于 2007-2-6 15:26:39

我也初学CVI,没看懂第二个问题,为什么数组元素和画图有关那,是用到Graph控件画曲线图么,

lyq 发表于 2007-2-6 16:41:49

回复 #2 cpubbs 的帖子

1、FlushInQ(comindex);
为什么无法清空输入队列呢;
2、有时不往串口发送数据也仍然能读回数据,不知为何?

cpubbs 发表于 2007-2-6 19:32:10

1,是可以清除的,是不是清理后又有收到呢?建议用事件会比较好呢兄弟!这样它会自动接收的!
2,可能跟1这个问题有关系!

lyq 发表于 2007-2-7 17:55:31

回复 #5 cpubbs 的帖子

第一个问题可能与我连接的仪器有关
在第一次启动时总是不断的送数据
与技术支持交流过,他们说没遇到这样的问题.

cpubbs 发表于 2007-2-7 17:58:28

有没有断线,比如地线有没有断呢?如果有其他地方破到的话,可能会收到一些乱七八糟的东西的!

lyq 发表于 2007-2-8 19:54:53

回复 #7 cpubbs 的帖子

两台机子用串口连起来后可以正常通信
所以断定没有断线
同时受到的数据不是乱七八糟的而是最后一次操作返回的正确数据

cpubbs 发表于 2007-2-8 20:12:37

还是建议用事件函数会比较方便,您这种情况我没有试过,我一直用事件的!

yufuwan 发表于 2007-2-15 09:39:57

原帖由 lyq 于 2007-2-7 17:55 发表
第一个问题可能与我连接的仪器有关
在第一次启动时总是不断的送数据
与技术支持交流过,他们说没遇到这样的问题.

给技术支持打电话时,我们的 CVI是正版6.0的,但是技术支持只对7.1以上提供咨询,要咨询则需要提供序列号,朋友可以共享下序列号吗,否则我们无法获取技术支持~~~~`

lyq 发表于 2007-2-28 21:46:31

回复 #10 yufuwan 的帖子

我说的技术支持是设备方的
不是CVI的
我用的CVI都是从网上下的呢非正版

lyq 发表于 2007-3-1 17:23:43

回复 #9 cpubbs 的帖子

想实现的功能如下:
1、按下某一按钮开始与串口连接进行,
同时InstallComCalback()(是这个函数吗?)
int InstallComCallback (int COMPort, int eventMask, int notifyCount, int eventCharacter, ComCallbackPtr callbackPtr, void *callbackData);
l2、然后用定时器每隔一秒发送一个命令(仪器收到命令会送出数据)
3、我想每次获取20个字符,所以变量的值如下:
eventMask=LWRS_RXFLAG;
notifyCount=20;
eventCharacter=20;
4、用void ComCallback(int COMport, int eventMask, void *callbackdata)
对接受的数据进行相应的处理

你看看有什么地方不对呢?
希望尽快得到您的答复,谢谢!

cpubbs 发表于 2007-3-1 19:58:57

InstallComCalback()这个是的!您可以尝试一下看对不对!在CVI中有相应的串口的例子,您可以搜索一下串口的例子,它里面有用到这个函数的!您上面是20字节,这样配置是对的!eventMask=LWRS_RXFLAG这个我一下子记不太清楚了,好像有一个接收的,在它的右击HELP里面有显示一个事件类型的!

lyq 发表于 2007-3-1 20:22:31

http://www.cpubbs.com/bbs/viewthread.php?tid=14148&highlight=%B9%D8%D3%DA%B4%AE%BF%DA%CD%A8%D0%C5%B5%C4%D2%BB%CE%CA%CC%E2


上面地址里的问题我今天也遇到了
怎么解决呢?

desertwolf 发表于 2007-4-2 09:05:40

受教了!!!!!!!!!!!!!!!!!
页: [1] 2
查看完整版本: 急需解决在cvi使用中遇到的几个问题