zoukankan      html  css  js  c++  java
  • WindowsAPI操作串口

    #include <windows.h>
    #include <stdio.h>
    
    int main()
    {
        //1.打开串口
        HANDLE hCom;
        hCom = CreateFile("COM1",
            GENERIC_READ|GENERIC_WRITE,
            0,
            NULL,
            OPEN_EXISTING,
            0,
            NULL);
        if (hCom ==(HANDLE)-1 )
            printf("打开串口失败!
    ");
        else 
            printf("打开串口成功!
    ");
    
        //2.初始化串口
        DCB dcb;
        GetCommState(hCom, &dcb);
        dcb.BaudRate = 9600;//波特率
        //dcb.fParity = 0;//奇偶校验使能
        dcb.ByteSize = 8;//数据位
        dcb.Parity = NOPARITY;//奇偶校验
        dcb.StopBits = ONESTOPBIT;//停止位
        SetCommState(hCom, &dcb);
    
        SetupComm(hCom, 1024, 1024);
        COMMTIMEOUTS TimeOuts;
    
        //设定读超时
        TimeOuts.ReadIntervalTimeout = 1000;
        TimeOuts.ReadTotalTimeoutConstant = 5000;
        TimeOuts.ReadTotalTimeoutMultiplier = 500;
    
        //设定写超时
        TimeOuts.WriteTotalTimeoutConstant = 2000;
        TimeOuts.WriteTotalTimeoutMultiplier = 500;
    
        SetCommTimeouts(hCom, &TimeOuts);
    
        //清空缓冲区
        PurgeComm(hCom, PURGE_TXCLEAR|PURGE_RXCLEAR);
        Sleep(500);
    
        //3.读写串口
        unsigned char buf[10] = {0x00, 0x06, 'D', 'A', 'T', 'A'}; 
        BOOL bWriteStat;
        DWORD dwBytesWrite = 6;
        bWriteStat = WriteFile(hCom, buf, dwBytesWrite, &dwBytesWrite, NULL);
        if (!bWriteStat)
        {
            printf("写串口失败!
    ");
        }
        else 
            printf("写串口成功!
    ");
    
        unsigned char rBuf[1024];
        BOOL bReadStat;
        DWORD dwBytesRead;
        bReadStat = ReadFile(hCom, rBuf, 1024, &dwBytesRead, NULL);
        if (!bReadStat)
        {
            printf("读串口失败!
    ");
        }
        else
        {
            printf("读串口成功!
    ");
        }
        for (DWORD j = 0; j < dwBytesRead; j++)
        {
            printf("%x ", rBuf[j]);
        }
        printf("
    ");
        
        //4.关闭串口
        CloseHandle(hCom);
        return 0;
    }
  • 相关阅读:
    腾讯的网站是如何检测到你的 QQ 已经登录?
    怎么改变html中placeholderr的文字颜色
    [分享]2013:Linux的黄金之年-十大杰出成就
    .NET MVC 两种视图引擎(Razor、Aspx)
    android:visibility
    获取目录
    Android 判断字符串是否相等
    Android Sqlite
    android 积累
    Android ListView 使用
  • 原文地址:https://www.cnblogs.com/fwst/p/3729318.html
Copyright © 2011-2022 走看看