我在做串口通讯,自发自收一组数据,程序编译通过了,并已将机箱后面25针的串口2和3角用导线短接,但是接收不到数据。是程序有问题还是其它一些硬件原因?
发送程序如下:
static float b[48]; /*要发送的实型数组*/
int CVICALLBACK Send (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{ char c[48][9];
char com[10]={"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[j]=2; /*给数组变量赋值*/
for(j=0;j<=47;j++)
sprintf(c[j],"%6.2f",b[j]); /*将实型数据转化为字符型数据*/
for(j=0;j<=47;j++)
{ for(k=0;k<=8;k++)
buf[n]=c[j][k],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[48];
int CVICALLBACK Start (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
char com[10]={"COM1" };
char cuf[1000];
char buf[10];
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[k]=cuf[n],n++;
e[j]=atof(d);}
不知哪位高手可以指点一下,我为什么收不到数据.
[此贴子已经被作者于2006-5-20 20:42:43编辑过]
|