zoukankan      html  css  js  c++  java
  • 关于调用win32API实现串口通信

    在写串口通讯的时候遇到一个小问题

      问题描述:

        

    1 hCom = CreateFile(tmp_serial,//串口名称
    2                           GENERIC_READ|GENERIC_WRITE,//允许读写
    3                           0,//独占方式
    4                           NULL,
    5                           OPEN_EXISTING,//打开而不是创建
    6                           0,//同步方式  FILE_FLAG_OVERLAPPED//异步
    7 //                          FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
    8 //                          FILE_FLAG_OVERLAPPED,
    9                           NULL);

      打开端口没问题,记住打开端口的时候如果端口号大于10会出错,可以使用"\\.\COM12“ 这样的话就没问题了(反正我测试的时候是ok的) 有问题再讨论

    配置串口

      只要基本的参数配置好就行了

    			DCB dcb;
    			GetCommState(hCom,&dcb);
    			dcb.BaudRate = atoi(s_Botelv);
    
    			dcb.ByteSize = atoi(s_Data);
    		    	dcb.Parity = NOPARITY;
                            dcb.StopBits = 2;        

      

      这里的StopBits 分为0、1、2        0->1       1->1.5    2->2

      配置超时 如果超时设置不合理的话,会导致WriteFile 和 ReadFile 操作虽然成功,但是发送和接收的字节数会是0。想必很多朋友都遇到了,如果出现了类似的问题可以从这里下手;

      当时我的问题是,打开串口操作成功,配置也成功,就是WriteFile 写进的字节数为0.但是当打开串口调试工具运行一次后,就可以顺利的写入了,而且也没问题,找了半天发现时超时设置有问题。

      具体的数值我也不是特别清楚,下面是我的配置超时时间

    COMMTIMEOUTS TimeOuts;
    //设定读超时
    TimeOuts.ReadIntervalTimeout = MAXDWORD;
    TimeOuts.ReadTotalTimeoutMultiplier = 100;
    TimeOuts.ReadTotalTimeoutConstant = 400;
    //在读一次输入缓冲区的内容后读操作就立即返回
    //而不管是否读入了要求的字符
    
    //设定写超时
    
    TimeOuts.WriteTotalTimeoutMultiplier = 1000;
    TimeOuts.WriteTotalTimeoutConstant = 1000;
    

      

    后面的WriteFile 和 ReadFile 就不写了,我用的是同步方式,具体的操作方式可以从 CreateFile的倒数第二个参数。

  • 相关阅读:
    PythonStudy——数据类型总结 Data type summary
    PythonStudy——可变与不可变 Variable and immutable
    PythonStudy——列表操作 List operatio
    PythonStudy——列表的常用操作 List of common operations
    PythonStudy——列表类型 List type
    PythonStudy——字符串扩展方法 String extension method
    PythonStudy——字符串重要方法 String important method
    AWT,Swing,RCP 开发
    JQuery插件机制
    最新知识网站
  • 原文地址:https://www.cnblogs.com/lobsterIT/p/4736376.html
Copyright © 2011-2022 走看看