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

请问如何判断往串口的写操作(write)已经完成???高分请教!!!

    来源: 互联网  发布时间:2015-06-27

    本文导语:  我想循环地往串口1和串口2写数据: while(1) {  if(往串口1的写操作write已经完成) 则往串口2写;  if(往串口2的写操作write已经完成) 结束本次循环; } 请问如何判断往串口的写操作(write)已经完成??? 用ioctl(fd,FION...

我想循环地往串口1和串口2写数据:
while(1)
{
 if(往串口1的写操作write已经完成) 则往串口2写;
 if(往串口2的写操作write已经完成) 结束本次循环;
}
请问如何判断往串口的写操作(write)已经完成???
用ioctl(fd,FIONREAD,&bytes);可以判断输入缓冲的字节数,
能否用类似的方法解决上面的问题?

|
int ret;
fd_set w;
struct timeval tv;

while(数据未写完) { // 数据写完退出
  FD_ZERO(&w);
  FD_SET(fd,&w);
  tv.tv_sec=0;
  tv.tv_usec=100000; // 超时时间设置为100 毫秒
  ret=select(fd+1,NULL,&w,NULL,&tv);
  if(ret0) { // 已写完
    if(FD_ISSET(fd,&w)) { // 恒为真
       // 继续写剩余数据
    }
  }
  // else if(ret==0); // 超时没写完,继续等待
}

这样就可以分批写数据(当然也可以一次写所有数据),反正当前数据写完则select将返回>0

|
(3)另外,用ioctl(fd ,FIONRESD ,&bytes); 可以检查接收缓冲的字节数,我的问题是:
利用怎样的延时(尽可能小,比如用9600的波特率)和检查接收缓冲的字节数才能判串口的接收已经完成?在判断接收完成后才用read(fd ,mybuff,bytes)把串口接收缓冲中字节串读到自己的字节缓冲mybuff中。

这个问题嘛?

你的想法是不是,让接受端在接受完数据之前,就知道发送端一次要发送多少数据?

如果是这样的话,我的做法是,发送的数据里面包括一次要发送的数据大小。接受端首先读取数据长度,然后循环读完所有数据。

|
我没有考虑那么多,如果写我是通过这么一个循环来做的
nwrite(int ttyfd,char *buf,int len){
  int count;
  int now=len;
  do{
    count =write(ttyfd,buf,now);
    if (count==now) break;
     now -=count;
     buf +=count;
  }while (ount==0);
}
再度的时候,先判断是否缓存中有一帧的内容。
int nread(int ttyfd,char *buf,int len){
  int count,
  if(ioctl(ttyfs,FIOREAD,&count)

    
 
 

您可能感兴趣的文章:

  • 请问如何以独占的方式打开串口
  • 请问是否能使用串口光驱装FC8?
  • 请问,那位高手研究过linux下的串口驱动程序?
  • 请问,/dev 目录下的串口都有哪些?
  • 请问如何编程实现中断机制读取串口数据
  • 请问如何从串口发送字符串"102a34"?
  • 请问这样的串口该如何设置
  • 请问一个串口的问题
  • 请问大虾们,同一串口能否被多个进程同时操作?
  • 请问Linux与Windows下串口所用的波形是不是不同啊?
  • 请问,两个线程同时往串口写东西,会不会乱掉啊???
  • 请问, android+linux内核 平台上, 有一个串口接口的外设置芯片, 想对它进行初化, 一般根据该平台下什么驱动改写?
  • 请问如何在servlet中对串口进行操作
  • 请问使用SELECT()函数怎么监测串口发送数据?
  • 请问:linux 下 C语言编程 , 如何将 串口 由 全双工 变化为 半双工 通讯 方式?
  • 请问谁做过在linux下用java开发串口通信程序,所用第三方jar包是rxtx
  • 请问串口硬盘可以在linux下工作吗?
  • 我想用Linux的串口和S3c2410x连接,请问在Linux里面怎么找到那个超级终端?
  • 请问有没有关于在linux下串口通信的好的文章和源码??非常感谢!
  • 加急!请问Linux下串口的硬件流控是怎么设置的?
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 请问哪里可以下载IP地址段对应城市的信息?高分回报!
  • 请问那里有SUSE LINUX 8.1下载,在此谢过!(令附有高分赠送)
  • 高分请问:用了System.setOut()后怎样才能恢复到默认输出状态?
  • 请问哪儿有Solaris8的光盘映像文件下载???高分相赠!!!
  • *** 高分, 请问在Java (Application) 中如何取硬盘的序列号??? ***
  • 请问各位大哥。谁知道LINUX下怎么安装软件包!!! (高分提问)
  • 请问谁知道mydns服务程序在哪里可以下载到?(高分,在线等)
  • 请问一下javascript里面有没有readonly属性(高分求教)
  • 请问那里有HTTPUNIT下载,高分重谢!!!请帮忙UP!急用!
  • 高分请教:请问怎么才能得到最近所有有关文件操作(新建,删除等)的记录
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问如何在Redhat7.1下安装Ftp服务,如何开启Ftp帐号????请教!!!急急急急急急
  • 新手请教,我用VI时按ESC键,总是回嘟嘟嘟嘟响,请问如何去掉!谢谢!
  • 请教:用jbuilder7编写程序时,光标显示不正确,请问怎样解决?
  • 请问我的linux在启动时突然说不能启动xwindows了,请教原因?
  • 新手请教:请问如何将以前Windows平台下的c++工程改造到linux系统平台下
  • 请教:请问怎么在Applet中怎么弹出一个对话框?
  • 请教:Unix类有BSD和sysV两种,请问它们有什么区别
  • 请教:solaris经常自动重启或者死机,请问如何查找问题?在线等。
  • 请教:请问java中存放数据库中的记录,用什么数据结构?(hashtable?vector?还是别的?)
  • 请问一下,关于arm下的嵌入式linux驱动相关问题请教是应该发在哪个讨论区?
  • 请教:请问shell取得其中的version如何写?
  • 请教高手!请问symtab_begin.h在哪里!
  • 高分请教:我用linux作网关,但我在内网不能连接外网的vpn(具体情况见帖),请问如何解决!谢谢
  • 请问,在unix下,关闭oracle数据库和重起unix,的正确顺序和命令应该是怎样的!请教!
  • 请教:我有一张Solaris的DVD安装盘,但是我的笔记本是CD-Rom,请问有什么办法装呢?
  • *****请教SWING高手,我想让JTree一开始的某个节点处于展开,用的是expandPath(TreePath p),请问如何构造TreePath参数,用字符串可以吗
  • 请教:公司软件产品要换平台,请问用哪个版本的linux较好?
  • 请问java语言中的构建器的概念,高分请教,
  • 高分请教:我要从oracle中提取数据,然后再browser中画出来,饼状图或者曲线图,请问如何画?
  • 高分请教(暂为100分):请问如何用applet调用非本地数据库
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3