在给定的代码中有什么问题?当我们用引脚号为2&3的d-9连接器连接它时,为什么它没有显示rs232的输出?
#include <bios.h>
#include <conio.h>
#define COM1 0
#define DATA_READY 0x100
#define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00)
int main(void)
{
int in, out, status;
bioscom(0, SETTINGS, COM1); /*initialize the port*/
cprintf("Data sent to you: ");
while (1)
{
status = bioscom(3, 0, COM1); /*wait until get a data*/
if (status & DATA_READY)
if ((out = bioscom(2, 0, COM1) & 0x7F) != 0) /*input a data*/
putch(out);
if (kbhit())
{
if ((in = getch()) == 27) /* ASCII of Esc*/
break;
bioscom(1, in, COM1); /*output a data*/
}
}
return 0;
}发布于 2010-02-04 21:12:21
好了,代码看起来没问题。您是否确实将插头中的其余针脚正确连接,请参阅serial和pin connections。
发布于 2010-04-14 09:34:19
从你的代码中看不出什么明显的原因。在处理硬件/软件时,请检查所有基础。下面的微软文章有一个使用_bios_serialcom的不同实现(来自bios.h),这可能是一个很好的参考点。
http://support.microsoft.com/kb/39501
关于下一步的建议:
我还建议用为波特率,奇偶校验(例如_COM_NOPARITY)预定义的常量替换文字(例如0x08),以使代码在question.
希望这能有所帮助。
发布于 2010-04-15 17:31:31
在检查代码之前,请务必检查与终端程序的串行通信。我没有太多使用Windows环境的经验,但在Linux中,您可以使用cutecom或gtkterm等程序从串行端口发送/接收数据。我们在Linux中广泛使用这些程序进行串行通信,它们非常适合调试串行端口接口的潜在问题(也包括硬件和软件/软件)。因此,在怀疑您的代码之前,请使用终端模拟器程序进行检查。
https://stackoverflow.com/questions/2198389
复制相似问题