关于串口编程的问题

GAIZHUN 2018-02-19 06:30:58
我的程序是这样的:
1.实现虚拟机与mini2440串口通讯,虚拟机发送字符串,mini2440接收字符串并在终端打印出来
我用的Mini2440开发板是串口0(ttySAC0),虚拟机用的是串口1(ttyS1),因为用了一开始用来输入输出调试信息的串口0,所以在做串口通讯的时候用telnet来监控mini2440的工作状态


问题:
开始设置波特率为115200的时候可以正常工作,接收端可以正常工作,并且在终端打印出相应的数据,
但是当我把波特率改为9600或者其它的时候,终端感觉上应该是有接收到信息,但是打印出的是空白数据
我的代码是更改了波特率,其他的设置都没有动,为什么115200就能正常工作,而降低的波特率反而智能检测到有数据,但是不能够正确输出呢?是不是改了波特率,其他还有什么对应的数据要设置呢?
...全文
791 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
GAIZHUN 2018-02-20
  • 打赏
  • 举报
回复
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include <unistd.h> #include <termios.h> #include "uart_api.h" #define BUFFER_SIZE 1024 #define HOST_COM_PORT 1 int main(void) { int fd; char buff[BUFFER_SIZE]; if((fd = open_port(HOST_COM_PORT)) < 0) /* 打开串口 */ { perror("open_port"); return 1; } if(set_com_config(fd, 9600, 8, 'N', 1) < 0) /* 配置串口 */ { perror("set_com_config"); return 1; } while(1){ printf("Input some words(enter 'quit' to exit):"); memset(buff, 0, BUFFER_SIZE); if (fgets(buff, BUFFER_SIZE, stdin) == NULL) { perror("fgets"); break; } if(write(fd, buff, strlen(buff))>0) { printf("The sended words are : %s", buff); } printf("ok\n"); } close(fd); return 0; } 这个是串口发送端的代码
GAIZHUN 2018-02-20
  • 打赏
  • 举报
回复
今天早上起来试了一下可以了,但是把板子关掉重新上电又不行了。。。
GAIZHUN 2018-02-20
  • 打赏
  • 举报
回复
两边设置都一样的
大米粥哥哥 2018-02-19
  • 打赏
  • 举报
回复
接收端和发送波特率一样么 你不会只改了发送端的波特率 没改终端的吧...

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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