将字符回显到C中的串行端口

时间:2011-11-06 02:53:21

标签: c serial-port communication

我正在尝试使用C通过串口将pic32处理器中的字符回显到终端仿真器。将提示用户输入字符串,所有发生的事情是,当用户键入时,字符将出现在屏幕上。这仅用于设置初始程序,该程序稍后可用于来自用户的实时菜单选择。示例如下:

main()
{
   // 1. init the console serial port
   initU2();

   // 2. text prompt
   clrscr();
   home();    
   fputs("Enter some text: ", stdout);
   puts(stdout);

   // 3. main loop
   while (1)
   {
      // 3.1 read a full line of text
      getsn(stdout, sizeof(stdout));
      // 3.2 send a string to the serial port
      puts(stdout);
   } // main loop
} // main

以下是我在命令行获得的内容(无论用户输入与否):

Enter some text: ÿÿÿÿ

我可以简单地将字符回显到终端程序显示,但是如果我需要输入用户类型字符,则C程序似乎没有响应。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

您写道:

fputs("Enter some text: ", stdout);
puts(stdout);

我认为你对看跌期权的看法无效。在普通的C库puts期望传递一个指向字符串的指针,但是你将stdout传递给它,这不是一个字符串。结果,您看到一些垃圾字符在串行端口上传输。

尝试删除puts行或将代码更改为:

puts("Enter some text: ");