whb 发表于 2006-5-19 02:06:57

关于串口通信的一问题

在串口通讯时,自发自收,程序编译通过可以运行,但接收不到数据,是不是还要对串口作些设置
[此贴子已经被作者于2006-5-18 19:39:50编辑过]

cpubbs 发表于 2006-5-19 18:33:54

你对它装了事件了吗兄弟?installcomcallback,函数大概是这样子的!你可以看看CVI的例子,上面有的!

mouse 发表于 2006-5-21 03:30:39

<P>我先问一下,你的计算机的COM口有没有短接!如果没有,当然收不到.</P>
<P>若有可以试着这样</P>
<P>1 申请一个字符变量并给它付值,然后打开串口,把刚才变量里的数据发出去.如下</P>
<P>//            comport         ——串口号 ;<BR>//            senddata      ----自付变量</P>
<P>OpenComConfig (comport, "",9600,3, 8, 2, 1000, 1000);<BR>FlushOutQ(comport);<BR>ComWrt(comport,senddata,3);//向串口写数据</P>
<P>2 从串口读数据</P>
<P> ComRed();</P>

whb 发表于 2006-5-21 04:36:01

<P>我在做串口通讯,自发自收一个程序,程序编译通过没有问题,并已将25针的串口2和3角用导线短接(还要不要其它的处理),但是接收不到数据,发送程序如下:</P>
<P><FONT size=2>static float b;   /*要发送的实型数组*/ <BR>int CVICALLBACK Send (int panel, int control, int event,<BR>void *callbackData, int eventData1, int eventData2)<BR>{   char c; <BR>    char com={"COM1"};<BR>    char *buf;<BR> int size,j,k,n=0;<BR> int status;<BR> switch (event)<BR>{<BR>case EVENT_COMMIT:<BR>buf=malloc(1000) ;<BR>for(j=0;j&lt;=47;j++)<BR>   b=2;/*给数组变量赋值*/ <BR>for(j=0;j&lt;=47;j++)<BR>   sprintf(c,"%6.2f",b);/*将实型数据转化为字符型数据*/<BR>   for(j=0;j&lt;=47;j++)   <BR>   { for(k=0;k&lt;=8;k++)<BR>       buf=c,n++;}   /*将二维字符数组转化为一维*/<BR>    size=strlen(buf);<BR>    status=OpenComConfig( 1,com,9600,0,8,1,1000,1000);/*发送*/<BR>         if(status!=0)<BR>          {MessagePopup("Error","config failed!");<BR>         return 0;}<BR>SetCTSMode(1,LWRS_HWHANDSHAKE_OFF);<BR>FlushOutQ(1);<BR>                FlushInQ(1);<BR>         status=ComWrt(1,buf,size);<BR>if( status!=size)<BR>                MessagePopup("Error","send data failed!");</FONT></P>
<P><FONT size=2>while(1)<BR>{   size=GetOutQLen(1);<BR>      if(size==0)<BR>         break;}<BR>CloseCom(1);<BR>QuitUserInterface(0);<BR>            break;<BR>}<BR> return 0;<BR>}<BR></FONT><FONT size=3>接收如下:</FONT></P>
<P><FONT size=2>static float e;<BR>int CVICALLBACK Start (int panel, int control, int event,<BR>void *callbackData, int eventData1, int eventData2)<BR>{   <BR>    char com={"COM1" };<BR>    char cuf;<BR>    char buf;<BR>    int j,k,n=0;<BR>    int size;<BR>    int status;<BR>      <BR>            switch (event)<BR>{<BR>case EVENT_COMMIT:<BR><BR>status=OpenComConfig(1,com,9600,0,8,1,1000,1000);<BR>         if(status!=0)<BR>                {MessagePopup("Error","config failed!");<BR>               return 0;}                                       /*打开串口*/<BR>SetCTSMode(1,LWRS_HWHANDSHAKE_OFF);<BR>size=GetInQLen(1);<BR>status=ComRd(1,cuf,size);   /*读取串口字符数据*/ <BR>                if( status!=size)<BR>                MessagePopup("Error","send data failed!");<BR>CloseCom(1);   <BR> <BR>for(j=0;j&lt;=47;j++)       /*将字符串数据转化为实型数据*/<BR>{for(k=0;k&lt;=8;k++)<BR>   d=cuf,n++;<BR>               e=atof(d);}    </FONT></P>
<P><FONT size=2>不知哪位高手可以指点一下,我为什么收不到数据. </FONT></P>
页: [1]
查看完整版本: 关于串口通信的一问题