当前位置:  技术问答>linux和unix

LINUX串口只能发送不能接收

    来源: 互联网  发布时间:2017-04-20

    本文导语:  简单说明一下情况: 我用的是 PC机 上 虚拟机 GCC交叉编译,然后在装有 LINUX系统 的 TI 开发板 DM3730(达芬奇系列多媒体处理器)上跑程序。 开发板本身带有USB鼠标键盘,和DVI或者VGA等视频接口,因此可以通过...

简单说明一下情况:
我用的是 PC机 上 虚拟机 GCC交叉编译,然后在装有 LINUX系统 的 TI 开发板 DM3730(达芬奇系列多媒体处理器)上跑程序。
开发板本身带有USB鼠标键盘,和DVI或者VGA等视频接口,因此可以通过显示器,鼠标,键盘等构成一个计算机。
还有一个和这个问题可能很重要的是:
这个开发板系统通过一个串口与PC机通信,主要用于返回开机信息和一些系统运行过程中出现的一些返回信息。3730本身带3个串口,这个返回信息用的用的是串口0.

然后上班的一个任务是写一个LINUX的串口收发数据程序。
老板出于某种考虑,只让我用回那个串口0来做收发。

我找到一个例程,照着弄,折腾了一阵子后跑通了。
但是出现的问题是:
用write函数串口发送是没问题的,但是用read函数读取却不行。

具体表现如下:
1 发送,发送当然是没问题。
2 接收,一开始,我在串口助手上自动发送,运行程序后发现有接收到,我误以为已经成功了。
但是后来进一步调试时发现其实不是那么一回事,用read函数的返回值一检查,果然是-1,也就是说,根本就没成功读取过。至于 串口助手 的接收,我至今不能完全理解。
我目前的理解是:那个缓冲区中早被塞满了,所以它只是在自动发送时,被不断“挤出来”而已。

还有一种比较恐怖的现象是:
一经运行过程序,哪怕程序已经停止,退了出来。如果我的串口助手仍在 自动发送,那么,接收区依然一直地在“自动回显”。
甚至是关一次自动发送再来还是会,直到一阵子以后,出现乱码,这种情形才停下来。
这种情况,我试过关掉串口助手,再打开,也还是会持续。


后来,我们想,是不是因为系统用了串口0做了终端,所以这个串口被占用了。
我们在开发板上,用minicom想打开它,发现它的确写着 串口0被锁了。

但是我目前还没找到解锁或者说取消这个终端的命令和方法。

另外,补充一下的是:
在程序中,我已经做了这样一些操作。

1 首先,这个串口不作为终端,同时可读可写:
int fd = open(dev,O_RDWR | O_NOCTTY | O_NONBLOCK);

2 我已经设置为非RAM模式,就是非堵塞模式:
//NONE_RAM mode
fcntl(fd, F_SETFL, FNDELAY);   

但是貌似没啥区别。

3 在每一次读取中,我先发一个 57,然后在一个5次循环中 进行5次读取,每一次读取中,我都首先 清空收发缓冲区
tcflush(fd, TCIOFLUSH); 

但是,貌似也没用

4 波特率都是9600



|
这个情况我遇到过,当时是配置的问题,你查一下c_cflag,c_iflag什么的都设置好了没

    
 
 

您可能感兴趣的文章:

  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • linux下几个设备通过串口串行连接,如何协调各串口发送数据
  • Linux 中用java语言写串口程序,提示找不到串口
  • 高分求助:我笔记本没有串口,在linux下要和一个串口设备连,怎么办?
  • 关于linux串口通信中写串口的问题
  • 在虚拟Linux系统下能进行串口通讯吗?最好给个串口通讯的代码!谢谢!
  • linux下串口发送数据用串口精灵接受不到或为全零
  • 嵌入式linux,串口初始化时,无法设置串口属性
  • linux串口驱动该怎么写
  • linux下如何清空串口的输入输出缓存
  • linux下怎么监控串口?
  • vmware 上 linux 串口问题
  • linux下串口通信的问题
  • linux下的串口编程比较熟悉,麻烦帮忙!
  • 在线等待,求助LINUX下串口问题
  • 请教一个linux串口通讯问题?
  • linux 串口打印
  • 请问,那位高手研究过linux下的串口驱动程序?
  • 问一个LINUX下串口的问题
  • 如何在linux上使用串口设备
  • 怎么实现Windows和Linux之间数据的接收发送
  • Linux下怎么用socket接收zip文件流?怎么把zip文件读成流?
  • 嵌入式linux 组播接收问题
  • 讨论一下:linux和lwip中的接收缓冲区结构哪个好呢?
  • 如何让linux不自动接收服务器发来的ipv6地址
  • linux 如何接收发送邮件?
  • 高手请进:LINUX端口数据接收问题
  • Linux下的Qmail、Sendmail是怎样来判断邮件发送和接收。
  • 如何在Linux运行期间终止网卡接收数据?
  • Linux下,如何读取网卡接收的数据包啊?
  • 请问在linux上tcp能够接收的最大连接数是多少?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下怎样发送广播信息?
  • Linux mail发送 Email,急...
  • 用LINUX串口发送数字和字符串遇到问题
  • linux中邮件发送后是否会保存在服务器中
  • LINUX下如何发送邮件
  • 怎么用LINUX发送HTTP请求??
  • 我想在windows下往linux发送udp包,为什么收不到呀,请指教!
  • 关于linux下如何向操作系统发送按键的问题
  • linux下用串口接受和发送数据问题
  • linux串口程序可以发送数据,但是不能接受数据?谁知道原因?
  • linux下邮件的发送
  • linux c编写的利用cmpp发送短信的源代码
  • 在linux下用串口发送数据问题:
  • 有什么软件可以通过网络把文件从windows发送到嵌入式机的linux
  • Linux 串口发送接收数据问题
  • 求Linux 2.6 进程调度分析报告一篇,比较急,有的话发送到我的邮箱crazyswan@163.com
  • 求linux 发送 到邮箱 命令
  • 怎么在linux下用mail 命令发送带附件的邮件~~~~
  • [高分相送200] 谁有linux下socket编写的发送文件源代码?(解决另开贴)
  • 请教 javamail 在 linux 上发送邮件
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 操作系统 iis7站长之家
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,