读书人

烦啊还是串口有关问题

发布时间: 2012-04-12 15:46:35 作者: rapoo

烦啊,还是串口问题

打印机能收到串口发过去的数据,用打印机的Hex Dump看打印机收到的16进制数确认打印机是收到正确的数据

但咋就收不到打印机发回来的数据呢

用PC给打印机发指令,能正常收到打印机返回的数据

PrintASCII68(0,3,"2.Printer");
for(i=0;i<17;i++){StringD[i]=0;}
REN=1;
SBUF=0x1d;
while(TI==0);
TI=0;
SBUF=0x49;
while(TI==0);
TI=0;
SBUF=0x42;
while(TI==0);
TI=0;
for(i=0;i<17;i++)
{
T_counter1=0;
while(RI==0)
{
if(T_counter1>10)
{
if((i==0)|(i==1)){/*PrintASCII68(0,4,"No printer");delayms(2000);*/goto LP0;}
else{break;}
}
}
RI=0;
StringD[i]=SBUF;
}
PrintASCII68(96,3,"Ok");
Printer=1;
PrintASCII68(0,4,StringD);
for(i=0;i<17;i++){StringD[i]=0;}
delayms(200);
SBUF=0x1d;
while(TI==0);
TI=0;
SBUF=0x49;
while(TI==0);
TI=0;
SBUF=0x43;
while(TI==0);
TI=0;
for(i=0;i<17;i++)
{
T_counter1=0;
while(RI==0)
{
if(T_counter1>10)
{
if((i==0)|(i==1)){/*PrintASCII68(0,4,"No printer");delayms(2000);*/goto LP0;}
else{break;}
}
}
RI=0;
StringD[i]=SBUF;
}
PrintASCII68(0,5,StringD);

LP0:
for(i=0;i<9;i++){StringD[i]=0;}
if(Printer==0){PrintASCII68(96,3,"No");}
delayms(200);

程序上也看不出多大的问题,线路上测了下都是通的,T_counter1是定时器计数

[解决办法]
接受要使用中断。
[解决办法]
使用的什么打印机呀?有没有返回数据的管脚没有控制到?(方向、读/写)?

读书人网 >单片机

热点推荐