串口通讯是不是每次都要初始化
ma100 2005-05-01 06:07:38 用VC做的一个程序,从104上传一幅图片,每次先运行VC的程序没问题,问题是若先运行104上的程序,就可能通讯不上.若每次传图片时初始化一下串口而不是在构造函数中初始化就没问题.
104程序:(dos)
unsigned char RecByte(void)
{
unsigned char j,rsstatus,incode;
int i;
rsstatus=inportb(COM1+5);
if ((rsstatus&0x01)==0x01)
incode=inportb(COM1);
else
incode='E';
return incode;
}
void TrsByte(char buf) //串口向外发数据
{
inportb(COM1+5);
outportb(COM1,buf);
}
int RSHandshake(int n)
{
char ch,a='A',b='B';
long count=0;
inportb(COM1);
while(1)
{
TrsByte(a);
ch=RecByte();
if(ch=='A')
{
//////////////
104收到了A,但发送的B,PC没有收到,此处加延时也没用
///////////
TrsByte(b);
break;
}
delay(200);
if ( n>0 )
{
count++;
if(count==n)
{
return 0; //failed
}
}
}
return 1; //success
}
////////////////////////////////////////////////////////////
PC程序(vc)
UINT ThreadTransBmp(LPVOID pParam)
{
CString Caption = "文件传送";
UCHAR ch;
//handshake with spectrum analyzer
while(1)
{
ch = rs.ReadByte();
if(ch=='A')
{
rs.SendByte('A');
ch = rs.ReadByte();
if(ch=='B')
{
break;
}
}
}
....
}