最近这几天在研究RS232串口通信,看了很多网上的资料,解释RS232引脚或者同步异步的文字描述很多,案例很少,而且感觉很乱,所以就自己弄出来,然后发出来一起学习,这个案例主要是异步通信的设置上,下一篇等我把串口的硬件流控研究透就会发出来。读写是两个线程,有一些判断返回值的语句没有加上来

1、打开串口
hComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
2、串口初始化
SetupComm(hComm, 1024, 1024);
GetCommState(hComm, &dcb);
dcb.BaudRate = 115200;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hComm, &dcb);
3、添加串口事件
memset(&ov, 0, sizeof(OVERLAPPED));
ov.hEvent = CreateEvent(NULL, FALSE, TRUE, NULL);
ov.Offset = 0;
ov.OffsetHigh = 0;
memset(&comstat, 0, sizeof(comstat));
ClearCommError(hComm, &dwErrorFlags, &comstat);
4、创建线程
hThread = CreateThread(NULL, 0, ThreadRead, 0, 0, &threadID);
5、写函数
n1 = WriteFile(hComm, buf, sizeof(buf), &dwWritenSize, &ov);
if(GetLastError() != 997)
{
printf("%d ", GetLastError());
printf("ERROR: WriteFile error !!!\n");
}
wait = WaitForSingleObject(ov.hEvent, 1000);
switch(wait)
{
case WAIT_OBJECT_0:
case WAIT_TIMEOUT:
break;
case WAIT_FAILED:
printf("嬪暱澷澚両\n");
break;
Default:
break;
}
6、读函数
ReadFile(hComm, buffer, wCount, &read, &ov);
if(GetLastError() != 997)
{
printf("%d ", GetLastError());
printf("ERROR ReadFile error\n");
}
wait = WaitForSingleObject(ov.hEvent, 1000);
switch(wait)
{
case WAIT_OBJECT_0:
printf("%s\n", buffer);
memset(buffer, 0, sizeof(buffer));
break;
case WAIT_TIMEOUT:
break;
case WAIT_FAILED:
printf("嬪暱澷澚両\n");
break;
Default:
break;
}
if(0 == comstat.cbInQue)
{
continue;
}

RS232异步通信实例相关推荐

  1. 通过JAVA与串口(RS232)通信实例

    通过JAVA与串口(RS232)通信实例 博客分类: J2SE JavaVBthread  最近了解到的需求是需要需激光打刻机进行(RS232)串口通信,  这里使用的是RXTX开源包实现的.  之前 ...

  2. 异步通信在生活中的例子_AJAX简单异步通信实例分析

    本文实例讲述了AJAX简单异步通信的方法.分享给大家供大家参考.具体分析如下: 客户端:向服务器发出一个空请求. 代码如下: XMLHttpRequest var xmlHttp; function ...

  3. pic常用子程序c语言,手把手教你使用PIC单片机做RS232串口通信实验(C语言版)

    这一期,我们将一起来学习一下PIC单片机如何与PC机进行通信,一起来完成一个简单的RS232通信实例,我们不做太多的理论,从实例出发,相信能够给大家一个比较通俗.透彻地认识,掌握了它的原理,那你就可以 ...

  4. JAVA Cloud微服务项目实战课程 SpringBoot 2.x +SpringCloud 微服务课程

    课程目录 第1章 课程介绍 课程导学和学习建议 1-1 SpringCloud导学 1-2 获取源码说明 1-3 提问建议 1-4 点餐项目演示说明 第2章 微服务介绍 什么是微服务, 单体架构优缺点 ...

  5. 基于FPGA的跨时钟域信号处理——专用握手信号

    转自:http://bbs.ednchina.com/BLOG_ARTICLE_253787.HTM 在逻辑设计领域,只涉及单个时钟域的设计并不多.尤其对于一些复杂的应用,FPGA往往需要和多个时钟域 ...

  6. Spring Cloud微服务系统架构的一些简单介绍和使用

    Spring Cloud 目录 特征 云原生应用程序 Spring Cloud上下文:应用程序上下文服务 引导应用程序上下文 应用程序上下文层次结构 改变Bootstrap的位置Properties ...

  7. 关于倍福EtherCAT3的ADS通讯

    Beckhoff ADS (Automation DeviceSpecification)提供一个应用程序之间互相通信的接口,在TwinCAT3系统中,TwinCAT PLC,TwinCAT NC,T ...

  8. 前端开发基础知识汇总

    一.HTML 1.前言与常用标签 浏览器 内核 备注 IE Trident IE.猎豹安全.360极速浏览器.百度浏览器 firefox Gecko 可惜这几年已经没落了,打开速度慢.升级频繁.猪一样 ...

  9. 搭建机器人电控系统——通信协议——串口通信USART/UART、RS232、RS485及其实例

    通信协议 串口通信详解 IIC通信详解 SPI通信详解 CAN通信详解 文章目录 通信协议 什么是串口? 串口分类 USART/UART.RS232.RS485的区别 串口协议原理 传输协议 需要定义 ...

最新文章

  1. 从命令行及java程序运行MyBatis Generator 1.3.x生成MyBatis3.x代码
  2. 显示部分数据标签_长春市农贸市场监测数据显示:粮油和水果价格平稳,部分副食品价格小幅波动...
  3. ORA-16038的解决(日志无法归档)
  4. python下载百度云盘中的数据_python爬虫:爬取百度云盘资料,保存下载地址、链接标题、链接详情...
  5. Laravel 队列:如何查看队列报错信息
  6. PPIO创始人王闻宇:从PPTV到PPIO,创业路上的挑战与思考
  7. [html] 请说说<script>、<script async>和<script defer>的区别
  8. 面向对象基础-委托与事件
  9. flash as3+php上传源文件下载
  10. 未来科技计算机作文600字,未来科技作文600字
  11. java导出mysql数据表的结构生成word文档
  12. 姓名投票c语言未给定候选人,C语言上机
  13. 二十六万字详解bat文件
  14. 扁平化数据处理成tree树形结构
  15. 第二十九天 redis应用
  16. C++中类成员函数指针使用方法
  17. ps改变叶子中的图片
  18. flutter windows环境配置win10
  19. [新书即将上市] 不懂模板,还敢称PPT高手
  20. Silverlight 2.5D RPG游戏技巧与特效处理:(二十一)自定义路径动画

热门文章

  1. python操作数据表,循环造数100条数据
  2. 盒子模型存在的bug
  3. 用delim_whitespace=True把表格单元格隔开
  4. 谷歌浏览器插件Automa_5.数据存储及保存
  5. 工作流引擎核心设计思路!
  6. VS2017 Web项目添加引用项目后,引用上有黄色的感叹号小图标
  7. Pytorch图片转tensor/图片转tensor转图片(numpy array)(transforms.ToTensor())(opencv形式转tensor)
  8. 客户端修改绑定服务器地址,修改客户端连接的服务器IP地址(内部使用)
  9. LaTeX 表格的处理
  10. 【论文系列】Long-term Visual Localization using Semantically Segmented Images--语义位置识别/ICRA2018