某段代码在vxsim下正常运行,下到板子上不能正确运行
各位好,有一段代码我在vxsim和VC下都运行正常,但下到PPC板子上运行就只显示结果(我在该代码段后加printf(“end”);“end” 能显示出来),不能打印value=...,将该代码嵌入到系统中后,系统就卡在这儿,不能执行后面的程序
[解决办法]
#include "vxWorks.h"
#include "stdio.h"
#include "inetLib.h"
#include "stdioLib.h"
#include "strLib.h"
#include "semLib.h"
#include "taskLib.h"
#include "msgQLib.h"
#define SELF_ID 2
typedef unsigned short BYTE;
typedef unsigned char CHAR;
typedef unsigned int INT;
typedef unsigned long LONG;
typedef struct
{
CHAR MSG_Type;//消息类型
BYTE sor_addr;//源节点地址
BYTE next_addr;//下一跳节点地址
BYTE sor_addr2;//源节点地址(最初发起节点)
BYTE dest_addr;//目的节点地址
CHAR teamNUM;//目的节点编队号
CHAR PRI:2;
char data[600];//数据
}ordMsg_R;
typedef struct
{
ordMsg_R elem[MAXSize];
int head,tail;
}queue;
void Clear(int address,int pri)//清空
{
if(address<SELF_ID)
{
qu[address-1][pri-1].head=qu[address-1][pri-1].tail=0;
}
else if(address>SELF_ID)
{
qu[address-2][pri-1].head=qu[address-2][pri-1].tail=0;
}
}
int IsFull(queue q)//队列是否为空
{
if(q.head==MAXSize)
return 1;
else
return 0;
}
int IsEmpty(queue q)//队列是否满
{
if(q.tail==q.head)
return 1;
else
return 0;
}
void Push(ordMsg_R e)//进队列
{
if(e.dest_addr<SELF_ID)
{
if(IsFull(qu[e.dest_addr-1][e.PRI-1]))
{
printf("this queue is full!\n");
return ;
}
qu[e.dest_addr-1][e.PRI-1].elem[qu[e.dest_addr-1][e.PRI-1].head++]=e;
}
else if(e.dest_addr>SELF_ID)
{
if(IsFull(qu[e.dest_addr-2][e.PRI-1]))
{
printf("this queue is full!\n");
return ;
}
qu[e.dest_addr-2][e.PRI-1].elem[qu[e.dest_addr-2][e.PRI-1].head++]=e;
}
}
ordMsg_R Pop(int address,int pri)//出队列
{
ordMsg_R temp;
temp.dest_addr=0;
temp.PRI=0;
strcpy(temp.data,"");
if(address<SELF_ID)
{
if(IsEmpty(qu[address-1][pri-1]))
{
printf("this queue is empty!\n");
return temp; //队列为空,返回的是一个无效的值
}
qu[address-1][pri-1].tail++;
return qu[address-1][pri-1].elem[qu[address-1][pri-1].tail-1];
}
else //if(address>SELF_ID)
{
if(IsEmpty(qu[address-2][pri-1]))
{
printf("this queue is empty!\n");
return temp; //队列为空,返回的是一个无效的值
}
qu[address-2][pri-1].tail++;
return qu[address-2][pri-1].elem[qu[address-2][pri-1].tail-1];
}
}
int NumberOfQueue(int addre,int pr) //取队列元素个数
{
int num;
if(addre<SELF_ID)
{
num=qu[addre-1][pr-1].head-qu[addre-1][pr-1].tail;
}
else if(addre>SELF_ID)
{
num=qu[addre-2][pr-1].head-qu[addre-2][pr-1].tail;
}
return num;
}
void queueInitial()
{
int i,j;
queue qu[MAXAddress][MAXPri];
ordMsg_R ordmsg_r[100];
//ordMsg_R temp,temp1;
ordmsg_r[0].sor_addr=1;
ordmsg_r[0].dest_addr=2;
ordmsg_r[0].PRI=1;
strcpy(ordmsg_r[0].data,"数据发送成功!");
Push(ordmsg_r[0]);
//Push(ordmsg[i]);
Pop(2,1);
}
}
}
这是我初步整理的,可能还不能上机调,大家帮我看看,当运行到最后一行出问题
[解决办法]
请各位高手指点?
[解决办法]
望各位高手指点