Win32 API UART编程

下面是一个使用Win32 API进行UART编程的简单示例。

 1 #include <windows.h>
 2 #include <stdio.h>
 3
 4 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
 5 {
 6     HANDLE hCom;
 7     DWORD dwError;
 8     BYTE buf;
 9     DWORD nBytes;
10
11     printf("%s\n", lpCmdLine);
12
13     hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
14
15     if (hCom == (HANDLE)-1) {
16         dwError = GetLastError();
17         printf("Error = %d\n", dwError);
18         return 0;
19     }
20
21     DCB dcb;
22     GetCommState(hCom, &dcb);
23     dcb.BaudRate = 9600;
24     dcb.ByteSize = 8;
25     dcb.Parity = NOPARITY;
26     dcb.StopBits = 1;
27     dcb.fBinary = TRUE;
28     dcb.fParity = TRUE;
29     SetCommState(hCom, &dcb);
30     SetupComm(hCom, 1024, 1024);
31     PurgeComm(hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
32
33     COMMTIMEOUTS to;
34     memset(&to, 0, sizeof(to));
35     to.ReadIntervalTimeout = 10;
36     SetCommTimeouts(hCom, &to);
37
38     WriteFile(hCom, &buf, sizeof(buf), &nBytes, NULL);
39     ReadFile(hCom, &buf, sizeof(buf), &nBytes, NULL);
40
41     CloseHandle(hCom);
42     return 0;
43 }
时间: 2024-10-05 10:56:34

Win32 API UART编程的相关文章

Win32 API编程——前言

一丶什么是Win32 API? 简单来说,就是微软为了保护操作系统的安全稳定,不允许运行在用户层的进程随意操控系统内核,而是必须按照一定方式.就是说我们用户层要与系统内核层交互(比如对内存.进程操作),只能通过调用Windows内核层提供的接口函数,也就是Win32API来操控.这些API以DLL(动态链接库)的形式保存(一般在SYSTEM32文件夹中,你可以发现大量的DLL),我们最常用的是kernel32.dll.user32.dll和gdi32.dll. 所有基于NT内核(包括XP到Win

深入浅出VC++串口编程之基于Win32 API

1.API描述 在WIN32 API中,串口使用文件方式进行访问,其操作的API基本上与文件操作的API一致. 打开串口 Win32 中用于打开串口的API 函数为CreateFile,其原型为: HANDLE CreateFile ( LPCTSTR lpFileName, //将要打开的串口逻辑名,如COM1 或COM2 DWORD dwAccess, //指定串口访问的类型,可以是读取.写入或两者并列 DWORD dwShareMode, //指定共享属性,由于串口不能共享,该参数必须置为

C# win32 API编程

原文链接:http://blog.sina.com.cn/s/blog_873a233e0100vrxw.html C# 用户经常提出两个问题:“我为什么要另外编写代码来使用内置于 Windows 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?”当框架小组构建他们的 .NET 部分时,他们评估了为使 .NET 程序员可以使用 Win32 而需要完成的工作,结果发现 Win32 API 集非常庞大.他们没有足够的资源为所有 Win32 API 编写托管接口.加以测试并编写文档,因此只

使用win32 API 实现串行通信 (一)

本文基于wince平台,使用win32 API实现串行通信 1.打开和关闭串行端口 串行端口设备使用CreateFile函数打开,所使用的名称要遵循特定的格式,即3个字符 COM后紧跟要打开的COM端口号,再加个冒号,冒号是Windows CE所必需的. 如,hser=CreateFile(TEXT(“COM1:”),GENERIC_READ|GENERIC_WRITE,0, NULL,OPEN_EXISTING,0,NULL),为以可读可写的方式打开COM1端口. 调用CloseHandle函

重温WIN32 API ------ 最简单的Windows窗口封装类

1 开发语言抉择 1.1 关于开发Win32 程序的语言选择 C还是C++ 在决定抛弃MFC,而使用纯Win32 API 开发Window桌面程序之后,还存在一个语言的选择,这就是是否使用C++.C++作为C的超集,能实现所有C能实现的功能.其实反之亦然,C本身也能完成C++超出的那部分功能,只是可能需要更多行的代码.就本人理解而言, 对于巨大型项目,还是使用纯C来架构更加稳妥: 对于中小型项目来说,C++可能更方便快捷.由于目前做的是中小项目,所以决定把C++作为主要开发语言. 1.2 关于C

Detours简介 (拦截x86机器上的任意的win32 API函数)

Detours 当然是用detours,微软明显高腾讯一筹,同上,至今没失败过.写这种HOOK一定要再写个测试程序,不要直接HOOK你的目的程序,例如QQ,因为这样不方面更灵活的测试.说明一下:Detours是微软开发的一个函数库(源代码可在http://research.microsoft.com/sn/detours 免费获得)用于修改运行中的程序在内存中的影像,从而即使没有源代码也能改变程序的行为.具体用途是:拦截WIN32 API调用,将其引导到自己的子程序,从而实现WIN32 API的

从.NET平台调用Win32 API

小序        Win32 API可以直接控制Microsoft Windows的核心,因为API(Application Programming Interface)本来就是微软留给我们直接控制Windows的接口.想玩儿吗?呵呵,太难了.        C#使用非常简单,写程序就像打拱猪,Sorry  -_-! ,搭积木一样简单.想玩儿吗?呵呵,没办法直接控制Windows的核心.        难道就没有两全其美的办法吗?当然不是!要不微软的产品早就没人买了.其实从C#(或者说.NET

Serial Port Programming using Win32 API(转载)

In this tutorial we will learn How to communicate with an external device like a microcontroller board or modem using the Serial port of a windows PC(Windows XP,7). The software is written using C language and communicates with the Serial Port using 

win32 api

Microsoft在StrSafe.h定义了新的安全字符串函数 为了防止缓冲区溢出,在将一个可写缓冲区作为参数传递时,必须传递它的大小,大小可以有_countof获得, _countof获取字符数, sizeof获取字节数 for example: int a[10]; // _countof(a) == 10 _CrtSetReportMode(_CRT_ASSERT, 0); // in head of program 可以禁止C run time可能触发的debug assertion f