whb 发表于 2006-5-21 04:38:41

大家帮我看看这个串口程序有没有问题,thank you!

我在做串口通讯,自发自收一组数据,程序编译通过了,并已将机箱后面25针的串口2和3角用导线短接,但是接收不到数据。是程序有问题还是其它一些硬件原因?
发送程序如下:
static float b;   /*要发送的实型数组*/
int CVICALLBACK Send (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{   char c;
    char com={"COM1"};
    char *buf;
int size,j,k,n=0;
int status;
switch (event)
{
case EVENT_COMMIT:
buf=malloc(1000) ;
for(j=0;j<=47;j++)
   b=2;/*给数组变量赋值*/
for(j=0;j<=47;j++)
   sprintf(c,"%6.2f",b);/*将实型数据转化为字符型数据*/
   for(j=0;j<=47;j++)   
   { for(k=0;k<=8;k++)
       buf=c,n++;}   /*将二维字符数组转化为一维*/
    size=strlen(buf);
    status=OpenComConfig( 1,com,9600,0,8,1,1000,1000);/*发送*/
         if(status!=0)
          {MessagePopup("Error","config failed!");
         return 0;}
SetCTSMode(1,LWRS_HWHANDSHAKE_OFF);
FlushOutQ(1);
                FlushInQ(1);
         status=ComWrt(1,buf,size);
if( status!=size)
                MessagePopup("Error","send data failed!");
while(1)
{   size=GetOutQLen(1);
      if(size==0)
         break;}
CloseCom(1);
QuitUserInterface(0);
            break;
}
return 0;
}
接收程序如下:
static float e;
int CVICALLBACK Start (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{   
    char com={"COM1" };
    char cuf;
    char buf;
    int j,k,n=0;
    int size;
    int status;
      
            switch (event)
{
case EVENT_COMMIT:

status=OpenComConfig(1,com,9600,0,8,1,1000,1000);
         if(status!=0)
                {MessagePopup("Error","config failed!");
               return 0;}                                       /*打开串口*/
SetCTSMode(1,LWRS_HWHANDSHAKE_OFF);
size=GetInQLen(1);
status=ComRd(1,cuf,size);   /*读取串口字符数据*/
                if( status!=size)
                MessagePopup("Error","send data failed!");
CloseCom(1);   

for(j=0;j<=47;j++)       /*将字符串数据转化为实型数据*/
{for(k=0;k<=8;k++)
   d=cuf,n++;
               e=atof(d);}   
不知哪位高手可以指点一下,我为什么收不到数据.
[此贴子已经被作者于2006-5-20 20:42:43编辑过]

cpubbs 发表于 2006-5-25 07:19:54

解决后可以留下解决的办法,以后的朋友可以共享,不用重复去研究了,呵呵!

cpubbs 发表于 2006-5-22 17:00:49

兄弟你看一下CVI自带的一个串口操作的例子,按照里面的步骤修改,我做过一次,是可以实现的,它接收好像要一个installcomevent,到时候有数据来的时候它会产生接收事件,这样就能接收到的!还有配置我一下记不太清楚是在哪里配置了!看一下例子就会很清晰的!

whb 发表于 2006-5-25 00:40:05

经过调试,这个问题已经解决了,谢谢各位的指导。

easons 发表于 2006-5-24 00:52:33

<P>机箱后面25针的串口2和3角??据我所知PC都是9口的,当然有25口的串口,只是请你确认</P>
<P>你发送数据后已经关闭了串口,然后又打开串口?即使是不调用closecom,用OpenComConfig也是先关后开,也就是重新初始化的com口</P>
页: [1]
查看完整版本: 大家帮我看看这个串口程序有没有问题,thank you!