当前位置: 代码迷 >> 单片机 >> 烦啊还是串口有关问题
  详细解决方案

烦啊还是串口有关问题

热度:47   发布时间:2016-04-28 16:12:44.0
烦啊,还是串口问题

打印机能收到串口发过去的数据,用打印机的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是定时器计数

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