关于串口通信的一问题
在串口通讯时,自发自收,程序编译通过可以运行,但接收不到数据,是不是还要对串口作些设置[此贴子已经被作者于2006-5-18 19:39:50编辑过]
你对它装了事件了吗兄弟?installcomcallback,函数大概是这样子的!你可以看看CVI的例子,上面有的! <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>
<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<=47;j++)<BR> b=2;/*给数组变量赋值*/ <BR>for(j=0;j<=47;j++)<BR> sprintf(c,"%6.2f",b);/*将实型数据转化为字符型数据*/<BR> for(j=0;j<=47;j++) <BR> { for(k=0;k<=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<=47;j++) /*将字符串数据转化为实型数据*/<BR>{for(k=0;k<=8;k++)<BR> d=cuf,n++;<BR> e=atof(d);} </FONT></P>
<P><FONT size=2>不知哪位高手可以指点一下,我为什么收不到数据. </FONT></P>
页:
[1]