window串口和Linux串口通信

问题:我这边连续发送多帧数据时,window串口总是会报告读超时?下面是我写的串口代码麻烦各位高手帮忙看看,谢谢!特别是在清空缓冲区,到底是个什么顺序比较合理。

COMMTIMEOUTS TimeOuts; //超时参数设置
//设定读超时
TimeOuts.ReadIntervalTimeout = 6;
TimeOuts.ReadTotalTimeoutMultiplier = 9;
TimeOuts.ReadTotalTimeoutConstant = time_set;//5S

//设定写超时
TimeOuts.WriteTotalTimeoutMultiplier = 100;
TimeOuts.WriteTotalTimeoutConstant   = 500;
SetCommTimeouts(hcomhand,&TimeOuts); //设置超时  ms为单位

//一字节读串口
int serial::readcombyte(uchar *data)
{
unsigned long fact_RDdata_count = 0; // 实际读到的数据长度
bool bReadStat;

if( isopen( ) )
{
    //PurgeComm(hcomhand, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);

    bReadStat = ReadFile(hcomhand, data, 1,&fact_RDdata_count, NULL);
    if (!bReadStat || (fact_RDdata_count != 1))
    {
        return ErrCode_RandLenErr;
    }
    else
    {
        //PurgeComm(hcomhand, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
        return ErrCode_NoErr;
    }
}
else
{
    return ErrCode_ComNotOpen;//串口未打开
}

}

//写串口
int serial::writecom(const uchar *data_buff, uint data_count)
{
unsigned long fact_WRdata_count = 0; //实际读到的长度
bool bWriteStat;
if( isopen( ))
{
//清空收发缓冲区,停止后台读、写操作。
PurgeComm(hcomhand, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);

        bWriteStat = WriteFile(hcomhand,data_buff,data_count,&fact_WRdata_count,NULL);
        if (!bWriteStat&& ((unsigned long)fact_WRdata_count != data_count))
        {
            return ErrCode_WriteLenFailed;   //写长度失败
        }
        //PurgeComm(hcomhand, PURGE_TXABORT |  PURGE_TXCLEAR );
        return ErrCode_NoErr;                //成功
    }
    else
    {
            return ErrCode_ComNotOpen;      //串口未打开
    }

}

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
linux与windows系统进行串口通信
数据有PC机模拟发送,为了调试方便,不用次次将程序放到开发板上运行,所以利用pc主机和虚拟机进行串口通信模拟该过程。 首先需要用到一个软件----虚拟串口软件。具体用法说明可百度,增加两个互相通信的串口,pc机占一个,虚拟机占一个。  http://download.csdn.net/download/li235456789/10191208 虚拟串口软件 1,首先,增加两个
C++编程笔记:串口通信在windows环境和linux环境下的异同和代码实现
1. 串口通信流程不管是对于windows还是linux,串口通信的流程都是以下4步: 1. 打开串口 2. 设置串口 3. 发送、接收数据 4. 关闭串口
VM中linux和windows主机进行串口通信
最近在做关于AIS的内容。为了对AIS电文进行解码,串口收发。 数据有PC机模拟发送,为了调试方便,不用次次将程序放到开发板上运行,所以利用pc主机和虚拟机进行串口通信模拟该过程。 首先需要用到一个软件----虚拟串口软件。具体用法说明可百度,增加两个互相通信的串口,pc机占一个,虚拟机占一个。 http://download.csdn.net/detail/
Linux下C语言串口通信
/*本文是在参考实验室某学长的博客后再自行写下的代码,因学长代码逻辑十分清楚,给我留下了很深的印象,所以我的代码有很多地方与这位学长的代码相似。同时我也在这位学长的代码上做了稍许改进和修正。如有不当之处,欢迎批评*/最近在做一个GPS项目,第一部分是将开发板和GPS用串口通信,接受GPS上传来的数据。Linux下所有的设备都是以文件形式存储的,串口也是。整个串口通信的流程图为:所用到的头文件为:#...
windows串口通讯(读和写,很方便!!)
串口通讯
Windows 串口通信简单示例
为了方便串口程序的调试,使用了如下两款工具软件 [1]. 串口调试助手 该软件可以通过串口收发数据。可以通过串口发送数据,也可以查看串口收到的数据。 [2]. 虚拟串口 可以虚拟串口,每次虚拟出一对串口,这对串口相互连通。如图中虚拟出了串口COM2和COM3,这样通过COM2发送的数据,会由COM3接收到,反之亦然。 串口通信的基本步骤
QT实现串口通信(附源码下载)
1 Qextserialport类介绍      在Qt5之前的版本中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,本文章主要是讲解怎样利用此类实现串口通信。      注意:Qt5发布之前,Qt实现串口通信一般是采用第三方类库qextserialport。Qt5发布后自带了QtSerialPort 能够支持串口通信。 2  文件下载地址
在Linux下用QT5编写第一个串口调试程序
以下学习类容参考了yafeilinux的专栏 :http://blog.csdn.net/yafeilinux/article/details/5741706 第一步:由于我们用的是第三方库文件,所以我们首先需要下载qextserialport-1.2win-alpha,下载地址:http://sourceforge.net/projects/qextserialport/files/,具体
python串口通信
首先,应该安装serial模块,还能开始后续的操作。我用的python2.6,serial模块可以在这里下载安装serial模块下载
Linux--串口通信详解
以前跟着做过VxWorks的开发,主要通信方式是串口,因为底层BSP包已经做好了,串口通信非常简单。后来接触Linux,在一块OK6410上跑Linux串口通信,才发现原来天真的以为甚是简单的串口变得如此的不简单。 #include 1、串口的操作 1.1打开:fd = open("/dev/ttySAC1", O_RDWR | O_NOCTTY | O_NDELAY);        
linux下的串口通信
一、串口的基本原理 1 串口通讯     串口通讯(Serial Communication),是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通讯方式。     串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。 2 串口通讯的数据格式     一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总
用QT做的LINUX下串口通信(测试可用)
用QT做的LINUX下串口通信(测试可用),控件为一个LABEL,三个按键,具体看程序里面改名字就可以了
Linux下C++串口通信
Linux下C++串口通信,支持ubuntu,树莓派等系统。
windows串口通信c(4)
comm port
windows中Python串口编程(一)
在windows中,使用python进行串口编程需要安装一个Serial模块 pyserial: 下载地址:https://pypi.python.org/pypi/pyserial 下载完成后得到一个xxx.whl文件,下面进行安装 安装pyserial模块 pip install pyserial-3.1.1-py2.py3-none-any.whl 详细的使用信息可以阅读pySerial的文
Linux下串口通讯,完整程序
程序代码已经在Linux系统上正确运行 #include #include #include #include #include #include //set baud rate #include #include #include #include #include //#define rec_buf_wait_2s 2 #define buffLen 1024
linux 串口通信详解
Linux串口编程详解 目录(?)[+] 串口本身,标准和硬件 † 串口是计算机上的串行通讯的物理接口。计算机历史上,串口曾经被广泛用于连接计算机和终端设备和各种外部设备。虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接通常特指那些与RS-232标准兼容的硬件或者调制解调器的接口。虽然现在在很多个人计算机上,原来用以连接外
WIN32控制台下的串口通信程序
Winodws平台下,文件、通信设备、命名管道、邮件槽、磁盘、控制台等都是以文件的形式存在,它们的创建于打开操作都是利用CreateFile()函数。在MSDN中CreateFile()的声明方式为: HANDLE WINAPI CreateFile( _In_ LPCTSTR lpFileName, //文件名“COM1”,"COM2"等 _In_
linux c++ 简单串口通信
一个linux下利用com口 本机发送本机接受数据的简单例子。运行程序前要先切换本机com。本文件只包含src部分。
linux下Qt串口通信小结
由于项目需要,实现在linux下qt串口通信问题,搞了一周,算是实验通过了,记录一下。      主机:ubuntu11.04 qt版本:4.7.2         当要实现在linux下qt串口通信时,首先查看qt有没有自带的类,如果有自带的类,实现起来是最方便的,但令人遗憾的时,没有,但可以使用QIOdevice,因为在linux下,万物结文件,但是,我不想用这种方式,太麻烦了,所
Windows下c语言串口的编写(利用API)
窗口过程:窗口过程是一次又一次的被调用,所以窗口过程函数中的局部变量经常被初始化,所以一些需要重复利用的变量要定义成static。串口编写中要对串口的句柄进行关闭,所以打开串口的句柄一定要定义成static。      下拉框:combobox在CreateWindow的样式为CBS_XXX,可以再msdn和winuser.h中找到相关的所有定义。      sendmessage中的消息定义
Linux C++ 串口通信
说明 随着嵌入式开发在物联网行业中站的比重日益增加,Linux 环境下的C++也不断变得更为大众化。习惯了Window平台开发的开发人员, 都被Visual Studio的强大宠坏了, 无论是什么样的开发需求, 总能有现成的轮子可以直接拿来用。就好比这里要介绍的串口通信, 在Windows开发中, 无论是C++, MFC,还是C#, 巨硬大大都给我们做好了封装。可是在Linux下就没那么简单了,...
Qt串口通讯实现--Windows环境
基本跟着这篇文章完成了Windows下的基本串口通讯程序,下一步是想方法交叉编译放入JZ2440开发板执行。 附上头文件:(我自己写的,一开始第一部分没有介绍头文件,会有错误) #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include "win_qextserialport.h" namespace Ui
嵌入式Linux串口通讯的C++设计
嵌入式Linux主板EM9160提供了6个标准异步串口:ttyS1——ttyS6,其中ttyS4、ttyS5、ttyS6和GPIO的管脚复用,每个串口都有独立的中断模式,使得多个串口能够同时实时进行数据收发。各个串口的驱动均已经包含在嵌入式Linux操作系统的内核中,EM9160在嵌入式Linux系统启动完成时,各个串口已作为字符设备完成了注册加载,用户的应用程序可以以操作文件的方式对串口进行读写
windows下使用python进行串口通讯
Windows版本下的python并没有内置串口通讯的pyserial的库,所以需要自己下载。参照了网上的教程,有许多用的pip的安装方式,但是试了几个都没有用,所以想到用GitHub下载库文件,步骤分为:1.在Github下载python-serial的库https://github.com/pyserial/pyserial2.下载完成后解压压缩包,找到serial文件夹,并找...
Linux下的串口编程实例
亲测可用,移植时根据需求修改即可,转载自:http://blog.csdn.net/w282529350/article/details/7378388 //串口相关的头文件 #include /*标准输入输出定义*/ #include /*标准函数库定义*/ #include /*Unix 标准函数定义*/ #include #include
应用程序(一)-linux应用程序学习之串口通讯编程
之前我们移植好了内核,并且支持了网卡驱动如下: http://blog.csdn.net/fengyuwuzu0519/article/details/72846205 内核中已经默认支持了串口,启动内核后存在:/dev/ttySAC0、/dev/ttySAC1、/dev/ttySAC2。 这节的目的是使用串口驱动来与外界串口进行数据通讯。 一、串口应用编程 1、网上串口资源 linu
<linux+qt>使用thread监控串口通信(二)
第一节主要介绍了对串口进行读写的方法,下面进入主题如何使用线程监控串口通信。   Qt中线程类继承自QThread,并重写启动线程后的run方法,主程序用start启动线程后,调用线程中的run方法。线程与主程序同步运行,直到线程被销毁或者主程序退出。   写串口的动作: 由于是主程序主动发出的,所以不用对串口进行时时的检测,只要调用第一节中的写操作进行发送即可。   读串口的动作:因为需要
Win API串口通信原理及读写与操作
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。 一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。 在Wi
Linux下基于QT的串口通信程序(Tiny6410)
由于有关ARM开发板很多外设都是支持串口通信的,所以在QT下编写一个串口通信程序就显得尤为重要。下面将一步一步叙述开发过程: Linux下QT串口通信相关文件及例程下载!!! 1、开发板上设备驱动位置:/dev下存有各种设备驱动文件名 2、首先来看一下串口通信几个关键文件: posix_qextserialport.cpp和posix_qextserialport.h文件定义了
Linux ROS与嵌入式的串口通信
1.根据ros wiki的官方教程 学习即可,并且有许多例子可供学习       http://wiki.ros.org/rosserial_arduino/Tutorials 2.用ASIO读写设备串行口       ASIO不仅支持网络通信还能支持串口通信。如何让两个设备使用串口通讯,最重要的是设置好正确的参数,那么串口的参数就包括:波特率、奇偶校验位、停止位、字符大小和流量控制,两个设
Linux Java 串口通信
费了好大的劲搞定Linux系统上用Java写串口通信的问题。 jdk中没有原生的串口api,网上找了半天的资料,大概知道了:linux系统上用Java写串口程序,有两个包比较常用,一个是当年sun官方出的javacomm,但是找了半天都是老版本的居多,Oracle官方不提供下载了,不爽。另一个是gnu的rxtx comm,看了一下还算靠谱,不过官方的wiki上(http://rxtx.q
基于QT4的linux串口助手
说明:环境:ubuntu12.04 基于QT4的linux串口助手 近期网上很火的qt编写串口通信程序全程图文详解 收到了网上的疯狂转载,上面的链接也不确定是不是原创,不过开源的东西不必追究那个原创了。 按照这个教程。调试了几天一直没有结果,最后通过一句一句的分析每天语句终于可以收到数据。 在此将本人遇到的纠结几天的问题写于此。 首先,大致按照以上教程先写出了调试程序: -----------
socket串口通信
SocketServer: #include #include #include #include #include #include #include #include #include #define SERVPORT 3333 /*服务器监听端口号 */ #define BACKLOG 10 /* 最大同时连接请求数 */ #define MAXDATASI
利用linux虚拟机进行串口通信模拟
最近在做linux下串口通信速率测试,不过我只有一台装有linux系统的电脑。
Linux下JAVA串口通信
 费了好大的劲搞定Linux系统上用Java写串口通信的问题。 jdk中没有原生的串口api,网上找了半天的资料,大概知道了:Linux系统上用Java写串口程序,有两个包比较常用,一个是当年sun官方出的javacomm,但是找了半天都是老版本的居多,oracle官方不提供下载了,不爽。另一个是gnu的rxtx comm,看了一下还算靠谱,不过官方的wiki上(http://rxtx.q
Win32 下 C/C++ 串口编程
与串口通信有关的API函数 HAN
C——Linux下的串口编程
之前在学习安信可A7模块时,是在PC上使用串口调试助手做了GPS的坐标数据信息的采集,同时分析了一些语句的含义。在这过程中,涉及到对嵌入式开发人员一个非常重要的知识:串口通信。在前篇也说到,我们将会自己写程序来对GPS数据进行解析,而这些数据正是靠串口来传输的。所以,本篇博文将进行关于串口通信的学习。一、串口接头首先我们得知道串口长什么样,常用的串口接头有两种,一种是9针串口(简称DB-9),一种是
linux 与 单片机 串口通信
本人最近在尝试在linux下用串口与单片机通信,虽然说网上资料例程五花八门,但是缺乏严格的注释或者完整的实例,或许本人能力有限,某些问题无法理解,在实际过程中遇到不少问题,无从下手,特此写篇文章请求各位大神的斧正。初次写帖,不足处希望指出。   实验目的:单片机通过串口向linux发送数据。   环境:单片机 ST90C516RD+,使用USB转串口(驱动PL2303);linux(ubunt
串口通信编程(2):使用Windows API
在Win32中,串口是作为文件
相关热词 c#该名称在封闭局部范围 c#泛型 排序 c# 测试连接mysql c# 多线程 调用界面值 c# gdi unity c#反射构造带参对象 一起自学c# c#工厂方法 c# 对象属性保存xml u3d用c#写拾取物品