cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 4593|回复: 18

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

[复制链接]
发表于 2007-2-6 10:13:10 | 显示全部楼层 |阅读模式
1、CVI运行界面点击最大化按钮后,面板上的控件没有相应的变大感觉很不协调,怎么办呢?
2、数组元素是用科学计数法表示的浮点数,无法画图用什么函数可以将其转化成一般形式的浮点数呢?
3、串口通信不稳定,数据有时可以收到有时不可以,确定硬件没有问题,软件也单步调试过,可问题究竟在那呢?
//串口发送数据
int CVICALLBACK SendCom (int panel, int control, int event,
                void *callbackData, int eventData1, int eventData2)
{
        char data[2000]={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[5000]={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;
}
发表于 2007-2-6 10:32:23 | 显示全部楼层
1,如果这个必要性不是太大的话最好不要用,如果要做的话可以尝试一下这个,双击面板,然后从other attribute里面勾选上scale contents on resize,这样试试!
2,您试一下看这个画图控件的数据形式改一下,因为数组和它不匹配!
3,数组您这样接收相当于扫描,您尝试用事件,installcomevent(),名字大概是如此,自动用事件接收的!

祝您好运!
发表于 2007-2-6 15:26:39 | 显示全部楼层
我也初学CVI,没看懂第二个问题,为什么数组元素和画图有关那,是用到Graph控件画曲线图么,
 楼主| 发表于 2007-2-6 16:41:49 | 显示全部楼层

回复 #2 cpubbs 的帖子

1、FlushInQ(comindex);
为什么无法清空输入队列呢;
2、有时不往串口发送数据也仍然能读回数据,不知为何?
发表于 2007-2-6 19:32:10 | 显示全部楼层
1,是可以清除的,是不是清理后又有收到呢?建议用事件会比较好呢兄弟!这样它会自动接收的!
2,可能跟1这个问题有关系!
 楼主| 发表于 2007-2-7 17:55:31 | 显示全部楼层

回复 #5 cpubbs 的帖子

第一个问题可能与我连接的仪器有关
在第一次启动时总是不断的送数据
与技术支持交流过,他们说没遇到这样的问题.
发表于 2007-2-7 17:58:28 | 显示全部楼层
有没有断线,比如地线有没有断呢?如果有其他地方破到的话,可能会收到一些乱七八糟的东西的!
 楼主| 发表于 2007-2-8 19:54:53 | 显示全部楼层

回复 #7 cpubbs 的帖子

两台机子用串口连起来后可以正常通信
所以断定没有断线
同时受到的数据不是乱七八糟的而是最后一次操作返回的正确数据
发表于 2007-2-8 20:12:37 | 显示全部楼层
还是建议用事件函数会比较方便,您这种情况我没有试过,我一直用事件的!
发表于 2007-2-15 09:39:57 | 显示全部楼层
原帖由 lyq 于 2007-2-7 17:55 发表
第一个问题可能与我连接的仪器有关
在第一次启动时总是不断的送数据
与技术支持交流过,他们说没遇到这样的问题.


给技术支持打电话时,我们的 CVI是正版6.0的,但是技术支持只对7.1以上提供咨询,要咨询则需要提供序列号,朋友可以共享下序列号吗,否则我们无法获取技术支持~~~~`
 楼主| 发表于 2007-2-28 21:46:31 | 显示全部楼层

回复 #10 yufuwan 的帖子

我说的技术支持是设备方的
不是CVI的
我用的CVI都是从网上下的呢非正版
 楼主| 发表于 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)
对接受的数据进行相应的处理

你看看有什么地方不对呢?
希望尽快得到您的答复,谢谢!
发表于 2007-3-1 19:58:57 | 显示全部楼层
InstallComCalback()这个是的!您可以尝试一下看对不对!在CVI中有相应的串口的例子,您可以搜索一下串口的例子,它里面有用到这个函数的!您上面是20字节,这样配置是对的!eventMask=LWRS_RXFLAG这个我一下子记不太清楚了,好像有一个接收的,在它的右击HELP里面有显示一个事件类型的!
 楼主| 发表于 2007-3-1 20:22:31 | 显示全部楼层
发表于 2007-4-2 09:05:40 | 显示全部楼层
受教了!!!!!!!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-4-21 16:28 , Processed in 2.090550 second(s), 7 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表