【问题标题】:Echoing characters to a serial port in C在C中将字符回显到串行端口
【发布时间】:2011-11-06 02:53:20
【问题描述】:

我正在尝试使用 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 程序似乎没有响应。任何帮助将不胜感激!

【问题讨论】:

  • 这是什么stdio-lib? puts() 通常需要一个 char * 参数。什么是getsn()?它不应该从标准输入读取吗?
  • 所以为了清楚起见,您编写的 C 代码是 pic32 的代码?您似乎正在调用代码中未定义的一些函数。这些函数在哪里定义? puts(stdout); 的目的是什么?你手边有示波器吗?

标签: c serial-port communication


【解决方案1】:

你写道:

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

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

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

puts("Enter some text: ");

【讨论】:

  • 我可能需要重新考虑一下我的代码,其中一些函数是 pic32 原生的,我正在尝试使用标准 C 库。无论如何,谢谢你们:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多