C++ 串口通信程序

#include "windows.h"
#include <iostream>
#include <TCHAR.H>
#include <string.h>using namespace std;HANDLE handle_file; //串口句柄int serial_open(LPCWSTR COMx, int baudrate)
{//打开串口handle_file = CreateFile(COMx, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);if (handle_file == INVALID_HANDLE_VALUE){printf("打开串口失败!\n");return FALSE;}//设置读写缓冲区SetupComm(handle_file, 1024, 1024); //设置读写超时 COMMTIMEOUTS TimeOuts;TimeOuts.ReadIntervalTimeout=1000;TimeOuts.ReadTotalTimeoutMultiplier=500;TimeOuts.ReadTotalTimeoutConstant=5000; TimeOuts.WriteTotalTimeoutMultiplier=500;TimeOuts.WriteTotalTimeoutConstant = 2000;SetCommTimeouts(handle_file, &TimeOuts); //设置串口配置信息DCB device_control_block; //串口结构体GetCommState(handle_file, &device_control_block);device_control_block.BaudRate = baudrate; //设置波特率device_control_block.ByteSize = 8; //8位数据位 device_control_block.Parity = NOPARITY; //无奇偶校验位 device_control_block.StopBits = ONESTOPBIT; //一个停止位SetCommState(handle_file, &device_control_block);   //设置参数到串口句柄//清空缓存区PurgeComm(handle_file, PURGE_TXCLEAR | PURGE_RXCLEAR);return TRUE;
}int serial_read_write()    //读写串口
{COMSTAT com_start;DWORD errors;ClearCommError(handle_file, &errors, &com_start);char buffer[128];DWORD buffer_bytes = sizeof(buffer);memset(buffer, 0, sizeof(buffer));int result = 0;printf("请输入需要发送的数据:");gets_s(buffer);result = WriteFile(handle_file, buffer, buffer_bytes, &buffer_bytes, NULL);if (!result){printf("写串口失败!\n");return FALSE;}printf("发送数据:%s。\n", buffer);memset(buffer, 0, sizeof(buffer));Sleep(100);result = ReadFile(handle_file, buffer, buffer_bytes, &buffer_bytes, NULL);if (!result){printf("读串口失败!\n");return FALSE;}printf("接收数据:%s\n", buffer);memset(buffer, 0, sizeof(buffer));Sleep(100);PurgeComm(handle_file, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);return TRUE;
}void serial_close(void)        //关闭串口
{CloseHandle(handle_file);
}int main()
{char serial_port[20];memset(serial_port, 0, sizeof(serial_port));printf("请输入串口号:");gets_s(serial_port);printf("串口设置为:%s\n", serial_port);serial_open(LPCWSTR(serial_port), 9600); //打开串口,波特率//serial_open(_T("COM1"), 9600); //打开串口,波特率serial_read_write(); //接收发送字符serial_close(); //关闭串口system("pause");return 0;
}

C++ 串口通信程序相关推荐

  1. qt linux 串口eventdriven,详解 Qt 串口通信程序全程图文 (1)

    Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...

  2. 详解 Qt 串口通信程序全程图文 (5)

    Qt 串口通信程序全程图文是本文介绍的内容,本节也是最后一节,本节主要讲述的是解决一下重要问题的说明: (下面所说的第一个程序是指第一节中写的那个程序,第二个程序是指第三节更改完后的程序,第三个程序是 ...

  3. 详解 Qt 串口通信程序全程图文 (4)

    Qt 串口通信程序全程图文是本文介绍的内容,本文一开始先讲解对程序的改进,在文章最后将要讲解一些重要问题. 1.在窗口中加入一些组合框Combo Box,它们的名称及条目如下: 串口:portName ...

  4. 详解 Qt 串口通信程序全程图文 (3)

    Qt 串口通信程序全程图文是本文要介绍的内容,下面的程序在第一部分中所写的程序上进行了一些改进.加入打开和关闭串口,发送数据等功能. 1.加入了"打开串口","关闭串口& ...

  5. 详解 Qt 串口通信程序全程图文 (2)

    Qt 串口通信程序全程图文是本文介绍的内容,上一部分中已经介绍了实现最简单的串口接收程序的编写,下面将对程序内容进行分析. 1.首先应说明操作串口的流程 步骤一:设置串口参数,如:波特率,数据位,奇偶 ...

  6. 详解 Qt 串口通信程序全程图文 (1)

    Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...

  7. QT中串口通信程序(转)

    (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或直接用源码编写,程序稍有不同,请自己改动.) 在Qt中并没有特定的串口控制类,现在大部分人使用的是第三 ...

  8. 【转】Qt编写串口通信程序全程图文讲解

    Qt编写串口通信程序全程图文讲解 本文章原创于www.yafeilinux.com 转载请注明出处. (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或 ...

  9. java串口发送十六进制数,本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下1.介绍使用Java实现的串口通信程序,支持十六进制数据的发送与接收。 源码:...

    本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下 1.介绍 使用Java实现的串口通信程序,支持十六进制数据的发送与接收. 源码:SerialPortDemo 效果图如下: ...

  10. STM32串口通信代码、ASCII码、XU4串口通信,printf只会转换为无符号类型,linux下的串口通信程序

    1.其里面的的通信协议是是自己定的,这里 是检测到数据的结尾是以0x0d.0x0a结尾,则表示接受的数据完成了,这个数据是我想要的,这样子就不会出现一些错乱的数据信息.其中的0x8000.0x4000 ...

最新文章

  1. web安全漏洞之CSRF
  2. C# Revert 单词反转字符串!『测试通过』
  3. asp.net 一次性提交大量数据,服务器会报错,要在 web.config 中设置一下
  4. [C++ STL] map使用详解
  5. svchost.exe介绍
  6. Oracle 中UNDO与REDO的差别具体解释
  7. cpu —>内存—>硬盘这种方式是不是更慢?
  8. C++ 整型长度的获取 不同的系统
  9. 三星android手机工程模式,11款手机工程模式汇总 小编教你来验机
  10. Skype 8.34 Windows7-64bit Ubuntu 16.04安装试验
  11. 互联网人愚人节整蛊指南
  12. Pair Project: 电梯调度问题API设计(by 谢俊源 陆元伟)
  13. world添加水印java,Java添加水印到Word文档
  14. C# Web Mvc 企业微信 回调
  15. 宽带共享常见经典问题(转)
  16. ICN6202 4lane MIPI 转LVDS
  17. python格式化字符串format函数
  18. 麻将AI超越99%人类玩家:专业十段,学习能力堪比阿法狗
  19. 红帽企业版Linux_6安装指南
  20. 用什么软件画流程图好?

热门文章

  1. 2021-02-14
  2. 强化学习相关论文阅读笔记之稀疏奖励解决方法
  3. pytorch 模型中的bn层一键转化为同步bn(syncbn)
  4. 机器学习-新闻分类案例
  5. Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operat
  6. Kutools for Excel 结合 300 多种高级功能和工具
  7. B站Django项目天天生鲜学习|celery异步发送邮件遇到的问题
  8. “Physically-Based Rendering for Indoor Scene Understanding Using Convolutional Neural Networks”论文阅读
  9. w10用计算机卸载,win10电脑怎么卸载软件
  10. LOJ #10155. 「一本通 5.2 例 3」数字转换