call function "bioscom ", why does it not work ?

fqyuan 2006-05-06 12:25:27
why can I not see the result ? No matter I press any key , the screen can not show the key
, while ESC still works well ( It can exit the programm ).

__________________________________________________________________
#define COM1 0
#define COM2 1
#define SET 0
#define SEND 1
#define RECEIVE 2
#define STATUS 3
#define ESC '\x1B'
#define BAUD_300 0x40
#define BAUD_1200 0x80
#define PARITY_NONE 0x00
#define PARITY_ODD 0x08
#define PARITY_EVEN 0x18
#define BITS_7 0x02
#define BITS_8 0x03
#define STOP_1 0x00
#define STOP_2 0X04
main()
{
int register out, in;
bioscom(SET, BAUD_1200 | BITS_7 | STOP_1 | PARITY_NONE,
COM1);
cprintf("... BIOSCOM [ESC] to exit ...\n");
while (1)
{
if (kbhit())
{
if ((in = getch())== ESC) exit(0);
bioscom(SEND, in, COM1);
}
if ( (out = bioscom(RECEIVE, 0, COM1) & 0x7F) != 0)
putch(out);
}
}

______________________________________________________________________
...全文
119 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
danshuihepan 2006-05-07
  • 打赏
  • 举报
回复
COM1表示串口1
COM2表示串口2
你将你的代码复制一份,然后将其中的COM1改为COM2,编译,同时运行这2个程序
主机后有2个9针的串口,你用串口连接线将这2个口连起来就是了。
这样就可以验证结果了。
fqyuan 2006-05-07
  • 打赏
  • 举报
回复
哦!是这样的。 通常所说的串口(com1 0 , com2 1 ) 指的是什么?怎么连起来?
谢谢!
danshuihepan 2006-05-07
  • 打赏
  • 举报
回复
如果用同一台机器,那你必须用一个串口线连接2个串口
com1发送数据,com2就可以接收到发送的数据
反之依然
|===>send===>com2(recv)
com1
|<===recv<====com2(send)
fqyuan 2006-05-07
  • 打赏
  • 举报
回复
可否说的再明白一点:
或者帖一段code 出来

如果在同一机器上怎么是怎样的 ?

danshuihepan 2006-05-06
  • 打赏
  • 举报
回复
串口发送与接收的buf是不一样的,所以失败!
示意图:
发送===》bufsend===>

接收<======bufRec<=====
如果要验证,应该在两台机器上或用同一台机器的两个串口!
jixingzhong 2006-05-06
  • 打赏
  • 举报
回复
设备有问题么?
fqyuan 2006-05-06
  • 打赏
  • 举报
回复
串口应该能收到按键呀。
我理解是:先将按键写到串口,然后从串口接受再打印出来。
为什么串口不能读到按键!
king_water 2006-05-06
  • 打赏
  • 举报
回复
你作的又不是将按键打印,你是把串口收到的数打印

69,382

社区成员

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

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