首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++下的RS-232混淆

C++下的RS-232混淆
EN

Stack Overflow用户
提问于 2010-02-04 17:02:01
回答 5查看 1K关注 0票数 4

在给定的代码中有什么问题?当我们用引脚号为2&3的d-9连接器连接它时,为什么它没有显示rs232的输出?

代码语言:javascript
复制
#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;
}
EN

回答 5

Stack Overflow用户

发布于 2010-02-04 21:12:21

好了,代码看起来没问题。您是否确实将插头中的其余针脚正确连接,请参阅serialpin connections

票数 1
EN

Stack Overflow用户

发布于 2010-04-14 09:34:19

从你的代码中看不出什么明显的原因。在处理硬件/软件时,请检查所有基础。下面的微软文章有一个使用_bios_serialcom的不同实现(来自bios.h),这可能是一个很好的参考点。

http://support.microsoft.com/kb/39501

关于下一步的建议:

我还建议用为波特率,奇偶校验(例如_COM_NOPARITY)预定义的常量替换文字(例如0x08),以使代码在question.

  • Check中更具可读性,即Com端口实际上是打开的,因为上面的代码示例中没有检查这一假设。

  • 还会检查DB9的引脚连接。要连接两台计算机/设备,您需要将其设为空调制解调器,例如针脚2到另一端的针脚3,再加上信号接地。

  • 如果另一台计算机/设备已安装,我建议先运行HyperTerminal (程序->附件->通信)并连接到您的COM 1,然后检查是否可以看到其他设备的字符。如果不是,这很可能与你的电缆有关。

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2010-04-15 17:31:31

在检查代码之前,请务必检查与终端程序的串行通信。我没有太多使用Windows环境的经验,但在Linux中,您可以使用cutecom或gtkterm等程序从串行端口发送/接收数据。我们在Linux中广泛使用这些程序进行串行通信,它们非常适合调试串行端口接口的潜在问题(也包括硬件和软件/软件)。因此,在怀疑您的代码之前,请使用终端模拟器程序进行检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2198389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档