小弟刚接触串口通信,还请大家多多帮忙。我用mscomm控件实现串口通信,并向串口发送不同的指令。其中指令是由随机算法得到的。我想在串口得到一个“真”信号时输出一条指令,得到“假”信号时则不发送指令。可是我把这段随机代码加到oncomm()函数后,程序就没相应了。不知道什么原因,还请高手们帮忙解决,具体该怎么做。随机代码如下:#include "stdlib.h"
#include "time.h"void main(void)
{int i,j=1,k;
int I=0;
int flag[1601]={0};//保存指令的数组共1600个,初始值都为同一种。先用0代替了
int num[3]={0};//在1600个指令中每种指令的个数(3表示算上初始指令共3种指令) srand((unsigned)time(NULL));
for(i=1;i<=1600;i++)//指令1,在这用“2”代替
if(i%100)
{
if(num[1]<(27+(((i%400)<=100&&(i%400!=0))?0:1)))
{
if(!flag[I=(rand()%100)+(i/100)*100])
{
flag[I]=2;
++num[1];
}
else
{
i--;
continue;
}
}
}
else
{
num[1]=0;
continue;
}
}
for(i=1;i<=1600;i++)//指令2,在这用“3”代替
{
if(i%100)
{
if(num[2]<10)
{
if(!flag[I=(rand()%100)+(i/100)*100])
{
flag[I]=3;
++num[2];
}
else
{
i--;
continue;
}
}
}
else
{
num[2]=0;
continue;
}
}
#include "time.h"void main(void)
{int i,j=1,k;
int I=0;
int flag[1601]={0};//保存指令的数组共1600个,初始值都为同一种。先用0代替了
int num[3]={0};//在1600个指令中每种指令的个数(3表示算上初始指令共3种指令) srand((unsigned)time(NULL));
for(i=1;i<=1600;i++)//指令1,在这用“2”代替
if(i%100)
{
if(num[1]<(27+(((i%400)<=100&&(i%400!=0))?0:1)))
{
if(!flag[I=(rand()%100)+(i/100)*100])
{
flag[I]=2;
++num[1];
}
else
{
i--;
continue;
}
}
}
else
{
num[1]=0;
continue;
}
}
for(i=1;i<=1600;i++)//指令2,在这用“3”代替
{
if(i%100)
{
if(num[2]<10)
{
if(!flag[I=(rand()%100)+(i/100)*100])
{
flag[I]=3;
++num[2];
}
else
{
i--;
continue;
}
}
}
else
{
num[2]=0;
continue;
}
}
串口只有有数据到来的时候,才会响应oncomm()