小弟还是一个新手,请教各位一个问题,还望不吝赐教!

zd1219 2001-07-20 10:17:43
以下是我在tc下的一个小程序,功能是向串口端port发送一个字符,但是在执行到
“if(r.h.ah&128)”时,老是判断出错,我查了一下书,发现这个语句是用来判
断存放串口端状态位的ah寄存器的位7--超时错误标志是否为1,请教各位,com口
在何时发生超时错误,又如何解决?还望多多指教!
#define PORT 0
#include <dos.h>
#include <stdio.h>
void sport(),port_init(),wait();
void sport(port,c)
int port;
char c;
{
union REGS r;
printf("%d,\n",r.h.ah); /*debug 4*/
r.x.dx=port;
r.h.al=c;
r.h.ah=1;
printf("%d,%d,\n",r.h.ah,r.h.al); /*debug 5*/
int86(0x14,&r,&r);
printf("%d,%d,\n",r.h.ah,r.h.al); /*debug 6*/
if(r.h.ah&128) /* 出错部分*/
{
printf ("send error detected in serial port\n");
exit(1);
}
}

...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ueillemmx 2001-07-22
  • 打赏
  • 举报
回复
将128该为127试试
z_sky 2001-07-20
  • 打赏
  • 举报
回复
串口不正常(不存在或参数设置不正确)、串口缓冲区满等都可能引起超时。
建议你用bioscom(..)函数(查看帮助),或直接写端口(outport())。
关于串口通信的贴子也很多,搜索一下看看是否有你感兴趣的。主动一点,免得等得这么辛苦。 :-)
z_sky 2001-07-20
  • 打赏
  • 举报
回复
乱说。 :-)
风中老长 2001-07-20
  • 打赏
  • 举报
回复
应该是if((r.h.ah)&&128)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧